Hadoop技术内幕:深入解析YARN架构设计与实现原理作者:董西成 著出版时间:2014年版内容简介 《Hadoop技术内幕:深入解析YARN架构设计与实现原理》是“Hadoop技术内幕”系列的第3本书,前面两本分别对Common、HDFS和MapReduce进行了深入分析和讲解,赢得了极好的口碑,Hadoop领域几乎人手一册,本书则对YARN展开了深入的探讨,是首部关于YARN的专著。仍然由资深Hadoop技术专家董西成执笔,根据最新的Hadoop 2.0版本撰写,权威社区ChinaHadoop鼎力推荐。《Hadoop技术内幕:深入解析YARN架构设计与实现原理》从应用角度系统讲解了YARN的基本库和组件用法、应用程序设计方法、YARN上流行的各种计算框架(MapReduce、Tez、Storm、Spark),以及多个类YARN的开源资源管理系统(Corona和Mesos);从源代码角度深入分析YARN的设计理念与基本架构、各个组件的实现原理,以及各种计算框架的实现细节。《Hadoop技术内幕:深入解析YARN架构设计与实现原理》共四部分13章:第一部分(第1~2章)主要介绍了如何获取、阅读和调试Hadoop的源代码,以及YARN的设计思想、基本架构和工作流程;第二部分(第3~7章)结合源代码详细剖析和讲解了YARN的第三方开源库、底层通信库、服务库、事件库的基本使用和实现细节,详细讲解了YARN的应用程序设计方法,深入讲解和分析了ResourceManager、资源调度器、NodeManager等组件的实现细节;第三篇(第8~10章)则对离线计算框架MapReduce、DAG计算框架Tez、实时计算框架Storm和内存计算框架Spark进行了详细的讲解;第四部分(第11~13章)首先对Facebook Corona和Apache Mesos进行了深入讲解,然后对YARN的发展趋势进行了展望。附录部分收录了YARN安装指南、YARN配置参数以及Hadoop Shell命令等非常有用的资料。目录前 言第一部分 准备篇第1章 环境准备1.1 准备学习环境1.1.1 基础软件下载1.1.2 如何准备Linux环境1.2 获取Hadoop源代码1.3 搭建Hadoop源代码阅读环境1.3.1 创建Hadoop工程1.3.2 Hadoop源代码阅读技巧1.4 Hadoop源代码组织结构1.5 Hadoop初体验1.5.1 搭建Hadoop环境1.5.2 Hadoop Shell介绍1.6 编译及调试Hadoop源代码1.6.1 编译Hadoop源代码1.6.2 调试Hadoop源代码1.7 小结第2章 YARN设计理念与基本架构2.1 YARN产生背景2.1.1 MRv1的局限性2.1.2 轻量级弹性计算平台2.2 Hadoop基础知识2.2.1 术语解释2.2.2 Hadoop版本变迁2.3 YARN基本设计思想2.3.1 基本框架对比2.3.2 编程模型对比2.4 YARN 基本架构2.4.1 YARN基本组成结构2.4.2 YARN通信协议2.5 YARN工作流程2.6 多角度理解YARN2.6.1 并行编程2.6.2 资源管理系统2.6.3 云计算2.7 本书涉及内容2.8 小结第二部分 YARN核心设计篇第3章 YARN基础库3.1 概述3.2 第三方开源库3.2.1 Protocol Buffers3.2.2 Apache Avro3.3 底层通信库3.3.1 RPC通信模型3.3.2 Hadoop RPC的特点概述3.3.3 RPC总体架构3.3.4 Hadoop RPC使用方法3.3.5 Hadoop RPC类详解3.3.6 Hadoop RPC参数调优3.3.7 YARN RPC实现3.3.8 YARN RPC应用实例3.4 服务库与事件库3.4.1 服务库3.4.2 事件库3.4.3 YARN服务库和事件库的使用方法3.4.4 事件驱动带来的变化3.5 状态机库3.5.1 YARN状态转换方式3.5.2 状态机类3.5.3 状态机的使用方法3.5.4 状态机可视化3.6 源代码阅读引导3.7 小结3.8 问题讨论第4章 YARN应用程序设计方法4.1 概述4.2 客户端设计4.2.1 客户端编写流程4.2.2 客户端编程库4.3 ApplicationMaster设计4.3.1 ApplicationMaster编写流程4.3.2 ApplicationMaster编程库4.4 YARN 应用程序实例4.4.1 DistributedShell4.4.2 Unmanaged AM4.5 源代码阅读引导4.6 小结4.7 问题讨论第5章 ResourceManager剖析5.1 概述5.1.1 ResourceManager基本职能5.1.2 ResourceManager内部架构5.1.3 ResourceManager事件与事件处理器5.2 用户交互模块5.2.1 ClientRMService5.2.2 AdminService5.3 ApplicationMaster管理5.4 NodeManager管理5.5 Application管理5.6 状态机管理5.6.1 RMApp状态机5.6.2 RMAppAttempt状态机5.6.3 RMContainer状态机5.6.4 RMNode状态机5.7 几个常见行为分析5.7.1 启动ApplicationMaster 5.7.2 申请与分配Container5.7.3 杀死Application5.7.4 Container超时5.7.5 ApplicationMaster超时5.7.6 NodeManager超时5.8 安全管理5.8.1 术语介绍5.8.2 Hadoop认证机制5.8.3 Hadoop授权机制5.9 容错机制5.9.1 Hadoop HA基本框架5.9.2 YARN HA实现 5.10 源代码阅读引导5.11 小结5.12 问题讨论第6章 资源调度器6.1 资源调度器背景6.2 HOD调度器6.2.1 Torque资源管理器6.2.2 HOD作业调度6.3 YARN资源调度器的基本架构6.3.1 基本架构6.3.2 资源表示模型6.3.3 资源调度模型6.3.4 资源抢占模型6.4 YARN层级队列管理机制6.4.1 层级队列管理机制6.4.2 队列命名规则6.5 Capacity Scheduler6.5.1 Capacity Scheduler的功能6.5.2 Capacity Scheduler实现6.6 Fair Scheduler6.6.1 Fair Scheduler功能介绍6.6.2 Fair Scheduler实现6.6.3 Fair Scheduler与Capacity Scheduler对比6.7 其他资源调度器介绍6.8 源代码阅读引导6.9 小结6.10 问题讨论第7章 NodeManager剖析7.1 概述7.1.1 NodeManager基本职能7.1.2 NodeManager内部架构7.1.3 NodeManager事件与事件处理器7.2 节点健康状况检测7.2.1 自定义Shell脚本7.2.2 检测磁盘损坏数目7.3 分布式缓存机制7.3.1 资源可见性与分类7.3.2 分布式缓存实现7.4 目录结构管理7.4.1 数据目录管理7.4.2 日志目录管理7.5 状态机管理7.5.1 Application状态机7.5.2 Container状态机7.5.3 LocalizedResource状态机7.6 Container生命周期剖析7.6.1 Container资源本地化7.6.2 Container运行7.6.3 Container资源清理7.7 资源隔离7.7.1 Cgroups介绍7.7.2 内存资源隔离7.7.3 CPU资源隔离7.8 源代码阅读引导7.9 小结7.10 问题讨论第三部分 计算框架篇第8章 离线计算框架MapReduce8.1 概述8.1.1 基本构成8.1.2 事件与事件处理器8.2 MapReduce客户端8.2.1 ApplicationClientProtocol协议8.2.2 MRClientProtocol协议8.3 MRAppMaster工作流程8.4 MR作业生命周期及相关状态机8.4.1 MR作业生命周期8.4.2 Job状态机8.4.3 Task状态机8.4.4 TaskAttempt状态机8.5 资源申请与再分配8.5.1 资源申请8.5.2 资源再分配8.6 Container启动与释放8.7 推测执行机制8.7.1 算法介绍8.7.2 推测执行相关类8.8 作业恢复8.9 数据处理引擎8.10 历史作业管理器8.11 MRv1与MRv2对比8.11.1 MRv1 On YARN8.11.2 MRv1与MRv2架构比较8.11.3 MRv1与MRv2编程接口兼容性8.12 源代码阅读引导8.13 小结8.14 问题讨论第9章 DAG计算框架Tez9.1 背景9.2 Tez数据处理引擎9.2.1 Tez编程模型9.2.2 Tez数据处理引擎9.3 DAG Master实现9.3.1 DAG编程模型9.3.2 MR到DAG转换9.3.3 DAGAppMaster9.4 优化机制9.4.1 当前YARN框架存在的问题9.4.2 Tez引入的优化技术9.5 Tez应用场景9.6 与其他系统比较9.7 小结第10章 实时/内存计算框架Storm/Spark10.1 Hadoop MapReduce的短板10.2 实时计算框架Storm 10.2.1 Storm编程模型10.2.2 Storm基本架构10.2.3 Storm On YARN10.3 内存计算框架Spark10.3.1 Spark编程模型10.3.2 Spark基本架构10.3.3 Spark On YARN10.3.4 Spark/Storm On YARN比较10.4 小结第四部分 高级篇第11章 Facebook Corona剖析11.1 概述11.1.1 Corona的基本架构11.1.2 Corona的RPC协议与序列化框架11.2 Corona设计特点11.2.1 推式网络通信模型11.2.2 基于Hadoop 0.20版本11.2.3 使用Thrift11.2.4 深度集成Fair Scheduler11.3 工作流程介绍11.3.1 作业提交11.3.2 资源申请与任务启动11.4 主要模块介绍11.4.1 ClusterManager11.4.2 CoronaJobTracker11.4.3 CoronaTaskTracker11.5 小结第12章 Apache Mesos剖析12.1 概述12.2 底层网络通信库12.2.1 libprocess基本架构12.2.2 一个简单示例12.3 Mesos服务12.3.1 SchedulerProcess12.3.2 Mesos Master 12.3.3 Mesos Slave 12.3.4 ExecutorProcess12.4 Mesos工作流程12.4.1 框架注册过程12.4.2 Framework Executor注册过程12.4.3 资源分配到任务运行过程12.4.4 任务启动过程12.4.5 任务状态更新过程12.5 Mesos资源分配策略12.5.1 Mesos资源分配框架12.5.2 Mesos资源分配算法12.6 Mesos容错机制12.6.1 Mesos Master容错12.6.2 Mesos Slave容错12.7 Mesos应用实例12.7.1 Hadoop On Mesos12.7.2 Storm On Mesos12.8 Mesos与YARN对比12.9 小结第13章 YARN总结与发展趋势13.1 资源管理系统设计动机13.2 资源管理系统架构演化13.2.1 集中式架构13.2.2 双层调度架构13.2.3 共享状态架构13.3 YARN发展趋势 13.3.1 YARN自身的完善13.3.2 以YARN为核心的生态系统13.3.3 YARN周边工具的完善13.4 小结附录A YARN安装指南附录B YARN配置参数介绍附录C Hadoop Shell命令介绍附录D 参考资料 上一篇: 语义Web技术基础 下一篇: 3D打印及CAD建模实用教程