《Hadoop源代码分析 第二版》是一本全面细致介绍和分析Hadoop源码和内部工作机理的技术书籍,通过对Hadoop内部源码详细透彻的解析,使读者能够快速高效地掌握Hadoop的内部工作机制,了解Hadoop内部源码架构,对Hadoop有更加深刻的认识。
本书主要对Hadoop最核心的部分:HDFS和MapReduce进行源码解析和说明。适合所有想全面学习Hadoop开发技术的人员阅读,也适用于使用Hadoop进行开发的工程技术人员,还可作为想深入了解Hadoop运行机制、源代码的开发人员的参考书籍。
目录
- 第1篇 Hadoop概述与安装
- 第1章 Hadoop的简介和安装
- 1.1 Hadoop的简介
- 1.1.1 分布式文件系统HDFS
- 1.1.2 并行计算模型MapReduce
- 1.2 Hadoop的安装
- 1.2.1 虚拟机以及Ubuntu的安装
- 1.2.2 创建Hadoop用户
- 1.2.3 JDK1.6的安装
- 1.2.4 SSH的配置
- 1.2.5 单机模式下Hadoop的安装
- 1.2.6 伪分布式模式下Hadoop的安装
- 1.2.7 分布式模式下Hadoop的安装
- 第2篇 HDFS分布式文件系统及IO模型
- 第2章 HDFS架构和分布式文件系统
- 2.1 分布式文件系统概述
- 2.2 HDFS的特点
- 2.3 HDFS文件系统架构
- 2.4 Hadoop的抽象文件系统模型
- 2.4.1 FileSystem抽象文件系统
- 2.4.2 FileStatus文件状态信息
- 2.4.3 FsPermission文件或目录的操作权限
- 2.4.4 FileSystem的实现类
- 2.4.5 FileSystem的输入流
- 2.4.6 FileSystem的输出流
- 2.5 小结
- 第3章 Hadoop分布式文件系统HDFS的具体实现
- 3.1 DistributedFileSystem分布式文件系统
- 3.2 DFSClient HDFS客户端
- 3.3 小结
- 第4章 NameNode的实现
- 4.1 INode抽象类
- 4.2 INodeDirectory目录
- 4.3 INodeFile文件
- 4.4 FSDirectory文件系统目录
- 4.5 FSEditLog文件系统的编辑日志
- 4.6 FSImage文件系统镜像
- 4.7 Host2NodesMap主机到DataNode的映射
- 4.8 NetworkTopology网络拓扑结构
- 4.9 HostsFileReader主机文件读取器
- 4.10 BlocksMap 数据块到其元数据的映射
- 4.11 FSNamesystem HDFS文件系统的命名空间
- 4.12 NameNode名称结点
- 4.13 小结
- 第5章 Datanode的实现
- 5.1 Block数据块
- 5.2 DatanodeID类
- 5.3 DatanodeInfo类
- 5.4 BlockSender数据块发送器
- 5.5 BlockReceiver数据块接收器
- 5.6 DataBlockScanner数据块扫描器
- 5.7 FSDataset Datanode数据集合
- 5.8 DataXceiverServer
- 5.9 DataXceiver
- 5.10 Datanode类
- 5.11 小结
- 第6章 Hadoop的IO
- 6.1 数据类型接口
- 6.1.1 Writable接口
- 6.1.2 Comparable接口
- 6.1.3 WritableComparable接口
- 6.1.4 RawComparator比较器接口
- 6.1.5 WritableComparator接口
- 6.2 基本数据类型
- 6.2.1 IntWritable整型类型
- 6.2.2 Text文本类型
- 6.2.3 NullWritable类
- 6.2.4 ObjectWritable类
- 6.3 文件类型
- 6.3.1 SequenceFile序列文件
- 6.3.2 MapFile映射文件
- 6.4 小结
- 第3篇 MapReduce计算框架及RPC通信模型
- 第7章 MapReduce的输入和输出
- 7.1 输入格式InputFormat
- 7.1.1 InputFormat抽象类
- 7.1.2 FileInputFormat文件输入格式
- 7.1.3 TextInputFormat文本文件输入格式
- 7.1.4 KeyValueTextInputFormat键值对文件输入格式
- 7.1.5 CombineFileInputFormat组合文件输入格式
- 7.1.6 SequenceFileInputFormat序列文件输入格式
- 7.1.7 DBInputFormat数据库输入格式
- 7.1.8 MultipleInputs多种输入格式
- 7.1.9 DelegatingInputFormat授权输入格式
- 7.2 输入分片InputSplit
- 7.2.1 FileSplit文件输入分片
- 7.2.2 CombineFileSplit多文件输入分片
- 7.2.3 DBInputSplit数据库输入分片
- 7.3 记录读取器RecordReader
- 7.3.1 LineRecordReader行记录读取器
- 7.3.2 KeyValueLineRecordReader键值对记录读取器
- 7.3.3 CombineFileRecordReader组合文件记录读取器
- 7.3.4 SequenceFileRecordReader序列文件记录读取器
- 7.3.5 SequenceFileAsTextRecordReader和SequenceFileAsBinaryRecordReader
- 7.3.6 DBRecordReader数据库记录读取器
- 7.4 输出格式OutputFormat
- 7.4.1 OutputFormat抽象类
- 7.4.2 FileOutputFormat文件输出格式
- 7.4.3 TextOutputFormat文本格式的文件输出格式
- 7.4.4 SequenceFileOutputFormat普通序列文件输出格式
- 7.4.5 SequenceFileAsBinaryOutputFormat二进制序列文件输出格式
- 7.4.6 FilterOutputFormat过滤器输出格式
- 7.4.7 DBOutputFormat数据库输出格式
- 7.4.8 MultipleOutputs多种输出格式
- 7.5 记录写入器RecordWriter
- 7.5.1 DBRecordWriter数据库记录写入器
- 7.5.2 FilterRecordWriter过滤器记录写入器
- 7.5.3 LineRecordWriter 文本行记录写入器
- 7.6 输出提交器OutputCommitter
- 7.6.1 OutputCommitter输出提交器
- 7.6.2 FileOutputCommitter文件输出提交器
- 7.7 小结
- 第8章 Hadoop中的Context和ID
- 8.1 Hadoop运行过程中的Context上下文
- 8.1.1 JobContext作业上下文
- 8.1.2 Job作业
- 8.1.3 TaskAttemptContext任务尝试上下文
- 8.1.4 TaskInputOutputContext任务输入输出上下文
- 8.1.5 MapContext Mapper执行的上下文
- 8.1.6 ReduceContext Reducer执行的上下文
- 8.2 Hadoop运行过程中的ID类
- 8.2.1 ID类
- 8.2.2 JobID作业ID
- 8.2.3 TaskID任务ID
- 8.2.4 TaskAttemptID任务尝试ID
- 8.3 小结
- 第9章 Hadoop的计算模型MapReduce
- 9.1 Map处理过程
- 9.1.1 Mapper概述
- 9.1.2 Mapper源代码分析
- 9.1.3 InverseMapper反转Mapper
- 9.1.4 TokenCounterMapper标记计数Mapper
- 9.1.5 MultithreadedMapper多线程Mapper
- 9.1.6 FieldSelectionMapper字段选择Mapper
- 9.1.7 DelegatingMapper授权Mapper
- 9.2 Reducer处理过程
- 9.2.1 Reducer概述
- 9.2.2 Reducer源代码
- 9.2.3 IntSumReducer和LongSumReducer
- 9.2.4 FieldSelectionReducer字段选择Reducer
- 9.3 Partitioner分区处理过程
- 9.3.1 Partitioner概述
- 9.3.2 Partitioner源代码
- 9.3.3 HashPartitioner hash分区
- 9.3.4 BinaryPartitioner二进制分区
- 9.3.5 KeyFieldBasedPartitioner基于键字段的分区
- 9.3.6 TotalOrderPartitioner全排序分区
- 9.4 小结
- 第10章 JobClient的执行过程分析
- 10.1 MapReduce作业处理过程概述
- 10.1.1 JobConf MapReduce作业的配置信息
- 10.1.2 JobSubmissionProtocol作业提交的接口
- 10.1.3 RunningJob正在运行的Job作业的接口
- 10.1.4 JobStatus和JobProfile作业状态信息和注册信息
- 10.1.5 JobSubmissionFiles 获得作业提交的文件
- 10.2 JobClient提交作业流程
- 10.3 JobClient 提交Job的客户端
- 10.4 小结
- 第11章 JobTracker的执行过程分析
- 11.1 JobTracker处理过程概述
- 11.2 JobInfo作业信息
- 11.3 Counters计数器
- 11.4 Queue Job队列对象
- 11.5 QueueManager Job队列管理对象
- 11.6 JobInProgress正在处理的作业
- 11.7 JobTracker对JobClient提交的作业的处理
- 11.8 JobTracker的启动以及Job的初始化
- 11.9 JobTracker的其他源代码分析
- 11.10 JobTracker中的作业恢复管理器RecoveryManager
- 11.11 JobInProgressListener和JobQueueJobInProgressListener
- 11.12 小结
- 第12章 Hadoop的作业调度器
- 12.1 Hadoop作业调度器概述
- 12.2 TaskScheduler调度器的抽象父类
- 12.3 JobQueueTaskScheduler FIFO调度器
- 12.4 LimitTasksPerJobTaskScheduler任务数限制FIFO调度器
- 12.5 CapacityTaskScheduler计算能力调度器
- 12.6 FairScheduler公平调度器
- 12.7 小结
- 第13章 TaskTracker的执行过程
- 13.1 TaskTracker的启动
- 13.2 TaskTracker与JobTracker进行通信的组件InterTrackerProtocol
- 13.3 JobTracker返回给TaskTracker的Action的类型
- 13.4 TaskTracker向JobTracker发送心跳的过程
- 13.5 TaskTracker的任务处理过程
- 13.6 TaskTracker的其他源代码分析
- 13.7 TaskStatus任务的状态信息
- 13.8 TaskInProgress正在处理的任务
- 13.9 Task所有任务的父类
- 13.10 MapTask执行过程概述
- 13.11 MapOutputBuffer Map输出缓冲区
- 13.12 ReduceTask执行过程概述
- 13.13 ReduceCopier Reduce的Copy和Merge执行工具
- 13.14 小结
- 第14章 Hadoop的RPC协议
- 14.1 Hadoop RPC概念概述
- 14.2 RPC协议接口
- 14.2.1 ClientDatanodeProtocol客户端与DataNode进行通信的协议
- 14.2.2 ClientProtocol客户端和NameNode进行通信的协议
- 14.2.3 DatanodeProtocol DataNode与NameNode进行通信的协议
- 14.2.4 InterDatanodeProtocol DataNode之间进行通信的协议
- 14.2.5 NamenodeProtocol SecondaryNameNode与NameNode进行通信的协议
- 14.2.6 InterTrackerProtocol TaskTracker与JobTracker进行通信的协议
- 14.2.7 JobSubmissionProtocol JobClient与JobTracker进行通信的协议
- 14.2.8 TaskUmbilicalProtocol Child进程与TaskTracker父进程进行通信的协议
- 14.3 RPC的客户端和服务器端的实现
- 14.3.1 Client客户端
- 14.3.2 Server服务端
- 14.4 小结