Hadoop:The Definitive Guide 谁说大象不能跳舞?! 第3版 挑战互联网规模的数据存储与分析! 修订版 Hadoop 权威指南 Tom White著 ladoop之父Doug Cutting序 华东师范大学数据科学与工程学院译 O'REILLY 清华大学出版社
O'Reilly Media,lnc.介绍 O'Reilly Media通过图书、杂志、在线服务、调查研究和会议等方式传播 创新知识。自1978年开始,O'Reilly一直都是前沿发展的见证者和推动 者。超级极客们正在开创着未来,而我们关注真正重要的技术趋势一通过 放大那些“细微的信号”来刺激社会对新科技的应用。作为技术社区中活 跃的参与者,O'Reilly的发展充满了对创新的倡导、创造和发扬光大。 O'Reilly为软件开发人员带来革命性的“动物书”;创建第一个商业网站 (GNN):组织了影响深远的开放源代码峰会,以至于开源软件运动以此命 名;创立了Make杂志,从而成为DIY革命的主要先锋,公司一如既往地 通过多种形式缔结信息与人的纽带。O'Reilly的会议和峰会集聚了众多超 级极客和高瞻远瞩的商业领袖,共同描绘出开创新产业的革命性思想。作 为技术人士获取信息的选择,O'Reilly现在还将先锋专家的知识传递给普 通的计算机用户。无论是通过书籍出版,还是在线服务或者面授课程,每 一项O'Reilly的产品都反映了公司不可动摇的理念一一信息是激发创新的 力量。 业界评论 “O'Reilly Radar博客有口皆碑。” -Wired “O'Reilly凭借一系列(真希望当初我也想到了)非凡想法建立了数百万美元 的业务。” Business 2.0 “O'Reilly Conference是聚集关键思想领袖的绝对典范.” -CRN “一本O'Reilly的书就代表一个有用、有前途、需要学习的主题。” -Irish Times “Tim是位特立独行的商人,他不光放眼于最长远、最广阔的视野并且切 实地按照Yogi Berra的建议去做了:‘如果你在路上遇到岔路口,走小路 (岔路)。’回顾过去Tim似乎每一次都选择了小路,而且有几次都是一闪 即瞬的机会,尽管大路也不错。” -Linux Journal
前言 数学科普作家马丁·加德纳Martin Gardner)曾在一次采访中谈到: “在我的世界里,只有微积分。这是我的专栏取得成功奥秘。我花了很多 时间才明白如何以大多数读者都能明白的方式将自己所知道的东西娓娓 道来。”回 这也是我对Hadoop的诸多感受。它的内部工作机制非常复杂,是一个集分 布式系统理论、实际工程和常识于一体的系统。而且,对门外汉而言, Hadoop更像是“天外来客”。 但Hadoop其实并没有那么让人费解,抽丝剥茧,我们来看它的“庐山真面 目”。它提供的用于构建分布式系统的每个工具(用于数据存储、数据分析 和协调处理)都非常简单。如果说这些工具有一个共同的主题,那就是它们 更抽象,对偶尔有大量数据需要存储的程序员、有大量数据需要分析的程 序员、有大量计算机需要管理的程序员同时却没有足够的时间、技能或者 不想成为分布式系统专家的程序员提供一套组件,使其能够利用Hadoop来 构建基础平台。 这样一个简单、通用的特性集,促使我在开始使用Hadoop时便明显感觉到 Hadoop真的值得推广。但最开始的时候(2006年初),安装、配置和Hadoop 应用编程是一门高深的艺术。之后,情况确实有所改善:文档增多了;示 ①1957年,加德纳在《科学美国人》杂志开设了“数学游戏”专栏,当然也介绍最新 的数学研究成果。这个专栏深受读者欢迎,一直延续到了1981年,它成就了加德 纳在趣味数学这个领域的大师地位 ②作者是《卫报》记者兼科学专栏作家Alex Bellos。此文发表于2008年5月31日,网 http://www.theguardian.com/science/2008/may/31/maths.science
例增多了,碰到问题时,可以向大量活跃的邮件列表发邮件求助。对新手 而言,最大的障碍是理解Hadoop有哪些能耐,它擅长什么,它如何使用。 这些问题使我萌发了写作本书的动机。 Apache Hadoop社区的发展来之不易。在过去的三年多时间里,Hadoop项 目开花结果并孵化出大约半打子项目。到目前,它在性能、可靠性、可扩 展性和可管理性方面都实现了巨大的飞跃。但是,为了让更多人采用 Hadoop,我认为我们要让Hadoop更好用。这需要创建更多新的工具,集成 更多的系统,创建新的、改进的API。我希望我自己能够参与,同时也希 望本书能够鼓励并吸引其他人也参与Hadoop项目。 说明 在文中讨论特定的Java类时,我常常会忽略包的名称以免啰嗦杂乱。如果 想知道一个类在哪个包内,要想查阅相关子项目的Hadoop Java API文档, 可以访问Apache Hadoop主页(http:/hadoop.Apache.org)。如果使用IDE编 程,可以充分利用其自动补全机制(也称“自动完成机制”)。 与此类似,尽管偏离传统的编码规范,但如果要导入同一个包的多个类, 程序可以使用星号通配符来节省空间(例如import org.apache.hadoop.io.*)。 本书中的示例代码可以从本书网站下载,网址为http:www.hadoopbook.com/。 可以根据网页上的指示获取本书示例所用的数据集以及运行本书示例的详 细说明、更新链接、额外的资源与我的博客。 本书特色内容 本书是这样组织的。第1章强调为什么需要Hadoop,然后概述项目发展 历史。第2章简要介绍MapReduce。第3章深入剖析Hadoop文件系统,特 别是HDFS。第4章包含Hadoop的基本I/O操作:数据完整性、压缩、序 列化及基于文件的数据结构。 接下来的第5章~第8章深入剖析MapReduce。第5章全景呈现了 MapReduce应用开发所涉及的具体步骤。第6章从用户的角度来看如何在 Hadoop中实现MapReduce。第7章主要包含MapReduce编程模型和 MapReduce可以使用的各种数据格式。第8章是MapReduce高级主题,包 括排序和数据连接。 X 前言
第9章和第10章主要面向Hadoop管理员,主要描述如何在Hadoop集群上 设置和维护运行HDFS和MapReduce。 第11章~第15章专门介绍在Hadoop上构建的特定项目或相关内容。第11 章和第I2章描述的是Pig和Hive,这两个分析平台构建在HDFS和 MapReduce之上,而第I3章、第14章和第15章分别介绍HBase、 ZooKeeper和Sqoop。 最后,第I6章收集了Apache Hadoop社区成员提供的一系列实例。 第2版新增内容 《Hadoop权威指南》(第2版)新增两章内容(第12章和第15章),分别介绍 Hive和Sqoop。第4章新增一个小节专门介绍Avro,第9章概述Hadoop 新增的安全特性,第I6章新增一个新的实例分析,介绍如何使用Hadoop 来分析海量网络图。 第2版继续介绍Apache Hadoop0.20系列发行版本,因为这是本书写作期 间最新、最稳定的发行版本。本书中有时会提到一些最新发行版本中的一 些新特性,但在首次介绍这些特性时,我会说明具体的Hadoop版本号。 第3版新增内容 第3版概述了Apache Hadoop 1.x(以前的0.20)系列发行版本,以及新近的 0.22和2x(以前的023)系列。除了少部分(文中有说明)例外,本书包含的 所有范例都在这些版本上运行过。第1章的1.6节将进一步描述每一个发行 版本的特性。 第3版的大部分范例代码都使用了新的MapReduce API。因为旧的API仍 然应用很广,所以文中在讨论新的API时我们还会继续讨论它,使用旧 API的对应范例代码可以到本书的配套网站下载。 Hadoop2.0最主要的变化是新增的MapReduce运行时MapReduce2,它建 立在一个新的分布式资源管理系统之上,该系统称为YARN。针对建立在 YARN之上的MapReduce,第3版增加了相关的介绍,第6章介绍它的工 作机制,第9章介绍如何运行它。 第3版还增加了更多对MapReduce的介绍,包括丰富的开发实践,比如用 前言 Xi