图书前言

                                                                                                    

前    言

马丁·加德纳(数学家和科学作家),曾经在一次采访中说道:

“没有微积分,我的生命就失去了意义。这是我成功的秘诀。我花了如此长的时间了解我在写什么,所以我知道如何写作才能让大多数读者明白我的意思。”

在许多方面,这就是我对Hadoop的感觉。它的内部工作机制是复杂的、相互依赖的,因为它运行在分布式系统的理论、实用技术和技术常识这些复杂的基础之上。对于门外汉来说,Hadoop就像是异形一样难以理解。

但事实上并不是这样的。剥离其核心,Hadoop提供给组件分布式系统的工具——如数据存储、数据分析和协调——是十分简单的。如果有一个共同的主题,那么它将与提高抽象水平相关的——为程序员创建用于处理这些事情的基础架构,这些程序员中,或者正好有大量数据需要存储,或者有大量数据需要分析,或者有大量机器需要协调,或者没有时间、技能或兴趣成为分布式系统专家。

借由这样一个简单的、普遍适用的功能组合,在开始使用这个理当被广泛普及的Hadoop的时候,我的想法逐渐清晰起来。然而,在当时(2006年初),设置、配置和编写程序来使用Hadoop称得上是一门艺术。幸运的是,此后有了明显的进步,因为有更多的文件,更多的例子,一旦有疑问,还有那么多邮件地址可以发过去帮助你解惑。但对大多数新手来说,最大的障碍是理解这项技术能做什么,它的长处何在,如何使用它。这就是我写这本书的原因。

Apache Hadoop社区已经走过了漫长的道路。在三年的过程中,Hadoop项目已经拓展并分成许多子项目。在这个时候,软件已在性能、可靠性、可扩展性和可管理性上有了很大的飞跃。然而为了获得更为广泛地应用,我相信我们需要让Hadoop变得更容易使用。这将涉及三方面的工作:编写更多的工具;与更多的系统集成;编写新的改进后的API。我期待成为完成这项工作的一员,并且我希望这本书也能鼓励和帮助其他人完成这些事情。

写作风格的说明

在文中特定Java类的讨论中,我往往会省略其包名以减少混乱。如果需要知道一个类是放在哪个包里的,可以轻松地从Hadoop的Java API文档中查找到有关的子项目,这些条目与Apache Hadoop的主页http://hadoop.apache.org/链接。或者,如果使用的是IDE,它可以帮助使用其自动完成机制。

同样,虽然它偏离一贯的教学规则,但是从相同的使用星号通配符的包中导入不同的类还是能节省空间的(例如:import org.apache.hadoop.io .*)。

本书的示例程序可以从本书相关网站下载,网址为http://www.hadoopbook.com/。还可以在此找到获得本书所用数据库的指令以及更多运行本书程序的注解、更新链接、其他资源以及我的blog 。

本书内容

本书其余部分内容如下。第2章介绍MapReduce。第3章着眼于Hadoop的文件系统,特别深入地讲解HDFS。第4章涵盖Hadoop基础的I/O输入和输出,主题包括:数据的完整性、压缩、序列化和基于文件的数据结构。

接下来的4章更深入地涉及MapReduce。第5章讲述全程开发一个MapReduce应用程序的实际步骤。第6章着眼于从用户的观点来看MapReduce如何在Hadoop上实现。第7章涉及MapReduce编程模型及MapReduce可以处理的各种数据格式。第8章的主题为如何改进MapReduce,包括排序和联接(JOIN)数据。

第9章和第10章是写给Hadoop管理员看的,阐述如何建立和维持在Hadoop集群上运行HDFS和MapReduce。 

第11章、第12章和第13章分别提供了Pig,HBase和ZooKeeper应用示例。 

最后,第14章提供Apahe Hadoop社区成员贡献的综合案例研究。

本书所用约定

本书采用如下印刷约定。

斜体

表示新名词,URL,电子邮件地址,文件名,文件扩展名,路径名,目录和Unix实用程序。

等宽字体

表示命令、选项、开关、变量、属性、键值、函数、类型、类、命名空间、方法、模块、参数、参数、值、对象、事件、事件句柄、XML标签、HTML标签、文件内容或者命令输出。

等宽粗体

显示需要用户逐字输入的命令或者其他文字。也用于代码中的强调。

等宽斜体

显示应该被用户输入值代替的文字。

[…]

表示引用参考文献。

注意: 该图标表示一个技巧,建议或一般注解。

     

警告:该图标表示警告或注意事项。

示例代码的使用

本书的目的是帮助你完成任务。一般来说,可以使用在本书的程序和文档中的代码。不需要联络我们即可获得许可,除非是要复制代码的重要部分。例如,写一个使用本书几大块代码的程序并不需要经过我们许可。销售或分发含有来自O’Reilly书籍中的例子的光盘需要许可。回答问题援引本书和引用示例代码也不需要许可。把本书中的大量示例代码纳入到你的产品文档需要经过我们许可。

我们对提供版权说明的说法表示赞赏,但不强求。版权说明通常包括书名、作者、出版商和ISBN。例如:“Hadoop:The Definltive Guide,Tom著。版权所有 2009 Tom White,978-0-596-52197-4。“ 

如果觉得自己使用示例代码使用上或以上的要求有失公允,请随时联系我们,电子邮件地址为permissions@oreilly.com。

Safari图书在线

看到Safari图书在线标识出现在你最喜欢的技术书籍封面上时,便意味着此书(英文版)是可以通过O’Reilly在线书店购买。

Safari提供了一个比电子书更好的解决方案。它提供一个虚拟的图书馆,让你轻松地搜索数千本顶尖的科技图书,剪切和粘贴代码示例,下载章节,并按自己的需要最准确、最及时的信息时,能够寻找到快速解答。免费试用请访问http://my.safaribooksonline.com。

联系我们

对于本书,如果有任何意见或疑问,请按照以下地址联系本书出版商:

美国:

O’Reilly Media, Inc.

1005 Gravenstein Highway North

Sebastopol, CA 95472

中国:

北京市西城区西直门南大街2号成铭大厦C座807室(100035)

奥莱利技术咨询(北京)有限公司

本书也有相关的网页,我们在上面列出了勘误表、范例以及其他一些信息。你可以访问:

http://www.oreilly.com/catalog/9780596521974(英文版)

http://www.oreilly.com.cn/book.php?bn=978-7-302-22424-2(中文版)

对本书做出评论或者询问技术问题,请发送E-mail至:

bookquestions@oreilly.com

希望获得关于本书、会议、资源中心和O’Reilly网络的更多信息,请访问:

http://www.oreilly.com

http://www.oreilly.com.cn

鸣谢

在写这本书的时候,我间接或直接地请教了很多人。我要感谢Hadoop社区,我在此学到了很多。我特别要感谢撰写HBase相关内容的Michael Stack 和Jonathan Gray。同时要感谢Adrian Woddhead,Marc de Palol,Joydeep Sen Sarma,Ashish Thusoo,Andrzei Bialecki,Stu Hood,Chris K Wensel,和Owen O’Malley为第14章案例研究所做出的贡献。我非常感谢Mattress Massie和ToddlerLipcon 撰写了附录B。

我还要感谢那些为修改草稿提出许多有益建议的人,他们是:Raghu Angadi,Matt Biddulph,Christophe Bisciglia,Ryan Cox,Devaraj Das,Alex Dorman,Chris Douglas, Alan Gates,Lars George,Patrick Hunt, Aaron Kimball,Peter Krey,Hairong Kuang, Simon Maxen,Olga Natkovich,Benjamin Reed, Konstantin Shvachko,Allen Wittenauer, Matei Zaharia和Philip Zeyliger。Ajay Anand让审阅过程变得非常顺利。Philip(“flip”)Kromer曾帮助我收集和处理本书中NCDC气象数据集相关例子。特别感谢Owen O’Malley和Arun C Murthy为我解释MapReduce shuffle的工作原理。对于仍然存在的任何错误,如蒙指正,我将感激不尽。

特别感谢Doug Cutting对我的鼓励、支持和友谊,以及对本书所做的贡献。

同时感谢在我写书过程中曾与我交流或发邮件进行讨论的人。 

在写作本书的过程中,我加入了Cloudera,在这里我要感谢我的同事对我的大力支持,让我能够有充足的时间迅速完成本书。 

我还要感谢编辑Mike Loukides及其O’Reilly的同事对本书的帮助。Mike一直都在回答我的问题,阅读我的初稿,并帮助我掌握进度。 

最后,写作本书工作量很大,没有家庭持之以恒的支持,我不可能完成写作。我的妻子Eliane,不仅操持家务,还帮助我审查、编辑和校对本书的案例。我的女儿,Emilia和Lottie,一直都十分体谅我,我期待着能够花更多时间陪伴她们。

xx

     Hadoop权威指南(中文版)

xvii

  前    言