本书首先介绍了Hadoop的背景知识,包括Hadoop 2和YARN的工作原理和对Hadoop 1的改进,然后将数据湖与传统存储比较。第2章到第8章,分别介绍了Hadoop 2和核心服务的安装方法、Hadoop分布式文件系统、MapReduce和YARN编程,以及利用Apache Pig等Hadoop工具简化编程。最后两章讲述了利用Apache Ambari等工具管理Hadoop和基本的管理程序。附录包括Hadoop 2故障诊断和排除的基础知识、Apache Hue和Apache Spark安装等。
本书通俗易懂,具有大量操作实例,易于上手,适合Hadoop用户、管理员、开发和运维人员、程序员、架构师、分析师和数据科学工作者阅读。
迅速领悟数据湖概念精髓 直接上手Hadoop 2|YARN全生态实践
序言
Apache Hadoop 2引进了加工和处理数据的新方法,这些方法都超越了原始Hadoop实现的基本MapReduce范式。本书详尽地介绍了Hadoop 2中的概念和工具,无论是Hadoop新人或曾使用过早期版本的经验丰富的专业人员,都能从中获益。
在过去的几年中,在原Hadoop项目的保护伞下已经诞生了许多项目,这些项目在与原始Hadoop项目保持良好集成的同时,还使得存储、处理和收集大量数据更为便利。本书介绍了许多在此更大的Hadoop生态系统中的项目,向读者提供高层次基础知识,引导他们使用满足自己需求的工具来开展工作。
本书很多内容是Doug Eadline根据他广受欢迎的Hadoop Fundamentals Live Lessons视频系列改编而成的。然而,他的资历不仅于此。Doug与人合著了Apache Hadoop? YARN: Moving beyond MapReduce and Batch Processing with Apache Hadoop?2一书,对于介绍Hadoop 2的覆盖范围和它给用户带来的新功能,几乎无人比他更有资格。
我激动地看到Doug用他涵盖Hadoop及其相关项目的书为本丛书带来巨大的知识财富。对于希望了解更多有关Hadoop可以帮助他们解决问题的新人,以及希望了解升级到最新版本的好处的现有用户,本书都将是很好的资料。
—— Paul Dix,丛书编辑
前言
Apache Hadoop 2 已改变了数据分析的格局。Hadoop 2生态系统已经超越了单一的MapReduce 数据处理方法论和框架。也就是说,Hadoop2为Hadoop1的方法论提供几乎任何类型的数据处理,并且与第1版的脆弱 MapReduce范式完全向后兼容。
这种变化已经对数据处理和数据分析的许多领域产生了显著的影响。联机数据的数量增长要求有可扩展的数据分析新方法。正如第1章将要讨论的,Hadoop数据湖的概念体现了从许多既定的方法向联机数据的使用和储存的范式转变。Hadoop2安装的是一个可扩展的平台,它可以成长并同时适应数据量的增加及新处理模型的使用。
因此,“Hadoop方法”非常重要,并且不应该被作为一个简单的只有“一技之长”的大数据应用程序。此外,Hadoop开放源代码的性质和很多周边的生态系统为它的采用提供了一个重要激励。感谢Apache软件基金会(ASF),Hadoop一直是一个开放源码项目,其内部运作机制是对所有人都开放的。开放模型使得供应商和用户拥有一个共同的目标,而不存在可能的封锁或法律障碍致使像Hadoop那样一个庞大而重要的项目分裂。本书中使用的所有软件都是开源的,并且是免费提供的。指向这些软件的链接位于每一章末尾和附录C中。
本书重点
正如书名所示,本书是写给大忙人的Hadoop 2。根据设计,大多数主题都是概述性的,它们用一个示例来说明,并保留一些未尽事宜。事实上,这里的许多工具和主题都在别处被作为完全独立的书来介绍。因此,编写这种快速入门指南的最大障碍是,在决定不包括哪些内容的同时,又让读者领会到哪些内容是重要的。
为此,所有主题都按照我称之为hello-world.c经验的方式来设计。那就是,首先提供工具或服务的作用的一些背景知识,然后提供可以让读者快速入门的从头到尾的示例,最后提供可以找到额外的信息和更多细节的资源。这种方法允许读者对简单的工作示例进行更改,并实现变化,使之变成能解决读者特定问题的某种东西。对于我们大多数人来说,我们的编程经验都是从对工作示例进行增量更改开始的——所以本书中的方法应该是大家所熟悉的。
本书的受众
本书是为那些想要了解Hadoop 2,但又不想陷入技术细节的读者准备的。新用户、系统管理员和开发运维人员都应该能够通过浏览本书快速获得很多重要的Hadoop主题和工具。尤其是,缺乏Hadoop经验的读者应该发现本书非常有用,即使他们没有Java编程经验也没关系。读者最好具备使用Linux命令行工具的经验,因为所有示例都涉及用命令行与Hadoop交互。
当前正在使用Hadoop1的用户和管理员也能从本书获得有价值的知识。Hadoop2的变化是非常重大的,同时,本书对YARN和MapReduce 框架的一些变化的讨论也是非常重要的。
本书的结构
本书的基本结构改编自Addison-Wesley出版的我的视频教程——Hadoop Fundamentals Live Lessons(2e)和Apache Hadoop YARN Fundamentals Live Lessons,书中几乎所有的示例都能在视频中找到同样的。有些读者可能会发现,把观看视频教程与阅读本书结合起来效果更好,因为我仔细地逐句执行了所有的示例。
本书从Apache Hadoop ? YARN: Moving beyond MapReduce and Batch Processing with Apache Hadoop? 2一书中借用了几个小部分,那是我与人合著的。如果读者想要研究更多的YARN应用开发细节,可以考虑阅读那本书并观看其配套视频。
本书大部分内容使用了适用于Hadoop的Hortonworks数据平台(HDP)。HDP是由Hortonworks提供的完全开源的Hadoop发布版本。虽然也可以下载并安装核心Hadoop系统和工具(第2章中将讨论),但使用集成的发布版本减少了“自己动手”的方法可能产生的很多问题。此外,Apache Ambari是不容错过的出色安装和管理图形化的工具,并且它支持Hortonworks HDP软件包。本书使用HDP 2.2和Ambari 1.7描述。就在我写这篇序言时,Hortonworks刚刚宣布发布配备Apache Ambari 2.0的HDP 2.3版。(站在Hadoop 世界的曲线前沿要做那么多工作!)幸运的是,它的基本原理保持不变,所有示例仍然都是切题的。
本书中各章的安排,便于为读者提供灵活的介绍。在附录B“开始流程图和故障排除指南”中,有两条路径可以遵循:阅读第1章、第3章和第5章,然后开始运行示例,或直接跳到第4章运行其中的示例。如果你没有Hadoop环境,第2章提供在各种系统,包括笔记本电脑或台式计算机、集群,甚至在云上安装Hadoop的方法。可能在运行完示例之后,你会再回过头来阅读背景知识的章节。
第1章提供有关Hadoop技术和历史的基本背景知识。介绍Hadoop数据湖并概述Hadoop1中的MapReduce过程。介绍了在Hadoop 2中的巨大变化,并把YARN资源管理器作为几乎任何计算模型的前进方向来介绍。最后,简要概述了组成Hadoop生态系统的很多软件项目。这一章为本书余下的部分提供了基础。
如果你需要访问一个Hadoop系统,第2章提供了一系列的安装攻略。它也解释了核心Hadoop服务及其配置方法。本章对选择硬件和软件环境提供了常规建议,但它的重点是提供一个平台来了解Hadoop。幸运的是,有两种方法可以做到这一点,不需要购买或租用任何硬件。Hortonworks Hadoop沙箱提供了一个可以在几乎任何平台上运行的Linux虚拟机。沙箱是完整的Hadoop安装,并提供了用以研究Hadoop的环境。作为沙箱的替代方法,在一台Linux机器上的Hadoop安装也能提供一个学习平台并提供一些Hadoop核心组件的解释。第2章还涉及集群方式安装,它采用Apache Ambari用于本地集群安装,或使用Apache Whirr进行云部署。
所有的Hadoop应用程序都使用Hadoop分布式文件系统(HDFS)。第3章介绍了一些基本的HDFS功能并提供了有关如何浏览和使用文件系统的快速提示。本章也有一些 HDFS编程的示例。它提供重要的背景知识,这些应该在尝试后面的章节中的示例之前查阅。
第4章通过逐步讲解提供了Hadoop实例和基准测试的展示说明。作为一种观察应用进展的方式,对Hadoop资源管理器的Web图形用户界面进行了介绍。本章最后总结了控制Hadoop MapReduce作业的一些技巧。学习这一章可以了解Hadoop应用程序运行和操作的方式。
虽然MapReduce编程模型在本质上是简单的,但它在集群上运行会出现一些混乱。第5章使用简单的示例提供了MapReduce编程模型的基本简介。本章用一个简化的并行Hadoop MapReduce过程演练来总结。本章还将帮助你了解基本的Hadoop MapReduce术语。
如果你对Hadoop底层编程感兴趣,第6章介绍了Hadoop MapReduce编程。它涵盖了几种基本方法,包括Java、Python流接口和C++管道接口。它还用一个简短的示例说明了如何查看应用程序日志。本章对于使用Hadoop不是必需的。事实上,许多Hadoop用户都是从第7章讨论的高级别工具开始起步的。
虽然许多应用程序已被编写为在原生的Hadoop Java接口上运行,但还有种类繁多的工具都提供高层次的编程和数据移动方法。第7章通过实例介绍了必需的Hadoop工具,包括Apache Pig(脚本语言)、Apache Hive(类似SQL的语言)、Apache Sqoop(RDMS 导入/导出)和Apache Flume(串行数据导入)。还提供一个示例来演示如何使用Oozie工作流管理器。本章最后以Apache HBase(BigTable的数据库)的示例结束。
如果你有兴趣学习更多关于Hadoop YARN应用程序的内容,第8章介绍了Hadoop的非MapReduce应用程序。YARN分布式Shell,给出一个简单的示例,进行包括YARN应用程序如何在Hadoop2下工作的讨论。本章还提供了最新的非MapReduce YARN应用程序的描述。
如果你用第2章的Apache Ambari安装Hadoop,第9章介绍了其功能并提供了一些示例来演示如何在真正的Hadoop集群上使用Ambari。本章也给出了重新启动Hadoop服务和更改全系统Hadoop属性的Ambari功能和流程。本章所述的基本步骤将在第10章中用来对集群做出管理性更改。
第10章提供了一些基本的Hadoop管理性程序。管理员可在本章找到基本流程和建议信息,其他用户也可以从本章学到如何针对其工作负载来配置HDFS、YARN和容量调度程序。
有关本书配套网页的信息、入门流程图和常规的Hadoop故障排除指南,请参考附录。附录还包括资料总结页和安装Apache Hue(一种高级别Hadoop图形用户界面)和Apache Spark(一种流行的非MapReduce编程模型)的步骤。
最后,Hadoop生态系统继续迅速增长。本书有意不包括许多现有的Hadoop应用程序和工具,因为若将其列入,本书将变成更冗长和更拖沓的Hadoop 2简介。并且,还有更多的工具和应用程序正在形成!签于Hadoop生态系统的动态性,本书介绍Apache Hadoop 2的宗旨是为了指明方向和一些重要的关键点,以便帮助读者研究Hadoop 2数据湖。
本书约定
代码和文件参考都采用等宽字体显示。因为太长而无法在一行中容纳的代码输入行,在本书中都用续行符号:?表示。在页边界换行的长输出行则没有此符号。
配套代码
请参阅附录A“本书网页和代码下载”,获得本书中使用的所有代码的地址。
关于作者
Douglas Eadline,博士,作为一个Linux集群HPC革命的践行者和记录者开始他的职业生涯,而现在他在记录大数据分析。从开始第一份操作文档以来,道格写了数百篇文章、白皮书,以及说明文档,涵盖高性能计算(HPC)的几乎所有方面。在2005年启动和编辑颇受欢迎的ClusterMonkey.net网站之前,他担任ClusterWorld杂志的主编,并曾是Linux杂志的HPC资深编辑。
他具有多方面的HPC实际操作经验,包括硬件和软件设计、基准测试、存储、GPU、云计算和并行计算。
目前,他是一名作家和 HPC 行业顾问,并且是Limulus个人集群项目(http://limulus.basement-supercomputing.com)的领导。他是Addison-Wesley出版的Hadoop Fundamentals LiveLessons和Apache Hadoop YARN Fundamentals LiveLessons教学视频的作者和Apache Hadoop?YARN: Moving beyond MapReduce and Batch Processing with Apache Hadoop?2一书的合著者。