首页>参考读物>计算机科学与技术>计算机网络

深度剖析Hadoop HDFS
作者 : 林意群 编著
丛书名 : 大数据技术丛书
出版日期 : 2017-04-28
ISBN : 978-7-111-56207-8
定价 : 79.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 333
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书基于Hadoop 2.7.1版本进行分析,全面描述了HDFS2.X的核心技术与解决方案,书中描述了HDFS内存存储、异构存储等几大核心设计,包括源码细节层面的分析,对于HDFS中比较特殊的几个场景过程做细粒度的分析。还分享了作者在实际应用中的解决方案及扩展思路。阅读本书可以帮助读者从架构设计与功能实现角度了解HDFS 2.X,同时还能学习HDFS 2.X框架中优秀的设计思想、设计模式、Java语言技巧等。这些对于读者全面提高自己分布式技术水平有很大的帮助。本书分为三大部分:核心设计篇、细节实现篇、解决方案篇,“核心设计篇”包括HDFS的数据存储原理、HDFS的数据管理与策略选择机制、HDFS的新颖功能特性;“细节实现篇”包括HDFS的块处理、流量处理等细节,以及部分结构分析;“解决方案篇”包括HDFS的数据管理、HDFS的数据读写、HDFS的异常场景等。本书适合于云计算相关领域研发人员、云计算相关运维工程师、高年级研究生或本科、热衷于分布式计算研究的人。

图书前言

我上大学时,就开始在CSDN上写技术博客,目的在于记录平时遇到的一些问题以及研究的技术细节,好在将来可以进行查阅。随着时间的增长,我开始专注于某个技术模块,因为这样可以让我对具体某项技术有更深入的研究,写出的内容也会更加系统化,而HDFS就是其中一个我持续研究的技术模块。同时作为一名Hadoop社区的活跃贡献者,我也会将社区上一些比较有意思的东西分享到博客上,许多博友给了不少反馈,描述他们在工作中碰到的一些实际问题。在这样不断的写作、交流过程中,我得到了快速成长。目前大数据领域相关的书籍并不是很多,而专门讲解其中一个模块的书则更少,所以我将我过去一年多时间内关于HDFS的博客文章进行了整理、改进,同时也加入了一些新的内容。可以这么说,本书的内容源自博客,但是超越博客。
本书不会是纯源码分析的书籍。首先,我把工作实践中遇到的许多经验写入了书中,第7章便属于纯实践型的经验总结。其次,本书会是一个比较“新”的书,这里的“新”并不是指所分析的代码版本新,而是包含了HDFS未来的一些比较棒的功能特性,以及Hadoop社区目前在做的一些事情。在这本书中,你会看到许多与社区相关的JIRA,了解如何从社区上找到问题的解决办法。期待本书能给你带来更多的启发。
本书适合具有一定Java语言基础的同学,尤其适合以下读者朋友:
大数据架构师、开发者、运维工程师。
高年级本科生或研究生。
热衷于分布式存储技术的爱好者。
本书分为三大部分,“核心设计篇”介绍HDFS的基本原理、数据管理与策略等,“细节实现篇”介绍HDFS的块处理、流量处理、结构分析等,“解决方案篇”介绍数据管理技术与方案、数据读写技术、异常处理等。
第一部分“核心设计篇”包括内容如下:
第1章介绍HDFS现有的数据存储方式,主要介绍其中的内存存储和异构存储两个方面。
第2章介绍HDFS目前内部几种主要的功能机制,包括缓存管理、快照管理等。
第3章介绍HDFS比较新颖的一些功能,以及目前较少被人用到的功能特性。
第二部分“细节实现篇”包括内容如下:
第4章介绍HDFS的块处理相关操作,主要处理场景包括块如何组织、上报处理的过程以及多余块的清除。
第5章介绍HDFS的流量处理过程,包括HDFS目前流量处理的场景以及Balancer工具的数据平衡原理和优化。
第6章介绍HDFS一些特殊的结构对象类,包括这些类的作用、原理以及运用场景。
第三部分“解决方案篇”包括内容如下:
第7章介绍与HDFS相关的多套运维管理的操作方案,包括数据迁移、数据监控等方面。
第8章介绍HDFS写磁盘时的一些优化策略和改造方案。
第9章介绍HDFS的一些异常场景,并给出了相应的解决方案。
由于笔者水平有限,本书难免会有出错或者介绍不明确的地方,恳请读者批评指正,可以发送关于本书的意见和建议到我的个人邮箱:yqtin@apache.org。本书所涉及的源码,大家可以从Hadoop的Git地址上进行下载:https://github.com/apache/hadoop,其中,不同的分支对应不同版本的代码。相关Git地址和CSDN博客地址如下:
Git地址:https://github.com/linyiqun
CSDN地址:http://blog.csdn.net/androidlushangderen
感谢机械工业出版社的吴怡编辑,在我写作的过程中,不断指出其中的不足之处,督促和引导我完成本书的编写。
感谢蘑菇街数据平台部的同事们,在工作中不断地给予我帮助和支持,协助我解决各种各样的问题,于是才有了本书中所展现的精彩内容。

