本书是一本全面细致介绍和分析Hadoop源码和内部工作机理的技术书籍,通过对Hadoop内部源码详细透彻的解析,使读者能够快速高效地掌握Hadoop的内部工作机制,了解Hadoop内部源码架构,对Hadoop有更加深刻的认识。<br>本书主要对Hadoop最核心的部分:HDFS和MapReduce进行源码解析和说明。适合所有想全面学习Hadoop开发技术的人员阅读,也适用于使用Hadoop进行开发的工程技术人员,还可作为想深入了解Hadoop运行机制、源代码的开发人员的参考书籍。<br><br>
暂缺《深入云计算:Hadoop源代码分析(修订版)》作者简介
第1篇& ;& ;Hadoop概述与安装<br>第1章& ;& ;Hadoop的简介和安装<br>1.1& ;& ;Hadoop的简介& ;1<br>1.1.1& ;& ;分布式文件系统HDFS& ;1<br>1.1.2& ;& ;并行计算模型MapReduce& ;3<br>1.2& ;& ;Hadoop的安装& ;3<br>1.2.1& ;& ;虚拟机以及Ubuntu的安装& ;3<br>1.2.2& ;& ;创建Hadoop用户& ;6<br>1.2.3& ;& ;JDK1.6的安装& ;7<br>1.2.4& ;& ;SSH的配置& ;8<br>1.2.5& ;& ;单机模式下Hadoop的安装& ;11<br>1.2.6& ;& ;伪分布式模式下Hadoop的安装& ;11<br>1.2.7& ;& ;分布式模式下Hadoop的安装& ;14<br>第2篇& ;& ;HDFS分布式文件系统及IO模型<br>第2章& ;& ;HDFS架构和分布式文件系统<br>2.1& ;& ;分布式文件系统概述& ;17<br>2.2& ;& ;HDFS的特点& ;17<br>2.3& ;& ;HDFS文件系统架构& ;18<br>2.4& ;& ;Hadoop的抽象文件系统模型& ;19<br>2.4.1& ;& ;FileSystem抽象文件系统& ;19<br>2.4.2& ;& ;FileStatus文件状态信息& ;34<br>2.4.3& ;& ;FsPermission文件或目录的操作权限& ;34<br>2.4.4& ;& ;FileSystem的实现类& ;37<br>2.4.5& ;& ;FileSystem的输入流& ;53<br>2.4.6& ;& ;FileSystem的输出流& ;60<br>2.5& ;& ;小结& ;61<br>第3章& ;& ;Hadoop分布式文件系统HDFS的具体实现<br>3.1& ;& ;DistributedFileSystem分布式文件系统& ;62<br>3.2& ;& ;DFSClient& ;HDFS客户端& ;68<br>3.3& ;& ;小结& ;109<br>第4章& ;& ;NameNode的实现<br>4.1& ;& ;INode抽象类& ;110<br>4.2& ;& ;INodeDirectory目录& ;113<br>4.3& ;& ;INodeFile文件& ;116<br>4.4& ;& ;FSDirectory文件系统目录& ;119<br>4.5& ;& ;FSEditLog文件系统的编辑日志& ;127<br>4.6& ;& ;FSImage文件系统镜像& ;153<br>4.7& ;& ;Host2NodesMap主机到DataNode的映射& ;183<br>4.8& ;& ;NetworkTopology网络拓扑结构& ;187<br>4.9& ;& ;HostsFileReader主机文件读取器& ;196<br>4.10& ;& ;BlocksMap& ;数据块到其元数据的映射& ;198<br>4.11& ;& ;FSNamesystem& ;HDFS文件系统的命名空间& ;201<br>4.12& ;& ;NameNode名称结点& ;219<br>4.13& ;& ;小结& ;230<br>第5章& ;& ;Datanode的实现<br>5.1& ;& ;Block数据块& ;232<br>5.2& ;& ;DatanodeID类& ;232<br>5.3& ;& ;DatanodeInfo类& ;233<br>5.4& ;& ;BlockSender数据块发送器& ;235<br>5.5& ;& ;BlockReceiver数据块接收器& ;240<br>5.6& ;& ;DataBlockScanner数据块扫描器& ;246<br>5.7& ;& ;FSDataset& ;Datanode数据集合& ;253<br>5.8& ;& ;DataXceiverServer& ;266<br>5.9& ;& ;DataXceiver& ;267<br>5.10& ;& ;Datanode类& ;271<br>5.11& ;& ;小结& ;282<br>第6章& ;& ;Hadoop的IO<br>6.1& ;& ;数据类型接口& ;283<br>6.1.1& ;& ;Writable接口& ;283<br>6.1.2& ;& ;Comparable接口& ;283<br>6.1.3& ;& ;WritableComparable接口& ;284<br>6.1.4& ;& ;RawComparator比较器接口& ;284<br>6.1.5& ;& ;WritableComparator接口& ;285<br>6.2& ;& ;基本数据类型& ;287<br>6.2.1& ;& ;IntWritable整型类型& ;287<br>6.2.2& ;& ;Text文本类型& ;288<br>6.2.3& ;& ;NullWritable类& ;292<br>6.2.4& ;& ;ObjectWritable类& ;292<br>6.3& ;& ;文件类型& ;293<br>6.3.1& ;& ;SequenceFile序列文件& ;293<br>6.3.2& ;& ;MapFile映射文件& ;304<br>6.4& ;& ;小结& ;312<br>第3篇& ;& ;MapReduce计算框架及RPC通信模型<br>第7章& ;& ;MapReduce的输入和输出<br>7.1& ;& ;输入格式InputFormat& ;313<br>7.1.1& ;& ;InputFormat抽象类& ;313<br>7.1.2& ;& ;FileInputFormat文件输入格式& ;315<br>7.1.3& ;& ;TextInputFormat文本文件输入格式& ;317<br>7.1.4& ;& ;KeyValueTextInputFormat键值对文件输入格式& ;317<br>7.1.5& ;& ;CombineFileInputFormat组合文件输入格式& ;317<br>7.1.6& ;& ;SequenceFileInputFormat序列文件输入格式& ;319<br>7.1.7& ;& ;DBInputFormat数据库输入格式& ;320<br>7.1.8& ;& ;MultipleInputs多种输入格式& ;322<br>7.1.9& ;& ;DelegatingInputFormat授权输入格式& ;324<br>7.2& ;& ;输入分片InputSplit& ;326<br>7.2.1& ;& ;FileSplit文件输入分片& ;326<br>7.2.2& ;& ;CombineFileSplit多文件输入分片& ;327<br>7.2.3& ;& ;DBInputSplit数据库输入分片& ;328<br>7.3& ;& ;记录读取器RecordReader& ;328<br>7.3.1& ;& ;LineRecordReader行记录读取器& ;330<br>7.3.2& ;& ;KeyValueLineRecordReader键值对记录读取器& ;332<br>7.3.3& ;& ;CombineFileRecordReader组合文件记录读取器& ;332<br>7.3.4& ;& ;SequenceFileRecordReader序列文件记录读取器& ;333<br>7.3.5& ;& ;SequenceFileAsTextRecordReader和SequenceFileAsBinaryRecordReader& ;334<br>7.3.6& ;& ;DBRecordReader数据库记录读取器& ;334<br>7.4& ;& ;输出格式OutputFormat& ;335<br>7.4.1& ;& ;OutputFormat抽象类& ;335<br>7.4.2& ;& ;FileOutputFormat文件输出格式& ;337<br>7.4.3& ;& ;TextOutputFormat文本格式的文件输出格式& ;339<br>7.4.4& ;& ;SequenceFileOutputFormat普通序列文件输出格式& ;340<br>7.4.5& ;& ;SequenceFileAsBinaryOutputFormat二进制序列文件输出格式& ;340<br>7.4.6& ;& ;FilterOutputFormat过滤器输出格式& ;341<br>7.4.7& ;& ;DBOutputFormat数据库输出格式& ;341<br>7.4.8& ;& ;MultipleOutputs多种输出格式& ;342<br>7.5& ;& ;记录写入器RecordWriter& ;344<br>7.5.1& ;& ;DBRecordWriter数据库记录写入器& ;345<br>7.5.2& ;& ;FilterRecordWriter过滤器记录写入器& ;346<br>7.5.3& ;& ;LineRecordWriter& ;文本行记录写入器& ;346<br>7.6& ;& ;输出提交器OutputCommitter& ;347<br>7.6.1& ;& ;OutputCommitter输出提交器& ;348<br>7.6.2& ;& ;FileOutputCommitter文件输出提交器& ;348<br>7.7& ;& ;小结& ;351<br>第8章& ;& ;Hadoop中的Context和ID<br>8.1& ;& ;Hadoop运行过程中的Context上下文& ;352<br>8.1.1& ;& ;JobContext作业上下文& ;353<br>8.1.2& ;& ;Job作业& ;354<br>8.1.3& ;& ;TaskAttemptContext任务尝试上下文& ;358<br>8.1.4& ;& ;TaskInputOutputContext任务输入输出上下文& ;358<br>8.1.5& ;& ;MapContext& ;Mapper执行的上下文& ;360<br>8.1.6& ;& ;ReduceContext& ;Reducer执行的上下文& ;360<br>8.2& ;& ;Hadoop运行过程中的ID类& ;364<br>8.2.1& ;& ;ID类& ;365<br>8.2.2& ;& ;JobID作业ID& ;365<br>8.2.3& ;& ;TaskID任务ID& ;367<br>8.2.4& ;& ;TaskAttemptID任务尝试ID& ;368<br>8.3& ;& ;小结& ;368<br>第9章& ;& ;Hadoop的计算模型MapReduce<br>9.1& ;& ;Map处理过程& ;369<br>9.1.1& ;& ;Mapper概述& ;369<br>9.1.2& ;& ;Mapper源代码分析& ;370<br>9.1.3& ;& ;InverseMapper反转Mapper& ;371<br>9.1.4& ;& ;TokenCounterMapper标记计数Mapper& ;372<br>9.1.5& ;& ;MultithreadedMapper多线程Mapper& ;372<br>9.1.6& ;& ;FieldSelectionMapper字段选择Mapper& ;375<br>9.1.7& ;& ;DelegatingMapper授权Mapper& ;376<br>9.2& ;& ;Reducer处理过程& ;376<br>9.2.1& ;& ;Reducer概述& ;376<br>9.2.2& ;& ;Reducer源代码& ;377<br>9.2.3& ;& ;IntSumReducer和LongSumReducer& ;378<br>9.2.4& ;& ;FieldSelectionReducer字段选择Reducer& ;379<br>9.3& ;& ;Partitioner分区处理过程& ;379<br>9.3.1& ;& ;Partitioner概述& ;379<br>9.3.2& ;& ;Partitioner源代码& ;380<br>9.3.3& ;& ;HashPartitioner& ;hash分区& ;380<br>9.3.4& ;& ;BinaryPartitioner二进制分区& ;380<br>9.3.5& ;& ;KeyFieldBasedPartitioner基于键字段的分区& ;382<br>9.3.6& ;& ;TotalOrderPartitioner全排序分区& ;383<br>9.4& ;& ;小结& ;387<br>第10章& ;& ;JobClient的执行过程分析<br>10.1& ;& ;MapReduce作业处理过程概述& ;388<br>10.1.1& ;& ;JobConf& ;MapReduce作业的配置信息& ;389<br>10.1.2& ;& ;JobSubmissionProtocol作业提交的接口& ;392<br>10.1.3& ;& ;RunningJob正在运行的Job作业的接口& ;394<br>10.1.4& ;& ;JobStatus和JobProfile作业状态信息和注册信息& ;396<br>10.1.5& ;& ;JobSubmissionFiles& ;获得作业提交的文件& ;399<br>10.2& ;& ;JobClient提交作业流程& ;401<br>10.3& ;& ;JobClient& ;提交Job的客户端& ;401<br>10.4& ;& ;小结& ;412<br>第11章& ;& ;JobTracker的执行过程分析<br>11.1& ;& ;JobTracker处理过程概述& ;413<br>11.2& ;& ;JobInfo作业信息& ;413<br>11.3& ;& ;Counters计数器& ;414<br>11.4& ;& ;Queue& ;Job队列对象& ;417<br>11.5& ;& ;QueueManager& ;Job队列管理对象& ;418<br>11.6& ;& ;JobInProgress正在处理的作业& ;420<br>11.7& ;& ;JobTracker对JobClient提交的作业的处理& ;437<br>11.8& ;& ;JobTracker的启动以及Job的初始化& ;441<br>11.9& ;& ;JobTracker的其他源代码分析& ;445<br>11.10& ;& ;JobTracker中的作业恢复管理器RecoveryManager& ;459<br>11.11& ;& ;JobInProgressListener和JobQueueJobInProgressListener& ;465<br>11.12& ;& ;小结& ;467<br>第12章& ;& ;Hadoop的作业调度器<br>12.1& ;& ;Hadoop作业调度器概述& ;468<br>12.2& ;& ;TaskScheduler调度器的抽象父类& ;469<br>12.3& ;& ;JobQueueTaskScheduler& ;FIFO调度器& ;470<br>12.4& ;& ;LimitTasksPerJobTaskScheduler任务数限制FIFO调度器& ;475<br>12.5& ;& ;CapacityTaskScheduler计算能力调度器& ;477<br>12.6& ;& ;FairScheduler公平调度器& ;488<br>12.7& ;& ;小结& ;504<br>第13章& ;& ;TaskTracker的执行过程<br>13.1& ;& ;TaskTracker的启动& ;505<br>13.2& ;& ;TaskTracker与JobTracker进行通信的组件InterTrackerProtocol& ;509<br>13.3& ;& ;JobTracker返回给TaskTracker的Action的类型& ;511<br>13.4& ;& ;TaskTracker向JobTracker发送心跳的过程& ;512<br>13.5& ;& ;TaskTracker的任务处理过程& ;521<br>13.6& ;& ;TaskTracker的其他源代码分析& ;526<br>13.7& ;& ;TaskStatus任务的状态信息& ;544<br>13.8& ;& ;TaskInProgress正在处理的任务& ;548<br>13.9& ;& ;Task所有任务的父类& ;555<br>13.10& ;& ;MapTask执行过程概述& ;566<br>13.11& ;& ;MapOutputBuffer& ;Map输出缓冲区& ;568<br>13.12& ;& ;ReduceTask执行过程概述& ;585<br>13.13& ;& ;ReduceCopier& ;Reduce的Copy和Merge执行工具& ;591<br>13.14& ;& ;小结& ;612<br>第14章& ;& ;Hadoop的RPC协议<br>14.1& ;& ;Hadoop& ;RPC概念概述& ;613<br>14.2& ;& ;RPC协议接口& ;614<br>14.2.1& ;& ;ClientDatanodeProtocol客户端与DataNode进行通信的协议& ;614<br>14.2.2& ;& ;ClientProtocol客户端和NameNode进行通信的协议& ;615<br>14.2.3& ;& ;DatanodeProtocol& ;DataNode与NameNode进行通信的协议& ;617<br>14.2.4& ;& ;InterDatanodeProtocol& ;DataNode之间进行通信的协议& ;618<br>14.2.5& ;& ;NamenodeProtocol& ;SecondaryNameNode与NameNode进行通信的协议& ;619<br>14.2.6& ;& ;InterTrackerProtocol& ;TaskTracker与JobTracker进行通信的协议& ;619<br>14.2.7& ;& ;JobSubmissionProtocol& ;JobClient与JobTracker进行通信的协议& ;620<br>14.2.8& ;& ;TaskUmbilicalProtocol& ;Child进程与TaskTracker父进程进行通信的协议& ;622<br>14.3& ;& ;RPC的客户端和服务器端的实现& ;623<br>14.3.1& ;& ;Client客户端& ;623<br>14.3.2& ;& ;Server服务端& ;631<br>14.4& ;& ;小结& ;644
深入云计算:Hadoop源代码分析(修订版)pdf