资源名称:深度剖析Hadoop HDFS
内容简介:
《深度剖析Hadoop HDFS》基于Hadoop 2.7.1版本进行分析,全面描述了HDFS 2.X的核心技术与解决方案,书中描述了HDFS内存存储、异构存储等几大核心设计,包括源码细节层面的分析,对于HDFS中比较特殊的几个场景过程也做了细粒度的分析。还分享了作者在实际应用中的解决方案及扩展思路。阅读《深度剖析Hadoop HDFS》可以帮助读者从架构设计与功能实现角度了解HDFS 2.X,同时还能学习HDFS 2.X框架中优秀的设计思想、设计模式、Java语言技巧等。这些对于读者全面提高自己分布式技术水平有很大的帮助。《深度剖析Hadoop HDFS》分为三大部分:核心设计篇、细节实现篇、解决方案篇,“核心设计篇”包括HDFS的数据存储原理、HDFS的数据管理与策略选择机制、HDFS的新颖功能特性;“细节实现篇”包括HDFS的块处理、流量处理等细节,以及部分结构分析;“解决方案篇”包括HDFS的数据管理、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视图文件系统:ViewFileSystem117
3.1.1 ViewFileSystem: 视图文件系统118
3.1.2 ViewFileSystem内部实现原理119
3.1.3 ViewFileSystem的使用125
3.2 HDFS的Web文件系统:WebHdfsFileSystem126
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 zone136
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对象存储:Ozone152
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块检查命令fsck160
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和Dispatcher204
5.2.2 数据不平衡现象207
5.2.3 Balancer性能优化207
5.3 HDFS节点内数据平衡210
5.3.1 磁盘间数据不平衡现象及问题211
5.3.2 传统的磁盘间数据不平衡解决方案211
5.3.3 社区解决方案:DiskBalancer212
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数据处理中心DataXceiver227
6.2.1 DataXceiver的定义和结构228
6.2.2 DataXceiver下游处理方法232
6.2.3 ShortCircuit232
6.2.4 DataXceiver的上游调用233
6.2.5 DataXceiver与DataXceiverServer234
6.3 HDFS邻近信息块:BlockInfoContiguous235
6.3.1 triplets对象数组236
6.3.2 BlockInfoContiguous的链表操作239
6.3.3 块迭代器BlockIterator244
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数据迁移解决方案:DistCp259
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
资源截图: