Hadoop技术内幕:深入解析MapReduce架构设计与实现原理作者:董西成 著出版时间:2013年版内容简介 “Hadoop技术内幕”共两册,分别从源代码的角度对“Common+HDFS”和“MapReduce的架构设计和实现原理”进行了极为详细的分析。本书由Hadoop领域资深的实践者亲自执笔,首先介绍了MapReduce的设计理念和编程模型,然后从源代码的角度深入分析了RPC框架、客户端、JobTracker、TaskTracker和Task等MapReduce运行时环境的架构设计与实现原理,最后从实际应用的角度深入讲解了Hadoop的性能优化、安全机制、多用户作业调度器和下一代MapReduce框架等高级主题和内容。本书适合Hadoop的二次开发人员、应用开发工程师、运维工程师阅读。本书共12章,分4个部分(不包括附录):第一部分(第1~2章),介绍了Hadoop源代码的组织结构、获取、编译、调试、阅读环境搭建,以及MapReduce的设计理念和基本架构;第二部分(第3章),着重讲解了MapReduce的编程接口,主要包括旧API和新API两套编程接口,以及Hadoop工作流;第三部分(第4~8章)主要分析了MapReduce的运行时环境,包括RPC框架、客户端、JobTracker、TaskTracker和Task等的内部实现细节和机制剖析;第四部分(第9~12章)深入讲解了Hadoop的性能优化、多用户作业调度器、安全机制和下一代MapReduce框架等高级主题。目录前 言第一部分 基础篇第1章 阅读源代码前的准备/ 21.1 准备源代码学习环境/ 21.1.1 基础软件下载/ 21.1.2 如何准备Windows环境/ 31.1.3 如何准备Linux环境/ 61.2 获取Hadoop源代码/ 71.3 搭建Hadoop源代码阅读环境/ 81.3.1 创建Hadoop工程/ 81.3.2 Hadoop源代码阅读技巧/ 91.4 Hadoop源代码组织结构/ 101.5 Hadoop初体验/ 131.5.1 启动Hadoop/ 131.5.2 Hadoop Shell介绍/ 151.5.3 Hadoop Eclipse插件介绍/ 151.6 编译及调试Hadoop源代码/ 191.6.1 编译Hadoop源代码/ 191.6.2 调试Hadoop源代码/ 201.7 小结/ 23第2章 MapReduce设计理念与基本架构/ 242.1 Hadoop发展史/ 242.1.1 Hadoop产生背景/ 242.1.2 Apache Hadoop新版本的特性/ 252.1.3 Hadoop版本变迁/ 262.2 Hadoop MapReduce设计目标/ 282.3 MapReduce编程模型概述/ 292.3.1 MapReduce编程模型简介/ 292.3.2 MapReduce编程实例/ 312.4 Hadoop基本架构/ 322.4.1 HDFS架构/ 332.4.2 Hadoop MapReduce架构/ 342.5 Hadoop MapReduce作业的生命周期/ 362.6 小结/ 38第二部分 MapReduce编程模型篇第3章 MapReduce编程模型/ 403.1 MapReduce编程模型概述/ 403.1.1 MapReduce编程接口体系结构/ 403.1.2 新旧MapReduce API比较/ 413.2 MapReduce API基本概念/ 423.2.1 序列化/ 423.2.2 Reporter参数/ 433.2.3 回调机制/ 433.3 Java API解析/ 443.3.1 作业配置与提交/ 443.3.2 InputFormat接口的设计与实现/ 483.3.3 OutputFormat接口的设计与实现/ 533.3.4 Mapper与Reducer解析/ 553.3.5 Partitioner接口的设计与实现/ 593.4 非Java API解析/ 613.4.1 Hadoop Streaming的实现原理/ 613.4.2 Hadoop Pipes的实现原理/ 643.5 Hadoop工作流/ 673.5.1 JobControl的实现原理/ 673.5.2 ChainMapper/ChainReducer的实现原理/ 693.5.3 Hadoop工作流引擎/ 713.6 小结/ 73第三部分 MapReduce核心设计篇第4章 Hadoop RPC框架解析/ 764.1 Hadoop RPC框架概述/ 764.2 Java基础知识/ 774.2.1 Java反射机制与动态代理/ 784.2.2 Java网络编程/ 804.2.3 Java NIO/ 824.3 Hadoop RPC基本框架分析/ 894.3.1 RPC基本概念/ 894.3.2 Hadoop RPC基本框架/ 914.3.3 集成其他开源RPC框架/ 984.4 MapReduce通信协议分析/ 1004.4.1 MapReduce 通信协议概述/ 1004.4.2 JobSubmissionProtocol通信协议/ 1024.4.3 InterTrackerProtocol通信协议/ 1024.4.4 TaskUmbilicalProtocol通信协议/ 1034.4.5 其他通信协议/ 1044.5 小结/ 106第5章 作业提交与初始化过程分析/ 1075.1 作业提交与初始化概述/ 1075.2 作业提交过程详解/ 1085.2.1 执行Shell命令/ 1085.2.2 作业文件上传/ 1095.2.3 产生InputSplit文件/ 1115.2.4 作业提交到JobTracker/ 1135.3 作业初始化过程详解/ 1155.4 Hadoop DistributedCache原理分析/ 1175.4.1 使用方法介绍/ 1185.4.2 工作原理分析/ 1205.5 小结/ 122第6章 JobTracker内部实现剖析/ 1236.1 JobTracker概述/ 1236.2 JobTracker启动过程分析/ 1256.2.1 JobTracker启动过程概述/ 1256.2.2 重要对象初始化/ 1256.2.3 各种线程功能/ 1286.2.4 作业恢复/ 1296.3 心跳接收与应答/ 1296.3.1 更新状态/ 1316.3.2 下达命令/ 1316.4 Job和Task运行时信息维护/ 1346.4.1 作业描述模型/ 1346.4.2 JobInProgress/ 1366.4.3 TaskInProgress/ 1376.4.4 作业和任务状态转换图/ 1396.5 容错机制/ 1416.5.1 JobTracker容错/ 1416.5.2 TaskTracker容错/ 1426.5.3 Job/Task容错/ 1456.5.4 Record容错/ 1476.5.5 磁盘容错/ 1516.6 任务推测执行原理/ 1526.6.1 计算模型假设/ 1536.6.2 1.0.0版本的算法/ 1536.6.3 0.21.0版本的算法/ 1546.6.4 2.0版本的算法/ 1566.7 Hadoop资源管理/ 1576.7.1 任务调度框架分析/ 1596.7.2 任务选择策略分析/ 1626.7.3 FIFO调度器分析/ 1646.7.4 Hadoop资源管理优化/ 1656.8 小结/ 168第7章 TaskTracker内部实现剖析/ 1697.1 TaskTracker概述/ 1697.2 TaskTracker启动过程分析/ 1707.2.1 重要变量初始化/ 1717.2.2 重要对象初始化/ 1717.2.3 连接JobTracker/ 1727.3 心跳机制/ 1727.3.1 单次心跳发送/ 1727.3.2 状态发送/ 1757.3.3 命令执行/ 1787.4 TaskTracker行为分析/ 1797.4.1 启动新任务/ 1797.4.2 提交任务/ 1797.4.3 杀死任务/ 1817.4.4 杀死作业/ 1827.4.5 重新初始化/ 1847.5 作业目录管理/ 1847.6 启动新任务/ 1867.6.1 任务启动过程分析/ 1867.6.2 资源隔离机制/ 1937.7 小结/ 195第8章 Task运行过程分析/ 1968.1 Task运行过程概述/ 1968.2 基本数据结构和算法/ 1978.2.1 IFile存储格式/ 1978.2.2 排序/ 1988.2.3 Reporter/ 2018.3 Map Task内部实现/ 2048.3.1 Map Task整体流程/ 2048.3.2 Collect过程分析/ 2058.3.3 Spill过程分析/ 2138.3.4 Combine过程分析/ 2148.4 Reduce Task内部实现/ 2148.4.1 Reduce Task整体流程/ 2158.4.2 Shuffle和Merge阶段分析/ 2158.4.3 Sort和Reduce阶段分析/ 2188.5 Map/Reduce Task优化/ 2198.5.1 参数调优/ 2198.5.2 系统优化/ 2208.6 小结/ 224第四部分 MapReduce高级篇第9章 Hadoop性能调优/ 2289.1 概述/ 2289.2 从管理员角度进行调优/ 2299.2.1 硬件选择/ 2299.2.2 操作系统参数调优/ 2299.2.3 JVM参数调优/ 2309.2.4 Hadoop参数调优/ 2309.3 从用户角度进行调优/ 2359.3.1 应用程序编写规范/ 2359.3.2 作业级别参数调优/ 2359.3.3 任务级别参数调优/ 2399.4 小结/ 240第10章 Hadoop多用户作业调度器/ 24110.1 多用户调度器产生背景/ 24110.2 HOD/ 24210.2.1 Torque资源管理器/ 24210.2.2 HOD作业调度/ 24310.3 Hadoop队列管理机制/ 24510.4 Capacity Scheduler实现/ 24610.4.1 Capacity Scheduler功能介绍/ 24710.4.2 Capacity Scheduler实现/ 24910.4.3 多层队列调度/ 25410.5 Fair Scheduler实现/ 25510.5.1 Fair Scheduler功能介绍/ 25510.5.2 Fair Scheduler实现/ 25810.5.3 Fair Scheduler与Capacity Scheduler对比/ 26310.6 其他Hadoop调度器介绍/ 26410.7 小结/ 265第11章 Hadoop安全机制/ 26611.1 Hadoop安全机制概述/ 26611.1.1 Hadoop面临的安全问题/ 26611.1.2 Hadoop对安全方面的需求/ 26711.1.3 Hadoop安全设计基本原则/ 26711.2 基础知识/ 26811.2.1 安全认证机制/ 26811.2.2 Kerberos介绍/ 27011.3 Hadoop安全机制实现/ 27311.3.1 RPC/ 27311.3.2 HDFS/ 27611.3.3 MapReduce/ 27811.3.4 上层服务/ 28011.4 应用场景总结/ 28111.4.1 文件存取/ 28111.4.2 作业提交与运行/ 28211.4.3 上层中间件访问Hadoop/ 28211.5 小结/ 283第12章 下一代MapReduce框架/ 28412.1 第一代MapReduce框架的局限性/ 28412.2 下一代MapReduce框架概述/ 28412.2.1 基本设计思想/ 28412.2.2 资源统一管理平台/ 28612.3 Apache YARN/ 28712.3.1 Apache YARN基本框架/ 28712.3.2 Apache YARN工作流程/ 29012.3.3 Apache YARN设计细节/ 29112.3.4 MapReduce与YARN结合/ 29412.4 Facebook Corona / 29812.4.1 Facebook Corona基本框架/ 29812.4.2 Facebook Corona工作流程/ 30012.4.3 YARN与Corona对比/ 30312.5 Apache Mesos/ 30412.5.1 Apache Mesos基本框架/ 30412.5.2 Apache Mesos资源分配/ 30512.5.3 MapReduce与Mesos结合/ 30712.6 小结/ 309附录A 安装Hadoop过程中可能存在的问题及解决方案/ 310附录B Hadoop默认HTTP端口号以及HTTP地址/ 312参考资料/ 313 上一篇: 大数据分析:R基础及应用 下一篇: 数据流上频繁模式和高效用模式挖掘