首页>参考读物>计算机科学与技术>软件与程序设计

Hadoop技术内幕:深入解析Hadoop Common和HDFS架构设计与实现原理
作者 : 蔡斌 陈湘萍 著
出版日期 : 2013-04-28
ISBN : 978-7-111-41766-8
定价 : 89.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 524
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

“Hadoop技术内幕”共两册,分别从源代码的角度对“Common+HDFS”和MapReduce的架构设计和实现原理进行了极为详细的分析。本书由腾讯数据平台的资深Hadoop专家、X-RIME的作者亲自执笔,对Common和HDFS的源代码进行了分析,旨在为Hadoop的优化、定制和扩展提供原理性的指导。除此之外,本书还从源代码实现中对分布式技术的精髓、分布式系统设计的优秀思想和方法,以及Java语言的编码技巧、编程规范和对设计模式的精妙运用进行了总结和分析,对提高读者的分布式技术能力和Java编程能力都非常有帮助。本书适合Hadoop的二次开发人员、应用开发工程师、运维工程师阅读。
全书9章,共分为三个部分:第一部分(第1章)主要介绍了Hadoop源代码的获取和源代码阅读环境的搭建;第二部分(第2~5章)对Hadoop公共工具Common的架构设计和实现原理进行了深入分析,包含Hadoop的配置信息处理、面向海量数据处理的序列化和压缩机制、Hadoop的远程过程调用,以及满足Hadoop上各类应用访问数据的Hadoop抽象文件系统和部分具体文件系统等内容;第三部分(第6~9章)对Hadoop的分布式文件系统HDFS的架构设计和实现原理进行了详细的分析,这部分内容采用了总分总的结构,第6章对HDFS的各个实体和实体间接口进行了分析;第7章和第8章分别详细地研究了数据节点和名字节点的实现原理,并通过第9章对客户端的解析,回顾了HDFS各节点间的配合,完整地介绍了一个大规模数据存储系统的实现。

图书特色

经过几年的快速发展,Hadoop已经成为大数据时代存储和处理海量数据的事实标准,具有高可靠性、高扩展性、高效性和高容错性等许多优点,在学术界备受关注,在业界则更受欢迎。Hadoop的功能非常强大,与之相伴的是使用上的复杂性,如何才能更好地使用Hadoop,更好地对Hadoop进行性能优化、扩展和定制?阅读和研究它的源代码是一种不错的选择。“Hadoop技术内幕”这两本书根据读者的需求,对Common、HDFS和MapReduce等核心技术的架构设计和实现原理进行了深入且详细的分析,对于想了解Hadoop工作机制的读者来说,这两本书应该是十分难得的,强烈推荐。
—— EasyHadoop开源技术社区(www.easyhadoop.com) 致力于Hadoop的易用和普及

Hadoop是近两年来技术领域最热门的话题,从媒体界,到学术界,再到企业界,都给予了高度关注。在企业界,Hadoop的应用已经非常广泛,不仅在IT领域被广泛使用,而且在金融、电信、生物、医药、制造等传统领域也十分受欢迎,有海量数据需要处理的地方,就能用上Hadoop。尤其是在IT领域,从国外的Google、Yahoo、Microsoft、Oracle、Facebook,到国内的阿里巴巴、淘宝、腾讯、百度、新浪、搜狐,都在Hadoop的研发和应用上投入了大量的人力和资金,并获得了丰厚的收益。随着Hadoop越来越普及,用户遇到的问题也会越来越多,越来越复杂。要解决实际生产环境中可能遇到的复杂问题,掌握Hadoop本身的设计和实现原理是根本之道。“Hadoop技术内幕”这两本书就本着这个目标出发,从源代码的角度对Hadoop的工作机制进行了深入的分析,并对实践中可能会遇到的各种问题给出了解决方案。
—— 童小军 资深Hadoop技术专家、企业级大数据解决方案RedHadoop创始人
本书主要内容:
Hadoop的技术优势和整个生态系统;
Hadoop源代码的获取和阅读环境的搭建;
Hadoop配置信息的处理;
面向海量数据处理的序列化和压缩机制;
Hadoop的远程过程调用;
Hadoop抽象文件系统和部分具体文件系统;
HDFS的总体结构和主要流程;
数据节点、名字节点和HDFS客户端的实现。