林意群
2017年2月

上架指导

计算机\网络

封底文字

本书作者是一名Hadoop社区的活跃贡献者,研究并贡献了很多代码。他把工作实践中遇到的许多经验写入了书中,介绍了HDFS未来比较棒的一些功能特性,以及Hadoop社区目前在做的一些事情。在这本书中,你会看到许多与社区相关的JIRA,告诉你如何从社区上找到问题的解决办法。本书适合具有一定Java语言基础的读者。

本书主要内容:

缓存管理、快照管理的优势与侧重点。
HDFS比较新颖的一些功能,以及一些比较少被人使用到的功能特性。
流量处理的详细过程,包括HDFS目前流量处理的场景以及Balancer工具的数据平衡原理和优化。
多套运维管理的操作方案,包括数据迁移、数据监控等。
HDFS写磁盘时的一些优化技巧和改造方案。
HDFS部分发生异常的场景,以及相应的解决办法。

作者简介

林意群 编著:暂无简介

图书目录

前言
第一部分 核心设计篇
第1章 HDFS的数据存储 2
1.1 HDFS内存存储 2
1.1.1 HDFS内存存储原理 2
1.1.2 Linux 虚拟内存盘 4
1.1.3 HDFS的内存存储流程分析 4
1.1.4 LAZY_PERSIST内存存储的使用 14
1.2 HDFS异构存储 15
1.2.1 异构存储类型 16
1.2.2 异构存储原理 17
1.2.3 块存储类型选择策略 22
1.2.4 块存储策略集合 24
1.2.5 块存储策略的调用 27
1.2.6 HDFS异构存储策略的不足之处 28
1.2.7 HDFS存储策略的使用 30
1.3 小结 31
第2章 HDFS的数据管理与策略选择 32
2.1 HDFS缓存与缓存块 32
2.1.1 HDFS物理层面缓存块 33
2.1.2 缓存块的生命周期状态 34
2.1.3 CacheBlock、UnCacheBlock场景触发 36
2.1.4 CacheBlock、UnCacheBlock缓存块的确定 38
2.1.5 系统持有的缓存块列表如何更新 39
2.1.6 缓存块的使用 40
2.1.7 HDFS缓存相关配置 40
2.2 HDFS中心缓存管理 42
2.2.1 HDFS缓存适用场景 43
2.2.2 HDFS缓存的结构设计 43
2.2.3 HDFS缓存管理机制分析 45
2.2.4 HDFS中心缓存疑问点 55
2.2.5 HDFS CacheAdmin命令使用 56
2.3 HDFS快照管理 58
2.3.1 快照概念 59
2.3.2 HDFS中的快照相关命令 59
2.3.3 HDFS内部的快照管理机制 60
2.3.4 HDFS的快照使用 71
2.4 HDFS副本放置策略 72
2.4.1 副本放置策略概念与方法 72
2.4.2 副本放置策略的有效前提 73
2.4.3 默认副本放置策略的分析 73
2.4.4 目标存储好坏的判断 82
2.4.5 chooseTargets的调用 83
2.4.6 BlockPlacementPolicyWithNodeGroup继承类 84
2.4.7 副本放置策略的结果验证 85
2.5 HDFS内部的认证机制 85
2.5.1 BlockToken认证 85
2.5.2 HDFS的Sasl认证 91
2.5.3 BlockToken认证与HDFS的Sasl认证对比 97
2.6 HDFS内部的磁盘目录服务 98
2.6.1 HDFS的三大磁盘目录检测扫描服务 98
2.6.2 DiskChecker:坏盘检测服务 99
2.6.3 DirectoryScanner:目录扫描服务 104
2.6.4 VolumeScanner:磁盘目录扫描服务 110
2.7 小结 116
第3章 HDFS的新颖功能特性 117
3.1 HDFS视图文件系统:ViewFileSystem 117
3.1.1 ViewFileSystem: 视图文件系统 118
3.1.2 ViewFileSystem内部实现原理 119
3.1.3 ViewFileSystem的使用 125
3.2 HDFS的Web文件系统:WebHdfsFileSystem 126
3.2.1 WebHdfsFileSystem的REST API操作 127
3.2.2 WebHdfsFileSystem的流程调用 129
3.2.3 WebHdfsFileSystem执行器调用 130
3.2.4 WebHDFS的OAuth2认证 133
3.2.5 WebHDFS的使用 135
3.3 HDFS数据加密空间:Encryption zone 136
3.3.1 Encryption zone原理介绍 136
3.3.2 Encryption zone源码实现 136
3.3.3 Encryption zone的使用 144
3.4 HDFS纠删码技术 145
3.4.1 纠删码概念 145
3.4.2 纠删码技术的优劣势 146
3.4.3 Hadoop纠删码概述 147
3.4.4 纠删码技术在Hadoop中的实现 148
3.5 HDFS对象存储:Ozone 152
3.5.1 Ozone介绍 153
3.5.2 Ozone的高层级设计 154
3.5.3 Ozone的实现细节 157
3.5.4 Ozone的使用 157
3.6 小结 158
第二部分 细节实现篇
第4章 HDFS的块处理 160
4.1 HDFS块检查命令fsck 160
4.1.1 fsck参数使用 160
4.1.2 fsck过程调用 161
4.1.3 fsck原理分析 162
4.1.4 fsck使用场景 171
4.2 HDFS如何检测并删除多余副本块 171
4.2.1 多余副本块以及发生的场景 172
4.2.2 OverReplication多余副本块处理 172
4.2.3 多余副本块清除的场景调用 177
4.3 HDFS数据块的汇报与处理 179
4.3.1 块处理的五大类型 179
4.3.2 toAdd:新添加的块 181
4.3.3 toRemove:待移除的块 184
4.3.4 toInvalidate:无效的块 186
4.3.5 toCorrupt:损坏的块 189
4.3.6 toUC:正在构建中的块 191
4.4 小结 193
第5章 HDFS的流量处理 194
5.1 HDFS的内部限流 194
5.1.1 数据的限流 194
5.1.2 DataTransferThrottler限流原理 196
5.1.3 数据流限流在Hadoop中的使用 198
5.1.4 Hadoop限流优化点 202
5.2 数据平衡 204
5.2.1 Balancer和Dispatcher 204
5.2.2 数据不平衡现象 207
5.2.3 Balancer性能优化 207
5.3 HDFS节点内数据平衡 210
5.3.1 磁盘间数据不平衡现象及问题 211
5.3.2 传统的磁盘间数据不平衡解决方案 211
5.3.3 社区解决方案:DiskBalancer 212
5.4 小结 216
第6章 HDFS的部分结构分析 217
6.1 HDFS镜像文件的解析与反解析 217
6.1.1 HDFS的FsImage镜像文件 218
6.1.2 FsImage的解析 218
6.1.3 FsImage的反解析 221
6.1.4 HDFS镜像文件的解析与反解析命令 226
6.2 DataNode数据处理中心DataXceiver 227
6.2.1 DataXceiver的定义和结构 228
6.2.2 DataXceiver下游处理方法 232
6.2.3 ShortCircuit 232
6.2.4 DataXceiver的上游调用 233
6.2.5 DataXceiver与DataXceiverServer 234
6.3 HDFS邻近信息块:BlockInfoContiguous 235
6.3.1 triplets对象数组 236
6.3.2 BlockInfoContiguous的链表操作 239
6.3.3 块迭代器BlockIterator 244
6.4 小结 246
第三部分 解决方案篇
第7章 HDFS的数据管理 248
7.1 HDFS的读写限流方案 248
7.1.1 限流方案实现要点以及可能造成的影响 248
7.1.2 限流方案实现 249
7.1.3 限流测试结果 250
7.2 HDFS数据资源使用量分析以及趋势预测 250
7.2.1 要获取哪些数据 251
7.2.2 如何获取这些数据 251
7.2.3 怎么用这些数据 254
7.3 HDFS数据迁移解决方案 257
7.3.1 数据迁移使用场景 257
7.3.2 数据迁移要素考量 258
7.3.3 HDFS数据迁移解决方案:DistCp 259
7.3.4 DistCp优势特性 260
7.3.5 Hadoop DistCp命令 264
7.3.6 DistCp解决集群间数据迁移实例 265
7.4 DataNode迁移方案 265
7.4.1 迁移方案的目标 266
7.4.2 DataNode更换主机名、ip地址时的迁移方案 267
7.5 HDFS集群重命名方案 268
7.6 HDFS的配置管理方案 271
7.6.1 HDFS配置管理的问题 271
7.6.2 现有配置管理工具 272
7.6.3 运用Git来做配置管理 272
7.7 小结 273
第8章 HDFS的数据读写 274
8.1 DataNode引用计数磁盘选择策略 274
8.1.1 HDFS现有磁盘选择策略 274
8.1.2 自定义磁盘选择策略 279
8.2 Hadoop节点“慢磁盘”监控 282
8.2.1 慢磁盘的定义以及如何发现 282
8.2.2 慢磁盘监控 284
8.3 小结 287
第9章 HDFS的异常场景 288
9.1 DataNode慢启动问题 288
9.1.1 DataNode慢启动现象 288
9.1.2 代码追踪分析 290
9.1.3 参数可配置化改造 293
9.2 Hadoop中止下线操作后大量剩余复制块问题 295
9.2.1 节点下线操作的含义及问题 295
9.2.2 死节点“复活” 297
9.2.3 Decommission下线操作如何运作 299
9.2.4 中止下线操作后移除残余副本块解决方案 303
9.3 DFSOutputStream的DataStreamer线程泄漏问题 306
9.3.1 DFSOutputStream写数据过程及周边相关类、变量 306
9.3.2 DataStreamer数据流对象 307
9.3.3 ResponseProcessor回复获取类 311
9.3.4 DataStreamer与DFSOutputStream的关系 313
9.3.5 Streamer线程泄漏问题 316
9.4 小结 319
附录 如何向开源社区提交自己的代码 320

教学资源推荐
作者: (美)拉里·彼得森(Larry Peterson);(美)卡梅隆·卡斯克尼(Carmelo Cascone);(美)布莱恩·欧康纳(Brian O''''''''onnor);(美)托马斯·瓦丘斯卡(Thomas Vachuska);(美)布鲁斯·戴维(Bruce Davie) 著
作者: 吴功宜 胡晓英 张仁 何云 王宁
参考读物推荐
作者: Casey Wilson Peter D
作者: 华联科技
作者: (加)Brent Chaters 著
作者: 孙燕唐等译