√ 基于2.6新版,深入剖析RPC框架、Namenode、Datanode和HDFS客户端的实现
√ 以设计者角度了解HDFS 2.X,学习框架思想、设计模式、Java技巧以及编程规范
√ 掌握HDFS运行机制和底层机制,熟悉各组件间基本流程、通信、依赖、协同作业
√ 首部HDFS源码专著,提供大量流程图和代码段,更传授一种研读源码的特殊方法
HDFS是运行在通用硬件上的分布式文件系统,本书详细介绍了HDFS体系结构、基本概念、通信协议及主要流程,具体包括Hadoop RPC框架的使用及实现、文件系统目录树、数据块管理、数据节点管理、租约管理、缓存管理、ClientProtocol实现、Namenode的启动和停止、Datanode逻辑结构、Datanode存储、文件系统数据集、BlockManager、流式接口、数据块扫描器、DataNode类的实现、DFSClient实现、文件读操作与输入流、文件短路读操作、文件写操作与输出流,以及HDFS常用工具等。
第1章 HDFS 1
1.1 HDFS概述 1
1.1.1 HDFS体系结构 1
1.1.2 HDFS基本概念 2
1.2 HDFS通信协议 4
1.2.1 Hadoop RPC接口 4
1.2.2 流式接口 20
1.3 HDFS主要流程 22
1.3.1 HDFS客户端读流程 22
1.3.2 HDFS客户端写流程 24
1.3.3 HDFS客户端追加写流程 25
1.3.4 Datanode启动、心跳以及执行名字节点指令流程 26
1.3.5 HA切换流程 27
第2章 Hadoop RPC 29
2.1 概述 29
2.1.1 RPC框架概述 29
2.1.2 Hadoop RPC框架概述 30
2.2 Hadoop RPC的使用 36
2.2.1 Hadoop RPC使用概述 36
2.2.2 定义RPC协议 40
2.2.3 客户端获取Proxy对象 45
2.2.4 服务器获取Server对象 54
2.3 Hadoop RPC实现 63
2.3.1 RPC类实现 63
2.3.2 Client类实现 64
2.3.3 Server类实现 76
第3章 Namenode(名字节点) 88
3.1 文件系统树 88
3.1.1 INode相关类 89
3.1.2 Feature相关类 102
3.1.3 FSEditLog类 117
3.1.4 FSImage类 138
3.1.5 FSDirectory类 158
3.2 数据块管理 162
3.2.1 Block、Replica、BlocksMap 162
3.2.2 数据块副本状态 167
3.2.3 BlockManager类(done) 177
3.3 数据节点管理 211
3.3.1 DatanodeDescriptor 212
3.3.2 DatanodeStorageInfo 214
3.3.3 DatanodeManager 217
3.4 租约管理 233
3.4.1 LeaseManager.Lease 233
3.4.2 LeaseManager 234
3.5 缓存管理 246
3.5.1 缓存概念 247
3.5.2 缓存管理命令 247
3.5.3 HDFS集中式缓存架构 247
3.5.4 CacheManager类实现 248
3.5.5 CacheReplicationMonitor 250
3.6 ClientProtocol实现 251
3.6.1 创建文件 251
3.6.2 追加写文件 254
3.6.3 创建新的数据块 257
3.6.4 放弃数据块 265
3.6.5 关闭文件 266
3.7 Namenode的启动和停止 268
3.7.1 安全模式 268
3.7.2 HDFS High Availability 276
3.7.3 名字节点的启动 301
3.7.4 名字节点的停止 306
第4章 Datanode(数据节点) 307
4.1 Datanode逻辑结构 307
4.1.1 HDFS 1.X架构 307
4.1.2 HDFS Federation 308
4.1.3 Datanode逻辑结构 310
4.2 Datanode存储 312
4.2.1 Datanode升级机制 312
4.2.2 Datanode磁盘存储结构 315
4.2.3 DataStorage实现 317
4.3 文件系统数据集 334
4.3.1 Datanode上数据块副本的状态 335
4.3.2 BlockPoolSlice实现 335
4.3.3 FsVolumeImpl实现 342
4.3.4 FsVolumeList实现 345
4.3.5 FsDatasetImpl实现 348
4.4 BlockPoolManager 375
4.4.1 BPServiceActor实现 376
4.4.2 BPOfferService实现 389
4.4.3 BlockPoolManager实现 396
4.5 流式接口 398
4.5.1 DataTransferProtocol定义 398
4.5.2 Sender和Receiver 399
4.5.3 DataXceiverServer 403
4.5.4 DataXceiver 406
4.5.5 读数据 408
4.5.6 写数据(done) 423
4.5.7 数据块替换、数据块拷贝和读数据块校验 437
4.5.8 短路读操作 437
4.6 数据块扫描器 437
4.6.1 DataBlockScanner实现 438
4.6.2 BlockPoolSliceScanner实现 439
4.7 DirectoryScanner 442
4.8 DataNode类的实现 443
4.8.1 DataNode的启动 444
4.8.2 DataNode的关闭 446
第5章 HDFS客户端 447
5.1 DFSClient实现 447
5.1.1 构造方法 448
5.1.2 关闭方法 449
5.1.3 文件系统管理与配置方法 450
5.1.4 HDFS文件与操作方法 451
5.1.5 HDFS文件读写方法 452
5.2 文件读操作与输入流 452
5.2.1 打开文件 452
5.2.2 读操作――DFSInputStream实现 461
5.3 文件短路读操作 481
5.3.1 短路读共享内存 482
5.3.2 DataTransferProtocol 484
5.3.3 DFSClient短路读操作流程 488
5.3.4 Datanode短路读操作流程 509
5.4 文件写操作与输出流 512
5.4.1 创建文件 512
5.4.2 写操作――DFSOutputStream实现 516
5.4.3 追加写操作 543
5.4.4 租约相关 546
5.4.5 关闭输出流 548
5.5 HDFS常用工具 549
5.5.1 FsShell实现 550
5.5.2 DFSAdmin实现 552
《Hadoop 2.X HDFS源码剖析》深入浅出地将HDFS源码进行了展开,无论是刚刚接触的新手还是想要深入研究的老手,这本书都能让你受益匪浅。
——***研发工程师 远见
无可置疑,这是一本修炼内力的书,就像《程序员的自我修养》一样,让大数据相关开发人员,尤其是大数据研发工程师,由浅入深了解HDFS底层各个组件之间的基本流程、通信、依赖、协同作业;同时本书从源码角度详细介绍了Hadoop 2.X版本HDFS各组件的实现原理,体现了作者对于HDFS底层机制的如臂使指,值得仔细研读学习。
——东方国信金融大数据部部门经理 丁雷
拥有了大数据,就拥有未来,大数据概念已经不再新鲜,但Hadoop 2.0发布以来,始终未曾有一本系统讲解HDFS源码的中文书籍,本书恰如其时的出现,弥补了此方面的空缺。当我拿起《Hadoop 2.X HDFS源码剖析》初稿,读过后犹如醍醐灌顶,作者带我拨开层层迷雾,探究了HDFS的运行机制以及底层细节。本书通过大量的流程图和代码片段,把Hadoop RPC框架、NameNode、DataNode以及HDFS Client等从源码角度一步一步地进行了详细的剖析。除此之外,作者更教授了一种研读源码的方法。徐鹏老师的这本书,对想了解HDFS设计及实现的读者来说是本十分难得的好书。
——搜狗糖猫高级研发工程师 闫飞翔
大数据时代,Hadoop HDFS是*常用的分布式存储方案。徐鹏这本书从源码角度,全面、细致地剖析了HDFS的架构和实现原理。读者在深入了解HDFS原理的同时,还能学习到很多架构设计和编码规范的经验。对互联网大数据研发人员及初学者,这都是不可多得的好书。
——百度资深研发工程师 陈琪
Hadoop从云计算时代到现在的大数据时代都扮演着非常重要的角色,任何一个互联网公司几乎无一例外都在使用Hadoop来处理数据、挖掘数据中的价值。《Hadoop 2.X HDFS源码剖析》从Hadoop*基础的源码入手,由浅入、深层层深入,不仅分析了Hadoop的实现原理,更将工程中经常用到的经典技术原理讲解得非常透彻。对于以后想从事大数据或分布式计算相关的朋友这是一本非常不错的教材。
——阿里巴巴技术专家 曾魁
如同Hadoop本身一样,本书简明扼要、通俗易懂,不仅阐述HDFS的典型应用,更是很好地把握住目前Hadoop从业者的核心需求,不但知其然更知其所以然。所有想一探*新Hadoop HDFS 2.X 源码究竟的人都需要这本不可或缺的宝典。
——知乎云架构工程师 王东洋
本书集作者多年的Hadoop经验,出处都有智慧闪亮。
——硅谷LinkedIn总部资深工程师 王艺嵩
《Hadoop 2.X HDFS源码剖析》非常全面地介绍Hadoop HDFS的实现框架,对源码的解读是目前可见书籍中*详尽的一部。其从源代码层面深入浅出介绍NameNode、DataNode、HDFS客户端这三个组件的实现细节,对致力于深入研究HDSF原理的人来说是不二选择。
——阿里巴巴研发工程师 左谱军