“大数据”正改变着人们的生活、工作和思维方式,也给开发者带来了新的挑战和机遇。Hadoop作为大数据技术的领跑者,在众多行业和科研领域中被广泛采用。本书通过源代码,结合大量的图表,详细剖析了Hadoop生态系统中的基础工具库Common和分布式文件系统HDFS的架构设计和实现原理,翔实、全面、深入地分析了Hadoop的高可靠、高容错、高扩展、高效率等特性的工作机制,是深入了解Hadoop Common和HDFS的宝贵资料。
—— 蒋杰
中国计算机学会大数据专家委员会委员/腾讯数据平台部助理总经理


作者简介
蔡斌  资深Hadoop技术专家,基于Hadoop的开源项目X-RIME的作者之一。国内Hadoop应用和源代码研究领域的先驱之一,有10余年开发经验,先后任职于朗讯科技、IBM中国研究院等国内外知名企业,目前担任腾讯数据平台部的高级工程师,从事Hadoop相关技术的研究、应用和实施,实战经验非常丰富。对分布式计算、电信增值业务、网络管理等领域有深刻的认识和理解,拥有近10项发明专利,其中两项为美国专利,大部分与海量数据处理相关。近期关注海量数据的流式处理、Hadoop上的大数据应用与挖掘等。
陈湘萍  北京大学计算机系博士,目前就职于中山大学,专注于Hadoop、云计算、软件中间件、模型驱动的软件工程等技术的研究和实践。拥有发明专利5项,参与1项国家电子行业标准的制定,发表学术论文10余篇。

图书前言

为什么写本书
  互联网使得信息的采集、传播速度和规模达到空前的水平,实现了全球的信息共享与交互,它已经成为信息社会必不可少的基础设施,同时也带来了多方面的新挑战。2003年,Google发表了《Google File System》,介绍了Google海量数据处理使用的文件系统,使互联网时代的数据存储发生了革命性的变化。而Doug Cutting等人在Nutch项目上应用GFS和MapReduce思想,并演化为Hadoop项目,经过多年的发展,最终形成了包含多个相关项目的软件生态系统,开创了海量数据处理的新局面。
  Hadoop正是为了解决互联网时代的海量数据存储和处理而设计、开发的。简单地讲,Hadoop是一个可以更容易开发和并行处理大规模数据的分布式计算平台,它的主要特点是:扩展能力强、成本低、高效率、可靠。目前,Hadoop的用户已经从传统的互联网公司,扩展到科学计算、电信行业、电力行业、生物行业以及金融公司,并得到越来越广泛的应用。
  Hadoop作为一个优秀的开源项目,提供了一些文档和所有的源代码,但是,对于很多开发人员,仅仅通过一些简单的例子或教程学习使用Hadoop的基本功能是远远不够的。同时,随着云计算和大数据的发展,产业界正在经历一次重大变革,特别是基于云计算的海量数据处理,改变着我们思考的方式和习惯,开发者们越来越有必要去了解Hadoop的架构与设计原理。
  本书从源代码的层面上对Hadoop的公共工具Common和Hadoop的分布式文件系统HDFS进行了介绍,帮助广大开发者从架构与设计原理的角度去理解Hadoop,从而为更好地使用和扩展Hadoop打下坚实的基础。同时,Hadoop是一个使用Java语言实现的优秀系统,从事Java和分布式计算相关技术的开发者们能从它的源码实现中看到许多优秀的设计思想、对各种设计模式的灵活运用、语言的使用技巧以及编程规范等。这些都有助于加深开发者们对Java相关技术,尤其是Hadoop的理解,从而提高自己的开发水平,拓展自己的技术视野,为工作带来帮助。
读者对象
  Hadoop开发人员
  对这部分读者来说,本书的内容能够帮助他们加深对Hadoop的理解,通过全面了解Hadoop,特别是HDFS的实现原理,为进一步优化、定制和扩展Hadoop提供坚实基础。
  学习分布式技术的读者
  Hadoop是一个得到广泛应用的大型分布式系统,开放的源代码中包含了大量分布式系统设计原理和实现,读者可以通过本书,充分学习、体验和实践分布式技术。
  学习Java语言的中高级读者
  Hadoop使用Java语言实现,它充分利用了Java的语言特性,并使用了大量的标准库和开源工具,很多功能的设计和实现非常优秀,是极佳的学习Java技术的参考资料。
