《Hadoop源代码分析》PDF下载

  • 购买积分:18 如何计算积分?
  • 作  者:张鑫著
  • 出 版 社:北京:中国铁道出版社
  • 出版年份:2014
  • ISBN:9787113186241
  • 页数:644 页
图书介绍:本书是一本全面细致的介绍和分析Hadoop源码和内部工作机理的的一本技术书籍。通过对Hadoop内部源码详细细致的解析,使得读者能够快速高效的理解Hadoop的内部工作机制,了解Hadoop内部源码架构,快速高效上手Hadoop,对Hadoop有深刻的认识。

第1篇 Hadoop概述与安装 1

第1章 Hadoop的简介和安装 1

1.1 Hadoop的简介 1

1.1.1 分布式文件系统HDFS 1

1.1.2 并行计算模型MapReduce 3

1.2 Hadoop的安装 3

1.2.1 虚拟机以及Ubuntu的安装 3

1.2.2 创建Hadoop用户 6

1.2.3 JDK1.6的安装 7

1.2.4 SSH的配置 8

1.2.5 单机模式下Hadoop的安装 11

1.2.6 伪分布式模式下Hadoop的安装 11

1.2.7 分布式模式下Hadoop的安装 14

第2篇 HDFS分布式文件系统及IO模型 17

第2章 HDFS架构和分布式文件系统 17

2.1 分布式文件系统概述 17

2.2 HDFS的特点 17

2.3 HDFS文件系统架构 18

2.4 Hadoop的抽象文件系统模型 19

2.4.1 FileSystem抽象文件系统 19

2.4.2 FileStatus文件状态信息 34

2.4.3 FsPermission文件或目录的操作权限 34

2.4.4 FileSystem的实现类 37

2.4.5 FileSystem的输入流 53

2.4.6 FileSystem的输出流 60

2.5 小结 61

第3章 Hadoop分布式文件系统HDFS的具体实现 62

3.1 DistributedFileSystem分布式文件系统 62

3.2 DFSClient HDFS客户端 68

3.3 小结 109

第4章 NameNode的实现 110

4.1 INode抽象类 110

4.2 INodeDirectory目录 113

4.3 INodeFile文件 116

4.4 FSDirectory文件系统目录 119

4.5 FSEditLog文件系统的编辑日志 127

4.6 FSImage文件系统镜像 153

4.7 Host2NodesMap主机到DataNode的映射 183

4.8 NetworkTopology网络拓扑结构 187

4.9 HostsFileReader主机文件读取器 196

4.10 BlocksMap数据块到其元数据的映射 198

4.11 FSNamesystem HDFS文件系统的命名空间 201

4.12 NameNode名称结点 219

4.13 小结 230

第5章 Datanode的实现 232

5.1 Block数据块 232

5.2 DatanodeID类 232

5.3 DatanodeInfo类 233

5.4 BlockSender数据块发送器 235

5.5 BlockReceiver数据块接收器 240

5.6 DataBlockScanner数据块扫描器 246

5.7 FSDataset Datanode数据集合 253

5.8 DataXceiverServer 266

5.9 DataXceiver 267

5.10 Datanode类 271

5.11 小结 282

第6章 Hadoop的IO 283

6.1 数据类型接口 283

6.1.1 Writable接口 283

6.1.2 Comparable接口 283

6.1.3 WritableComparable接口 284

6.1.4 RawComparator比较器接口 284

6.1.5 WritableComparator接口 285

6.2 基本数据类型 287

6.2.1 IntWritable整型类型 287

6.2.2 Text文本类型 288

6.2.3 NullWritable类 292

6.2.4 ObjectWritable类 292

6.3 文件类型 293

6.3.1 SequenceFile序列文件 293

6.3.2 MapFile映射文件 304

6.4 小结 312

第3篇 MapReduce计算框架及RPC通信模型 313

第7章 MapReduce的输入和输出 313

7.1 输入格式InputFormat 313

7.1.1 InputFormat抽象类 313

7.1.2 FileInputFormat文件输入格式 315

7.1.3 TextInputFormat文本文件输入格式 317

7.1.4 KeyValueTextInputFormat键值对文件输入格式 317

7.1.5 CombineFileInputFormat组合文件输入格式 317

7.1.6 SequenceFileInputFormat序列文件输入格式 319

7.1.7 DBInputFormat数据库输入格式 320

7.1.8 MultipleInputs多种输入格式 322

7.1.9 DelegatingInputFormat授权输入格式 324

7.2 输入分片InputSplit 326

7.2.1 FileSplit文件输入分片 326

7.2.2 CombineFileSplit多文件输入分片 327

7.2.3 DBInputSplit数据库输入分片 328

7.3 记录读取器RecordReader 328

7.3.1 LineRecordReader行记录读取器 330

7.3.2 KeyValueLineRecordReader键值对记录读取器 332

7.3.3 CombineFileRecordReader组合文件记录读取器 332

7.3.4 SequenceFileRecordReader序列文件记录读取器 333

7.3.5 SequenceFileAsTextRecordReader和SequenceFileAsBinaryRecordReader 334

7.3.6 DBRecordReader数据库记录读取器 334

7.4 输出格式OutputFormat 335

7.4.1 OutputFormat抽象类 335

7.4.2 FileOutputFormat文件输出格式 337

7.4.3 TextOutputFormat文本格式的文件输出格式 339

7.4.4 SequenceFileOutputFormat普通序列文件输出格式 340

7.4.5 SequenceFileAsBinaryOutputFormat二进制序列文件输出格式 340

7.4.6 FilterOutputFormat过滤器输出格式 341

7.4.7 DBOutputFormat数据库输出格式 341

7.4.8 MultipleOutputs多种输出格式 342

