【文件属性】:
文件名称:hadoop大数据实战手册
文件大小:68B
文件格式:SQL
更新时间:2021-09-27 05:10:03
hadoop
第一部分核心设计篇
第1 章HDFS 的数据存储………….. .....………………… ……………………····· ··· …..... ... 2
1.1 HDFS 内存存储...............…··························· ·· ···············…….................…... . .. .. ................. 2
1.1.l HDFS 内存存储原理..................…... . .....……......………………………………… 2
1.1.2 Linux 虚拟内存盘........……………………………………………………………………………… 4
1.1.3 HDFS 的内存存储流程分析…·… ………………………………………………………………… 4
1.1.4 LAZY PERSIST 内存存储的使用……………················ · ································ 14
1.2 HDFS 异构存储.........
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 存储策略的使用…… ……………………………………………………………………… M
1.3 小结…..............………………··…………….......….................….......….........……………….. 31
VI
第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.l 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 BlockPlacementPolicyWithNo deGroup 继承类……………………·· …… …….. 84
2.4.7 副本放置策略的结果验证… …… ..... . ... . … … …………………………………… 85
2.5 HDFS 内部的认证机制……………………………… …………………………………………… … ………盯
2.5. l BlockToken 认证…… …… … … ………........…. . ........ . ..............…........….........….. 85
2 .5. 2 HDFS 的Sas I 认证……··……………………………………………………………………………引
2 .5.3 BlockToken 认证与HDFS 的Sas I 认证对比…… ……… ........…......................... 97
VII
2.6 HDFS 内部的磁盘目录服务…..... .. .... .... ......….... ...... ....…….......….... ....….. ........ ...... ....... 98
2.6.1 HDFS 的三大磁盘目录检测扫描服务…·…………………………… ………… …………… 98
2.6 .2 Diskαiecker : 坏盘检测服务..... ...... ...........… ……... ......… ………… . .. .... ...……. 99
2.6.3 DirectoryScanner :目录扫描服务…·………………………… … ………………………….. 104
2.6.4 VolumeScanner : 磁盘目录扫描服务… · …………………………………… … …………… · 110
2.7 小结….......…........….......…………………………………………......................….........…·· 116
第3 章HDFS 的新颖功能特性....... .... .. . .… … ……
3.1 HDFS 视图文件系统: V1ewFileSystem · ··· ·· · ·· ·· ·· ··… ....... .... .. ..... ...... .. .………………… · 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 的0Auth2 认证…·………………………………………………………………… 1 日
3.2.5 WebHDFS 的使用…………………………………………………………………… ………. . 135
3.3 HDFS 数据加密空间: Encryption zone …… ………………………… ………… ………………….. 136
3.3 . l 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.l Ozone 介绍... .. . .......….. .... ..………… …………………………………… … …………………… 153
3.5.2 Ozone 的高层级设计· · ···· ···………·· · ····……… ………………………………………………. 154
3.5.3 Ozone 的实现细节……… · ·…………………… ………………………………………… … …. 157
3.5.4 Ozone 的使用…·…………… ……………………………………………… … ……………… ……. 157
3.6 小结….......……………………………………………………… .... . ...........………….. .. .....………. 158
VIII
第二部分细节实现篇
第4 章HDFS 的块处理……·…………………………………………….... ......... ..…….... ....… 160
4.1 HDFS 块检查命令fsck … ··……………………… …………………… … ……… ……… ……………… . . 160
4 .1.l fsck 参数使用… . .. . .. .. . ... ..…… ··· · ···· ··· ·· ······· · · · ·…………………………….. 160
4 .1.2 fsck 过程调用….......………… …… ……………………………........................ 161
4. l.3 fsck 原理分析.........…… …. .. ... .………… …… ……… … ………………………………………. 162
4. l.4 fs 此使用场景······· · ·· · · · ··· ·… … …… ……………… ·… ……........……………........….......... 171
4.2 HDFS 如何检测并删除多余副本块...... . …....... . .………….... . .... . .............…….........……. 171
4.2.1 多余副本块以及发生的场景… …··…………………………………………………………… 172
4.2.2 OverReplication 多余副本块处理……………………………………………………………. 172
4.2.3 多余副本块清除的场景调用...... ...... .. .. .... .. .. ...... . . ...... . ... . .. ... . . .…................ . ….. 177
4.3 HDFS 数据块的汇报与处理…………………………………………………………………………….. 179
4 .3. l 块处理的五大类型………………………………………………………………………………… 179
4.3.2 toAdd : 新添加的块... .. ....….... .. . ..…… … ………………………………………… 181
4.3.3 toRemove : 待移除的块…·……………………… ………………………………………… … .. 184
4.3.4 tolnvalidate : 无效的块………………… …………………………………. . 186
4 .3.5 toCorrupt : 损坏的块… · ………………………………………………………………………… 189
4.3.6 toUC : 正在构建中的块………… ... .. .. .. ... ... .. ... .... . .. ....... -. ..... ...... .. ....……··…… 191
44 小结… … ………·· ·· ··· ……………… … ………… …… ·· …………………………………………….. 193
第5 章HDFS 的流量处理…··…………………………………………………… ………………………… .. 1 归
5.1 HDFS 的内部限流. . ..... .. . .... ........... . .. . …………………………… · …… ………… . . .. .. . .. . . 194
5.1.l 数据的限流….... ....…·………………………………………… … ……… …… …………………. 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
IX
5 3 HDFS 节点内数据平衡… …·………………… ………………………………………………………….. 210
5.3. l 磁盘问数据不平衡现象及问题……………………………………………………………… 0021 l
5.3.2 传统的磁盘问数据不平衡解决方案…………………………………··………… 211
5.3.3 社区解决方案: DiskBalancer ·… .. ......…...............….......…··….......….......…....... 212
第6 章HDFS 的部分结构分析… ··…………………………… … … …………………………… … ……… 217
6.1 HDFS 镜像文件的解析与反解析…··· ··· ········…...........……………………........…...... 217
6.1 .1 HDFS 的Fslmage 镜像文件... ......….........…………………………… · ·……................ 218
6.1.2 Fslmage 的解析.. . .....…·…………… …………………………………………………………….. 218
6.1.3 Fslmage 的反解析........…………………….. . .......…….......……......................….. 221
6.1.4 HDFS 镜像文件的解析与反解析命令…...........….......................................….. 226
6.2 DataNode 数据处理中心DataXceiver ……… .. ..... .……. ... ... ……..... . …... . ...…...... .... ....….. 227
6.2.l DataXceiver 的定义和结构...... . .. .. ...................……………… ………··…….. ..... 228
6.2.2 DataXceiver 下游处理方法…………………………………………………………………… 232
6.2.3 ShortCircuit …...... ..…......... .. .......….... .. ..... .............…·……………………………. 232
6.2.4 DataXceiver 的上游调用... .. .. . .. ...……………………………………………………….. 233
6.2 5 DataXceiver 与DataXce1verSe凹er .. ··………………………………………………………. 234
6.3 日DFS 邻近信息块: BlocklnfoContiguous ....... · ..........................………………. .. ...….. 235
6.3 .1 tnplets 对象数组···· · ··· ···· · ··· ·· ···· · ··…………………………………………………………….. 236
6 .3.2 BlocklnfoContiguous 的链表操作…·… · ···············….......... .. ….......…................. 239
6.3.3 块迭代器Blocklterator ..…… ............. ...…...............………………… ... ......…… 244
6.4 小结.......……… ….. .. . ...…………......................... . ..... ... . ... . . . ……………… ·· ····· ··…··…........ 246
第三部分解决方案篇
第7 章HDFS 的数据管理… .......…………........….......…........…·……………........................ 248
7.1 HDFS 的读写限流方案………...... . …….......….......….......….........….. ... ............….......… 248
7 . 1.1 限流方案实现要点以及可能造成的影响.. .. .. .…………···· · ··· ·….. . . .....…........... 248
7.1.2 限流方案实现…………….... ........ .... . ......…...............................................….. 249
7.1.3 限流测试结果……....... .………… …………………………………………………..... .. .… 250
x
7.2 HDFS 数据资源使用量分析以及趋势预测…........... . ....……..............…······· · ·······…… 250
7.2. 1 要获取哪些数据……. . . ... .... ... ... … ….......…... . ...… … …... . ............ . ...... . ............… 251
7.2.2 如何获取这些数据……. . . . ...………·· … … … …..... . ......................................... . ......... 251
7 .2 3 怎么用这些数据… ·……………………………………………………………….. . .. . ....... . … 254
7.3 H DFS 数据迁移解决方案… … ........ . …································…………….. .. ...… . ..............… 257
7.3. l 数据迁移使用场景………………………………………………………………………………… 257
7.3.2 数据迁移要素考量... . ............…··································· · ·…………….......………. 258
7 .3.3 HD F S 数据迁移解决方案: D istCp …………………………………………………………. 259
7.3.4 DistCp 优势特性…………………………………… … ………………………………………….. 260
7.3 .5 Hadoop DistCp 命令······· · ·····… … ……· · ……………………….....................… . 264
7.3.6 D is tC p 解决集群间数据迁移实例…… … . .... .. …… . ..................................…........ 265
7 4 D ataNo de 迁移方案…··… … …….......….. . .. .. .… . ......…................……….......…................… 265
7.4.1 迁移方案的目标... . ..... … ……………….. . .... . … h ………………………………………… 266
7.4.2 DataNo d e 更换主机名、i p 地址时的迁移方案…….......................................... 267
7.5 H D FS 集群重命名方案……....... . ... . ...…….. . .. . .. . .......…….............................. . .....……… 268
7.6 HD FS 的配置管理方案... . ...........…··…………………………………………………………….. 271
7.6. 1 HDFS 配置管理的问题………………………………………………………………………… . . 271
7.6.2 现有配置管理工具....................... . . … … . ........... . .....….......... . ...... . ................ . ...… 272
7.6.3 运用Git 来做配置管理………………………………………………………………………. 272
第8 章HDFS 的数据读写……… … …………………………................... . ..….............. 274
8.1 D ataNo d e 引用计数磁盘选择策略.... . ... . .............. . ...... . .... . ........... . .... . ... . ... . .............. .' .... 274
8.1.1 HD FS 现有磁盘选择策略..... . ............….......…….......……………………… . .. . . 274
8.1.2 自定义磁盘选择策略…………… … …………… … … … ……………………………………….. 279
8.2 Hadoo p 节点“慢磁盘”监控…… … .. ... ...……··…………………………………………………….. 282
8.2.1 慢磁盘的定义以及如何发现………………… … ……………………………….. 282
8.2.2 慢磁盘监控…·· · ···· · ·………··· · ···…………… . ......…........…................................... 284
第9 章HDFS 的异常场景……….. ... ... … .... . ..……. .. ....……………….... . ..……... . ..….......…······· 288
9 . 1 DataN ode 慢启动问题…·……………………………………………………………………………… … .. 288
XI
9 .1.1 DataN ode 慢启动现象………………………………·······……….......……......... 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 中止下线操作后移除残余副本块解决方案…………………………..... ...…·······…… 3 03
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 线程泄漏问题.........……… .. .... .……………………………… …………………… 3 16
9.4 小结. ..... ...………·…………………………………………………………………………………………. 319
附录如何向开源社区提交自己的代码………………………………. ... .. ............................ 320