本书的主要内容
  本书主要分为三个部分。
  第一部分(第1章)对如何建立Hadoop的开发、分析环境做了简单的介绍。对于Hadoop这样复杂、庞大的项目,一个好的开发环境可以让读者事半功倍地学习、研究源代码。
  第二部分(第2~5章)主要对Hadoop公共工具Common的实现进行研究。分别介绍了Hadoop的配置系统、面向海量数据处理的序列化和压缩机制、Hadoop使用的远程过程调用,以及满足Hadoop上各类应用访问数据的Hadoop抽象文件系统和部分具体文件系统。
  第三部分(第6~9章)对Hadoop分布式文件系统进行了详细的分析。这部分内容采用总-分-总的结构,第6章介绍了HDFS各个实体和实体间接口,第7章和第8章分别详细地研究了数据节点和名字节点的实现原理,第9章通过对客户端的解析,回顾HDFS各节点间的配合,完整地介绍了一个大规模数据存储系统的实现。
  通过本书,读者不仅能全面了解Hadoop的优秀架构和设计思想,而且还能从Hadoop,特别是HDFS的实现源码中一窥Java开发的精髓和分布式系统的精要。
勘误和支持
  由于作者的水平有限,编写时间跨度较长,同时开源软件的演化较快,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果大家有和本书相关的内容需要探讨,或有更多的宝贵意见,欢迎通过caibinbupt@qq.com和我们联系,希望能结识更多的朋友,大家共同进步。书中的源代码文件可以从华章网站下载。
致谢
  感谢机械工业出版社华章分社的编辑杨福川和白宇,杨老师的耐心和支持让本书最终得以出版,白老师的很多建议使本书的可读性更强。
  感谢腾讯数据平台部的张文郁、赵重庆和徐钊,作为本书的第一批读者和Hadoop专家,他们的反馈意见让本书增色不少。
  感谢和我们一起工作、研究和应用Hadoop的腾讯数据平台部,以及IBM中国研究中心和中山大学的领导和同事们,本书的很多内容是对实际项目的总结。
  最后,作者向支持本书写作的家人深表谢意,感谢他们的耐心和理解。

上架指导

计算机\程序设计

封底文字

经过几年的快速发展,Hadoop已经成为大数据时代存储和处理海量数据的事实标准,具有高可靠性、高扩展性、高效性和高容错性等许多优点,在学术界备受关注,在业界则更受欢迎。Hadoop的功能非常强大,与之相伴随的是使用上的复杂性,如何才能更好地使用Hadoop、更好地对Hadoop进行性能优化、扩展和定制?通过阅读和研究它的源代码是一种不错的选择。“Hadoop技术内幕”这两本书根据读者的需求,对Common、HDFS和MapReduce等核心技术的架构设计和实现原理进行了深入且详细的分析,对于想了解Hadoop工作机制的读者来说,这两本书应该是十分难得的,强烈推荐。
——EasyHadoop开源技术社区(www.easyhadoop.com) 致力于Hadoop的易用和普及

Hadoop是近两年来技术领域最热门的话题,从媒体界,到学术界,再到企业界,都给予了高度关注。在企业界,Hadoop的应用已经非常广泛,不仅在IT领域被广泛使用,而且金融、电信、生物、医药、制造等传统领也十分受欢迎,有海量数据需要处理的地方,就能用上Hadoop。尤其是在IT领域,从国外的Google、Yahoo、Microsoft、Oracle、Facebook,到国内的阿里巴巴、淘宝、腾讯、百度、新浪、搜狐,都在Hadoop的研发和应用上投入了大量的人力和资金,并获得了丰厚的收益。随着Hadoop的普及,随之而来的,用户遇到的问题也会越来越多,越来越复杂。要解决实际生产环境中可能遇到的复杂问题,掌握Hadoop本身的设计和实现原理是根本之道。“Hadoop技术内幕”这两本书就本着这个目标出发,从源代码的角度对Hadoop的工作机制进行了深入的分析,并对实践中可能会遇到的各种问题给出了解决方案。
——51CTO(www.51cto.com) 中国领先的IT技术网站
本书主要内容:
(1)Hadoop的技术优势和整个生态系统;
(2)Hadoop源代码的获取和阅读环境的搭建;
(3)Hadoop配置信息的处理;
(4)面向海量数据处理的序列化和压缩机制;
(5)Hadoop的远程过程调用;
(6)Hadoop抽象文件系统和部分具体文件系统;
(7)HDFS的总体结构和主要流程
(8)数据节点和名字节点和HDFS客户端的实现。

作者简介

蔡斌 陈湘萍 著:暂无简介

图书目录

