Hadoop技术内幕:深入解析YARN架构设计与实现原理
上QQ阅读APP看书,第一时间看更新

前言

为什么要写这本书

在互联网巨头的带动下,开源软件Hadoop的应用变得越来越广泛,目前互联网、金融、银行、零售等行业均在使用或者尝试使用Hadoop。IDC对未来几年中国的预测中就专门提到了大数据,其认为未来几年,会有越来越多的企业级用户试水大数据平台和应用,而这之中,Hadoop将成为最耀眼的“明星”。

尽管Hadoop整个生态系统是开源的,但由于它包含的软件种类过多,且版本升级过快,大部分公司,尤其是一些中小型公司,难以在有限的时间内快速掌握Hadoop蕴含的价值。此外,Hadoop自身版本的多样化也给很多研发人员带来了很大的学习负担,尽管当前市面上已有很多参考书籍,但遗憾的是,能够深入剖析Hadoop内部实现细节的书籍少之又少,而本书则尝试弥补这一缺憾。本书是笔者继《Hadoop技术内幕:深入解析MapReduce架构设计与实现原理》之后的又一本剖析Hadoop内幕的书籍。

本书介绍的YARN(Yet Another Resource Negotiator)系统是Hadoop 2.0新增加的一个子项目(与Common、MapReduce和HDFS三个分支并列),它的引入使得分布式计算系统进入平台化时代,即各种计算框架可以运行在一个集群中,由资源管理系统进行统一管理和调度,它们共享整个集群中的资源进而提高资源利用率。

本书以Hadoop 2.0为基础,从基本概念、程序设计和内部实现等方面深入剖析了Hadoop YARN。本书重点分析了YARN的核心实现以及运行在YARN上的计算框架,其中,核心实现包括基础库、编程接口、ResourceManager实现、资源调度器实现、NodeManager实现等,而计算框架则包括离线计算框架MapReduce、DAG计算框架Tez、实时计算框架Storm和内存计算框架Spark等。书中不仅详细介绍了YARN各个组件和计算框架的内部实现原理,而且结合源代码进行了深入剖析,使读者可以快速、全面地学习Hadoop YARN设计原理和实现细节。

读者对象

(1)Hadoop二次开发人员

由于在扩展性、容错性和稳定性等方面的诸多优点,Hadoop已被越来越多公司采用,而为了减少开发成本,大部分公司在Hadoop基础上进行二次开发,以打造属于公司内部的Hadoop平台。对于这部分Hadoop二次开发人员,深入而又全面地了解Hadoop的设计与实现细节是修改Hadoop内核的前提,而本书可帮助这部分读者快速而又全面地了解Hadoop实现细节。

(2)Hadoop应用开发人员

如果要利用Hadoop进行高级应用开发,仅掌握Hadoop基本使用方法是远远不够的,必须对Hadoop框架的设计原理、架构和运作机制有一定的了解。对这部分读者而言,本书将带领他们全面了解Hadoop的设计和实现,加深对Hadoop框架的理解,提高开发水平,从而编写出更加高效的应用程序。

(3)Hadoop运维工程师

对于一名合格的Hadoop运维工程师而言,适当地了解Hadoop框架的设计原理、架构和运作机制是十分有帮助的,这不仅可以更快地排除各种可能的Hadoop故障,也能够让Hadoop运维人员与研发人员进行更有效地沟通。通过阅读本书,Hadoop运维人员可以了解到很多从其他书中无法获取的Hadoop实现细节。

(4)开源软件爱好者

Hadoop是开源软件中的佼佼者,它在实现的过程中吸收了很多开源领域的优秀思想,同时也有很多值得学习的创新。尤为值得一提的是,本书分析Hadoop设计和实现的方式也许值得所有开源软件爱好者进行学习和借鉴。通过阅读本书,这部分读者不仅能领略到开源软件的优秀思想,还可以掌握分析开源软件源代码的方法和技巧,从而进一步提高使用开源软件的效率和质量。

如何阅读本书

本书分为四大部分(不包括附录):

第一部分为基础篇(第1~2章),简单地介绍Hadoop YARN的环境搭建和基本设计架构,帮助读者了解一些基础背景知识。

第二部分为YARN核心设计篇(第3~7章),着重讲解YARN基本库、应用程序设计方法和运行时环境的实现,包括ResourceManager、NodeManager和资源调度器等关键组件的内部实现细节。

第三部分为计算框架篇(第8~10章),主要讲解当前比较流行的可运行在YARN上的计算框架,包括离线计算框架MapReduce、DAG计算框架Tez、实时计算框架Storm和内存计算框架Spark。

第四部分为高级篇(第11~13章),主要介绍了几个类似于Hadoop YARN的开源资源管理系统,包括Corona、Mesos等,并总结了资源管理系统的特点及发展趋势。

另外本书最后还添加了几个附录:附录A为YARN安装指南;附录B介绍了常见的YARN配置参数;附录C介绍了常用的Hadoop Shell命令;附录D为本书的所有参考资料,包括参考论文、Hadoop jira和网络资源等。

Hadoop YARN是Hadoop 2.0新引入的系统,对于大部分读者而言,该系统存在很多疑惑与未知之处,而本书正是尝试全方位剖析该系统。为了能够系统化地学习YARN,推荐读者从第1章的基础理论知识开始学习。

勘误和支持

由于笔者的水平有限,加之编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。为此,笔者特意创建一个在线支持与应急方案的站点http://hadoop123.com。你可以将书中的错误发布在Bug勘误表页面中,同时如果你遇到任何问题,也可以访问Q&A页面,我将尽量在线上为读者提供最满意的解答。如果你有更多的宝贵意见,也欢迎发送邮件至邮箱dongxicheng@yahoo.com,期待能够得到你们的真挚反馈。

致谢

感谢我的导师廖华明副研究员,是她引我进入Hadoop世界。

感谢腾讯的蔡斌老师,正是由于他的推荐,才使得两本Hadoop书的出版成为可能。

感谢机械工业出版社华章公司的杨福川老师和孙海亮老师在这一年多的时间中始终支持我的写作,他们的鼓励和帮助使我顺利完成了本书。

感谢何鹏、姜冰、郑伟伟、战科宇、周礼、刘晏辰、王群等人给我提供的各种帮助。

最后感谢我的父母,感谢他们的养育之恩,感谢兄长的鼓励和支持,感谢他们时时刻刻给我信心和力量!感谢我的女朋友颛悦对我生活的细心照料与琐事上的宽容。

谨以此书献给我最亲爱的家人,以及众多热爱Hadoop的朋友们!

董西成

于北京