第1章 大数据与Hadoop 1
1.1什么是大数据 1
1.2大数据的用途 3
1.3并行计算 7
1.4数据流 8
1.5函数式程序设计与Lambda演算 12
1.6 MapReduce 15
1.7大数据处理平台 17
1.8 Hadoop的由来和发展 17
1.9 Hadoop的MapReduce计算框架 19
1.10 Hadoop的分布式容错文件系统HDFS 20
第2章 研究方法 22
2.1摘要卡片 22
2.2情景分析 27
2.3面向对象的程序设计 27
2.4怎样阅读分析Hadoop的代码 30
第3章Hadoop集群和YARN 31
3.1 Hadoop集群 31
3.2 Hadoop系统的结构 40
3.3 Hadoop的YARN框架 42
3.4状态机 45
3.5资源管理器ResourceManager 68
3.6资源调度器ResourceScheduler 72
第4章Hadoop的RPC机制 74
4.1 RPC与RMI 74
4.2 ProtoBuf 96
4.3 Java的Reflection机制 104
4.4 RM节点上的RPC服务 105
4.5 RPC客户端的创建 111
第5章Hadoop作业的提交 127
5.1从“地方”到“中央” 127
5.2示例一:采用老API的ValueAggregatorJob 128
5.3示例二:采用新 API的WordCount 138
5.4示例三:采用ToolRunner的QuasiMonteCarlo 142
5.5从Job.submit()开始的第二段流程 148
5.6 YARNRunner和ResourceMgrDelegate 165
第6章 作业的调度与指派 182
6.1作业的受理 182
6.2 NM节点的心跳和容器周转 199
6.3容器的分配 205
第7章NodeManager与任务投运 219
7.1 AMLauncher与任务投运 219
7.2 MRAppMaster或AM的创建 223
7.3资源本地化 234
7.4容器的投运 249
第8章MRAppMaster与作业投运 261
8.1 MRAppMaster 261
8.2 App资源与容器 271
8.3容器的跨节点投送和启动 283
8.4目标节点上的容器投运 286
8.5 Uber模式下的本地容器分配与投运 293
8.6任务的启动 295
8.7 MapTask的运行 301
8.8 ReduceTask的投运 303
第9章YARN子系统的计算框架 307
9.1 MapReduce框架 307
9.2 Streaming框架 317
9.3 Chain框架 329
9.4 Client与ApplicationMaster 335
第10章MapReduce框架中的数据流 348
10.1数据流和工作流 348
10.2 Mapper的输入 350
10.3 Mapper的输出缓冲区MapOutputBuffer 360
10.4作为Collector的MapOutputBuffer 365
10.5环形缓冲区kvbuffer 369
10.6对MapOutputBuffer的输出 373
10.7 Sort和Spill 376
10.8 Map计算的终结与Spill文件的合并 380
10.9 Reduce阶段 389
10.10 Merge 399
10.11 Reduce阶段的输入和输出 407
第11章Hadoop的文件系统HDFS 415
11.1文件的分布与容错 415
11.2目录节点NameNode 419
11.3 FSNamesystem 423
11.4文件系统目录FSDirectory 426
11.5文件系统映像FsImage 433
11.6文件系统更改记录FSEditLog 446
11.7 FSEditLog与Journal 457
11.8 EditLog记录的重演 460
11.9版本升级与故障恢复 464
第 12章HDFS的DataNode 477
12.1 DataNode 477
12.2数据块的存储 481
12.3 RamDisk复份的持久化存储 493
12.4目录扫描线程DirectoryScanner 501
12.5数据块扫描线程DataBlockScanner 511
第13章DataNode与NameNode的互动 519
13.1 DataNode与NameNode的互动 519
13.2心跳HeartBeat 526
13.3 BlockReport 539
第14章DataNode间的互动 559
14.1数据块的接收和存储 559
14.2命令DNA_ TRANSFER的执行 588
第15章HDFS的文件访问 592
15.1 DistributedFileSystem和DFSClient 592
15.2 FsShell 594
15.3 HDFS的打开文件流程 599
15.4 HDFS的读文件流程 604
15.5 HDFS的创建文件流程 610
15.6文件租约 621
15.7 HDFS的写文件流程 624
15.8实例 639
第16章Hadoop的容错机制 642
16.1容错与高可用 642
16.2 HDFS的HA机制 648
16.3 NameNode的倒换 664
16.4 Zookeeper与自动倒换 670
16.5 YARN的HA机制 677
第17章Hadoop的安全机制 680
17.1大数据集群的安全问题 680
17.2 UGI、Token和A CL 690
17.3 UGI的来源和流转 698
17.4 Token的使用 703
第18章Hadoop的人机界面 709
18.1 Hadoop的命令行界面 709
18.2 Hadoop的Web界面 714
18.3 Dependency Inject和Annotation 727
18.4对网页的访问 730
第19章Hadoop的部署和启动 741
19.1 Hadoop的运维脚本 741
19.2 Hadoop的部署与启动 743
19.3 Hadoop的日常使用 749
19.4 Hadoop平台的关闭 752
第20章Spark的优化与改进 754
20.1 Spark与Hadoop 754
20.2 RDD与Stage——概念与思路 754
20.3 RDD的存储和引用 757
20.4 DStream 758
20.5拓扑的灵活性和多样性 759
20.6性能的提升 762
20.7使用的方便性 763
20.8几个重要的类及其作用 766
参考资料 773