前 言
第一部分 环境准备
第1章 源代码环境准备/ 2
1.1 什么是Hadoop / 2
1.1.1 Hadoop简史/ 2
1.1.2 Hadoop的优势/ 3
1.1.3 Hadoop生态系统/ 4
1.2 准备源代码阅读环境/ 8
1.2.1 安装与配置JDK / 8
1.2.2 安装Eclipse / 9
1.2.3 安装辅助工具Ant/ 12
1.2.4 安装类UNIX Shell环境Cygwin / 13
1.3 准备Hadoop源代码/ 15
1.3.1 下载Hadoop / 15
1.3.2 创建Eclipse项目/ 16
1.3.3 Hadoop源代码组织/ 18
1.4 小结/ 19
第二部分 Common的实现
第2章 Hadoop配置信息处理/ 22
2.1 配置文件简介/ 22
2.1.1 Windows操作系统的配置文件/ 22
2.1.2 Java配置文件/ 23
2.2 Hadoop Configuration详解/ 24
2.2.1 Hadoop配置文件的格式/ 24
2.2.2 Configuration的成员变量/ 26
2.2.3 资源加载/ 27
2.2.4 使用get*和set*访问/设置配置项/ 32
2.3 Configurable接口/ 34
2.4 小结/ 35
第3章 序列化与压缩/ 36
3.1 序列化/ 36
3.1.1 Java内建序列化机制/ 36
3.1.2 Hadoop序列化机制/ 38
3.1.3 Hadoop序列化机制的特征/ 39
3.1.4 Hadoop Writable机制/ 39
3.1.5 典型的Writable类详解/ 41
3.1.6 Hadoop序列化框架/ 48
3.2 压缩/ 49
3.2.1 Hadoop压缩简介/ 50
3.2.2 Hadoop压缩API应用实例/ 51
3.2.3 Hadoop压缩框架/ 52
3.2.4 Java本地方法/ 61
3.2.5 支持Snappy压缩/ 65
3.3 小结/ 69
第4章 Hadoop远程过程调用/ 70
4.1 远程过程调用基础知识/ 70
4.1.1 RPC原理/ 70
4.1.2 RPC机制的实现/ 72
4.1.3 Java远程方法调用/ 73
4.2 Java动态代理/ 78
4.2.1 创建代理接口/ 78
4.2.2 调用转发/ 80
4.2.3 动态代理实例/ 81
4.3 Java NIO/ 84
4.3.1 Java基本套接字/ 84
4.3.2 Java NIO基础/ 86
4.3.3 Java NIO实例:回显服务器/ 93
4.4 Hadoop中的远程过程调用/ 96
4.4.1 利用Hadoop IPC构建简单的分布式系统/ 96
4.4.2 Hadoop IPC的代码结构/ 100
4.5 Hadoop IPC连接相关过程/ 104
4.5.1 IPC连接成员变量/ 104
4.5.2 建立IPC连接/ 106
4.5.3 数据分帧和读写/ 111
4.5.4 维护IPC连接/ 114
4.5.5 关闭IPC连接/ 116
4.6 Hadoop IPC方法调用相关过程/ 118
4.6.1 Java接口与接口体/ 119
4.6.2 IPC方法调用成员变量/ 121
4.6.3 客户端方法调用过程/ 123
4.6.4 服务器端方法调用过程/ 126
4.7 Hadoop IPC上的其他辅助过程/ 135
4.7.1 RPC.getProxy()和RPC.stopProxy() / 136
4.7.2 RPC.getServer()和Server的启停/ 138
4.8 小结/ 141
第5章 Hadoop文件系统/ 142
5.1 文件系统/ 142
5.1.1 文件系统的用户界面/ 142
5.1.2 文件系统的实现/ 145
5.1.3 文件系统的保护控制/ 147
5.2 Linux文件系统/ 150
5.2.1 Linux本地文件系统/ 150
5.2.2 虚拟文件系统/ 153
5.2.3 Linux文件保护机制/ 154
5.2.4 Linux文件系统API/ 155
5.3 分布式文件系统/ 159
5.3.1 分布式文件系统的特性/ 159
5.3.2 基本NFS体系结构/ 160
5.3.3 NFS支持的文件操作/ 160
5.4 Java文件系统/ 162
5.4.1 Java文件系统API / 162
5.4.2 URI和URL / 164
5.4.3 Java输入/输出流/ 166
5.4.4 随机存取文件/ 169
5.5 Hadoop抽象文件系统/ 170
5.5.1 Hadoop文件系统API / 170
5.5.2 Hadoop输入/输出流/ 175
5.5.3 Hadoop文件系统中的权限/ 179
5.5.4 抽象文件系统中的静态方法/ 180
5.5.5 Hadoop文件系统中的协议处理器/ 184
5.6 Hadoop具体文件系统/ 188
5.6.1 FileSystem层次结构/ 189
5.6.2 RawLocalFileSystem的实现/ 191
5.6.3 ChecksumFileSystem的实现/ 196
5.6.4 RawInMemoryFileSystem的实现/ 210
5.7 小结/ 213
第三部分 Hadoop分布式文件系统
第6章 HDFS概述/ 216
6.1 初识HDFS / 216
6.1.1 HDFS主要特性/ 216
6.1.2 HDFS体系结构/ 217
6.1.3 HDFS源代码结构/ 221
6.2 基于远程过程调用的接口/ 223
6.2.1 与客户端相关的接口/ 224
6.2.2 HDFS各服务器间的接口/ 236
6.3 非远程过程调用接口/ 244
6.3.1 数据节点上的非IPC接口/ 245
6.3.2 名字节点和第二名字节点上的非IPC接口/ 252
6.4 HDFS主要流程/ 254
6.4.1 客户端到名字节点的文件与目录操作/ 254
6.4.2 客户端读文件/ 256
6.4.3 客户端写文件/ 257
6.4.4 数据节点的启动和心跳/ 258
6.4.5 第二名字节点合并元数据/ 259
6.5 小结/ 261
第7章 数据节点实现/ 263
7.1 数据块存储/ 263
7.1.1 数据节点的磁盘目录文件结构/ 263
7.1.2 数据节点存储的实现/ 266
7.1.3 数据节点升级/ 269
7.1.4 文件系统数据集的工作机制/ 276
7.2 流式接口的实现/ 285
7.2.1 DataXceiverServer和DataXceiver / 286
7.2.2 读数据/ 289
7.2.3 写数据/ 298
7.2.4 数据块替换、数据块拷贝和读数据块检验信息/ 313
7.3 作为整体的数据节点/ 314
7.3.1 数据节点和名字节点的交互/ 314
7.3.2 数据块扫描器/ 319
7.3.3 数据节点的启停/ 321
7.4 小结/ 326
第8章 名字节点实现/ 327
8.1 文件系统的目录树/ 327
8.1.1 从i-node到INode/ 327
8.1.2 命名空间镜像和编辑日志/ 333
8.1.3 第二名字节点/ 351
8.1.4 FSDirectory的实现/ 361
8.2 数据块和数据节点管理/ 365
8.2.1 数据结构/ 366
8.2.2 数据节点管理/ 378
8.2.3 数据块管理/ 392
8.3 远程接口ClientProtocol的实现/ 412
8.3.1 文件和目录相关事务/ 412
8.3.2 读数据使用的方法/ 415
8.3.3 写数据使用的方法/ 419
8.3.4 工具dfsadmin依赖的方法/ 443
8.4 名字节点的启动和停止/ 444
8.4.1 安全模式/ 444
8.4.2 名字节点的启动/ 449
8.4.3 名字节点的停止/ 454
8.5 小结/ 454
第9章 HDFS客户端/ 455
9.1 认识DFSClient / 455
9.1.1 DFSClient的构造和关闭/ 455
9.1.2 文件和目录、系统管理相关事务/ 457
9.1.3 删除HDFS文件/目录的流程/ 459
9.2 输入流/ 461
9.2.1 读数据前的准备:打开文件/ 463
9.2.2 读数据/ 465
9.2.3 关闭输入流/ 475
9.2.4 读取HDFS文件数据的流程/ 475
9.3 输出流/ 478
9.3.1 写数据前的准备:创建文件/ 481
9.3.2 写数据:数据流管道的建立/ 482
9.3.3 写数据:数据包的发送/ 486
9.3.4 写数据:数据流管道出错处理/ 493
9.3.5 写数据:租约更新/ 496
9.3.6 写数据:DFSOutputStream.sync()的作用/ 497
9.3.7 关闭输出流/ 499
9.3.8 向HDFS文件写入数据的流程/ 500
9.4 DistributedFileSystem的实现/ 506
9.5 HDFS常用工具/ 508
9.5.1 FsShell / 508
9.5.2 DFSAdmin / 510
9.6 小结/ 511

教学资源推荐
作者: [英]理查德·伯德(Richard Bird) 著
作者: (美)Al Kelley Ira Pohl
作者: 罗兵 刘艺 孟武生
参考读物推荐
作者: Cay S. Horstmann, Gary Cornell
作者: [美]伊芙·波塞洛(Eve Porcello)亚历克斯·班克斯(Alex Banks)著