7.5 记录写入器RecordWriter 344

7.5.1 DBRecordWriter数据库记录写入器 345

7.5.2 FilterRecordWriter过滤器记录写入器 346

7.5.3 LineRecordWriter文本行记录写入器 346

7.6 输出提交器OutputCommitter 347

7.6.1 OutputCommitter输出提交器 348

7.6.2 FileOutputCommitter文件输出提交器 348

7.7 小结 351

第8章 Hadoop中的Context和ID 352

8.1 Hadoop运行过程中的Context上下文 352

8.1.1 JobContext作业上下文 353

8.1.2 Job作业 354

8.1.3 TaskAttemptContext任务尝试上下文 358

8.1.4 TaskInputOutputContext任务输入输出上下文 358

8.1.5 MapContext Mapper执行的上下文 360

8.1.6 ReduceContext Reducer执行的上下文 360

8.2 Hadoop运行过程中的ID类 364

8.2.1 ID类 365

8.2.2 JobID作业ID 365

8.2.3 TaskID任务ID 367

8.2.4 TaskAttemptID任务尝试ID 368

8.3 小结 368

第9章 Hadoop的计算模型MapReduce 369

9.1 Map处理过程 369

9.1.1 Mapper概述 369

9.1.2 Mapper源代码分析 370

9.1.3 InverseMapper反转Mapper 371

9.1.4 TokenCounterMapper标记计数Mapp er 372

9.1.5 MultithreadedMapper多线程Mapper 372

9.1.6 FieldSelectionMapper字段选择Mapper 375

9.1.7 DelegatingMapper授权Mapper 376

9.2 Reducer处理过程 376

9.2.1 Reducer概述 376

9.2.2 Reducer源代码 377

9.2.3 IntSumReducer和LongSumReducer 378

9.2.4 FieldSelectionReducer字段选择Reducer 379

9.3 Partitioner分区处理过程 379

9.3.1 Partitioner概述 379

9.3.2 Partitioner源代码 380

9.3.3 HashPartitioner hash分区 380

9.3.4 BinaryPartitioner二进制分区 380

9.3.5 KeyFieldBasedPartitioner基于键字段的分区 382

9.3.6 TotalOrderPartitioner全排序分区 383

9.4 小结 387

第10章 JobClient的执行过程分析 388

10.1 MapReduce作业处理过程概述 388

10.1.1 JobConfMapReduce作业的配置信息 389

10.1.2 JobSubmissionProtocol作业提交的接口 392

10.1.3 RunningJob正在运行的Job作业的接口 394

10.1.4 JobStatus和JobProfile作业状态信息和注册信息 396

10.1.5 JobSubmissionFiles获得作业提交的文件 399

10.2 JobClient提交作业流程 401

10.3 JobClient提交Job的客户端 401

10.4 小结 412

第11章 JobTracker的执行过程分析 413

11.1 JobTracker处理过程概述 413

11.2 JobInfo作业信息 413

11.3 Counters计数器 414

11.4 Queue Job队列对象 417

11.5 QueueManager Job队列管理对象 418

11.6 JobInProgress正在处理的作业 420

11.7 JobTracker对JobClient提交的作业的处理 437

11.8 JobTracker的启动以及Job的初始化 441

11.9 JobTracker的其他源代码分析 445

11.10 JobTracker中的作业恢复管理器RecoveryManager 459

11.11 JobInProgressListener和JobQueueJobInProgressListener 465

11.12 小结 467

第12章 Hadoop的作业调度器 468

12.1 Hadoop作业调度器概述 468

12.2 TaskScheduler调度器的抽象父类 469

12.3 JobQueueTaskScheduler FIFO调度器 470

12.4 LimitTasksPerJobTaskScheduler任务数限制FIFO调度器 475

12.5 CapacityTaskScheduler计算能力调度器 477

12.6 FairScheduler公平调度器 488

12.7 小结 504

第13章 TaskTracker的执行过程 505

13.1 TaskTracker的启动 505

13.2 TaskTracker与JobTracker进行通信的组件InterTrackerProtocol 509

13.3 JobTracker返回给TaskTracker的Action的类型 511

13.4 TaskTracker向JobTracker发送心跳的过程 512

13.5 TaskTracker的任务处理过程 521

13.6 TaskTracker的其他源代码分析 526

13.7 TaskStatus任务的状态信息 544

13.8 TaskInProgress正在处理的任务 548

13.9 Task所有任务的父类 555

13.10 MapTask执行过程概述 566

13.11 MapOutputBufferMap输出缓冲区 568

13.12 ReduceTask执行过程概述 585

13.13 ReduceCopier Reduce的Copy和Merge执行工具 591

13.14 小结 612

第14章 Hadoop的RPC协议 613

14.1 Hadoop RPC概念概述 613

14.2 RPC协议接口 614

14.2.1 ClientDatanodeProtocol客户端与DataNode进行通信的协议 614

14.2.2 ClientProtocol客户端和NameNode进行通信的协议 615

14.2.3 DatanodeProtocol DataNode与NameNode进行通信的协议 617

14.2.4 InterDatanodeProtocol DataNode之间进行通信的协议 618

14.2.5 NamenodeProtocol SecondaryNameNode与NameNode进行通信的协议 619

14.2.6 InterTrackerProtocol TaskTracker与JobTracker进行通信的协议 619

14.2.7 JobSubmissionProtocol JobClient与JobTracker进行通信的协议 620

14.2.8 TaskUmbilicalProtocol Child进程与TaskTracker父进程进行通信的协议 622

14.3 RPC的客户端和服务器端的实现 623

14.3.1 Client客户端 623

14.3.2 Server服务端 631

14.4 小结 644