深度剖析Hadoop HDFS
书籍作者:林意群 |
ISBN:9787111562078 |
书籍语言:简体中文 |
连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 |
下载次数:5772 |
创建日期:2021-02-14 |
发布日期:2021-02-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
内容简介
本书基于Hadoop 2.7.1版本进行分析,全面描述了HDFS 2.X的核心技术与解决方案,书中描述了HDFS内存存储、异构存储等几大核心设计,包括源码细节层面的分析,对于HDFS中比较特殊的几个场景过程也做了细粒度的分析。还分享了作者在实际应用中的解决方案及扩展思路。阅读本书可以帮助读者从架构设计与功能实现角度了解HDFS 2.X,同时还能学习HDFS 2.X框架中优秀的设计思想、设计模式、Java语言技巧等。这些对于读者全面提高自己分布式技术水平有很大的帮助。本书分为三大部分:核心设计篇、细节实现篇、解决方案篇,“核心设计篇”包括HDFS的数据存储原理、HDFS的数据管理与策略选择机制、HDFS的新颖功能特性;“细节实现篇”包括HDFS的块处理、流量处理等细节,以及部分结构分析;“解决方案篇”包括HDFS的数据管理、HDFS的数据读写、HDFS的异常场景等。本书适合于云计算相关领域研发人员、云计算相关运维工程师、高年级研究生或本科、热衷于分布式计算研究的人。
作者简介
林意群,唯品会上海研发中心数据应用部研发工程师,Apache Hadoop Committer,主要专注于HDFS模块的研究。对大数据处理、分布式计算兴趣浓厚,在实际工作中努力钻研,分享了大量技术文章,贡献了很多实践经验。
编辑推荐
基于Hadoop 2.7.1版本,全面描述HDFS 2.X的核心技术与解决方案。对于HDFS中比较特殊的几个场景过程进行细粒度分析,包括源码分析,融入了作者多年的开发经验。
本书作者是一名Hadoop社区的活跃贡献者,研究并贡献了很多代码。他把工作实践中遇到的许多经验写入了书中,介绍了HDFS未来比较棒的一些功能特性,以及Hadoop社区目前在做的一些事情。在这本书中,你会看到许多与社区相关的JIRA,告诉你如何从社区上找到问题的解决办法。
本书适合具有一定Java语言基础的读者。
前言
我上大学时,就开始在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的一些异常场景,并给出了相应的解决方案。
感谢机械工业出版社的吴怡编辑,在我写作的过程中,不断指出其中的不足之处,督促和引导我完成本书的编写。
感谢蘑菇街数据平台部的同事们,在工作中不断地给予我帮助和支持,协助我解决各种各样的问题,于是才有了本书中所展现的精彩内容。
林意群
2017年2月
目录
前言
第一部分 核心设计篇
第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.2 HDFS的Web文件系统:WebHdfsFileSystem 126
3.3 HDFS数据加密空间:Encryption zone 136
3.4 HDFS纠删码技术 145
3.5 HDFS对象存储:Ozone 152
3.6 小结 158
第二部分 细节实现篇
第4章 HDFS的块处理 160
4.1 HDFS块检查命令fsck 160
4.2 HDFS如何检测并删除多余副本块 171
4.3 HDFS数据块的汇报与处理 179
4.4 小结 193
第5章 HDFS的流量处理 194
5.1 HDFS的内部限流 194
5.2 数据平衡 204
5.3 HDFS节点内数据平衡 210
5.4 小结 216
第6章 HDFS的部分结构分析 217
6.1 HDFS镜像文件的解析与反解析 217
6.2 DataNode数据处理中心DataXceiver 227
6.3 HDFS邻近信息块:BlockInfoContiguous 235
6.4 小结 246
第三部分 解决方案篇
第7章 HDFS的数据管理 248
7.1 HDFS的读写限流方案 248
7.2 HDFS数据资源使用量分析以及趋势预测 250
7.3 HDFS数据迁移解决方案 257
7.4 DataNode迁移方案 265
7.5 HDFS集群重命名方案 268
7.6 HDFS的配置管理方案 271
7.7 小结 273
第8章 HDFS的数据读写 274
8.1 DataNode引用计数磁盘选择策略 274
8.2 Hadoop节点“慢磁盘”监控 282
8.3 小结 287
第9章 HDFS的异常场景 288
9.1 DataNode慢启动问题 288
9.2 Hadoop中止下线操作后大量剩余复制块问题 295
9.3 DFSOutputStream的DataStreamer线程泄漏问题 306
9.4 小结 319
附录 如何向开源社区提交自己的代码 320