《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.2Hadoop源代码阅读技巧
- 1.4Hadoop源代码组织结构
- 1.5Hadoop初体验
- 1.5.1搭建Hadoop环境
- 1.5.2Hadoop Shell介绍
- 1.6编译及调试Hadoop源代码
- 1.6.1编译Hadoop源代码
- 1.6.2调试Hadoop源代码
- 1.7小结
- 第2章YARN设计理念与基本架构
- 2.1YARN产生背景
- 2.1.1MRv1的局限性
- 2.1.2轻量级弹性计算平台
- 2.2Hadoop基础知识
- 2.2.1术语解释
- 2.2.2Hadoop版本变迁
- 2.3YARN基本设计思想
- 2.3.1基本框架对比
- 2.3.2编程模型对比
- 2.4YARN 基本架构
- 2.4.1YARN基本组成结构
- 2.4.2YARN通信协议
- 2.5YARN工作流程
- 2.6多角度理解YARN
- 2.6.1并行编程
- 2.6.2资源管理系统
- 2.6.3云计算
- 2.7本书涉及内容
- 2.8小结
- 第二部分YARN核心设计篇
- 第3章YARN基础库
- 3.1概述
- 3.2第三方开源库
- 3.2.1Protocol Buffers
- 3.2.2Apache Avro
- 3.3底层通信库
- 3.3.1RPC通信模型
- 3.3.2Hadoop RPC的特点概述
- 3.3.3RPC总体架构
- 3.3.4Hadoop RPC使用方法
- 3.3.5Hadoop RPC类详解
- 3.3.6Hadoop RPC参数调优
- 3.3.7YARN RPC实现
- 3.3.8YARN RPC应用实例
- 3.4服务库与事件库
- 3.4.1服务库
- 3.4.2事件库
- 3.4.3YARN服务库和事件库的使用方法
- 3.4.4事件驱动带来的变化
- 3.5状态机库
- 3.5.1YARN状态转换方式
- 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.3ApplicationMaster设计
- 4.3.1ApplicationMaster编写流程
- 4.3.2ApplicationMaster编程库
- 4.4YARN 应用程序实例
- 4.4.1DistributedShell
- 4.4.2Unmanaged AM
- 4.5源代码阅读引导
- 4.6小结
- 4.7问题讨论
- 第5章ResourceManager剖析
- 5.1概述
- 5.1.1ResourceManager基本职能
- 5.1.2ResourceManager内部架构
- 5.1.3ResourceManager事件与事件处理器
- 5.2用户交互模块
- 5.2.1ClientRMService
- 5.2.2AdminService
- 5.3ApplicationMaster管理
- 5.4NodeManager管理
- 5.5Application管理
- 5.6状态机管理
- 5.6.1RMApp状态机
- 5.6.2RMAppAttempt状态机
- 5.6.3RMContainer状态机
- 5.6.4RMNode状态机
- 5.7几个常见行为分析
- 5.7.1启动ApplicationMaster
- 5.7.2申请与分配Container
- 5.7.3杀死Application
- 5.7.4Container超时
- 5.7.5ApplicationMaster超时
- 5.7.6NodeManager超时
- 5.8安全管理
- 5.8.1术语介绍
- 5.8.2Hadoop认证机制
- 5.8.3Hadoop授权机制
- 5.9容错机制
- 5.9.1Hadoop HA基本框架
- 5.9.2YARN HA实现
- 5.10源代码阅读引导
- 5.11小结
- 5.12问题讨论
- 第6章资源调度器
- 6.1资源调度器背景
- 6.2HOD调度器
- 6.2.1Torque资源管理器
- 6.2.2HOD作业调度
- 6.3YARN资源调度器的基本架构
- 6.3.1基本架构
- 6.3.2资源表示模型
- 6.3.3资源调度模型
- 6.3.4资源抢占模型
- 6.4YARN层级队列管理机制
- 6.4.1层级队列管理机制
- 6.4.2队列命名规则
- 6.5Capacity Scheduler
- 6.5.1Capacity Scheduler的功能
- 6.5.2Capacity Scheduler实现
- 6.6Fair Scheduler
- 6.6.1Fair Scheduler功能介绍
- 6.6.2Fair Scheduler实现
- 6.6.3Fair Scheduler与Capacity Scheduler对比
- 6.7其他资源调度器介绍
- 6.8源代码阅读引导
- 6.9小结
- 6.10问题讨论
- 第7章NodeManager剖析
- 7.1概述
- 7.1.1NodeManager基本职能
- 7.1.2NodeManager内部架构
- 7.1.3NodeManager事件与事件处理器
- 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.1Application状态机
- 7.5.2Container状态机
- 7.5.3LocalizedResource状态机
- 7.6Container生命周期剖析
- 7.6.1Container资源本地化
- 7.6.2Container运行
- 7.6.3Container资源清理
- 7.7资源隔离
- 7.7.1Cgroups介绍
- 7.7.2内存资源隔离
- 7.7.3CPU资源隔离
- 7.8源代码阅读引导
- 7.9小结
- 7.10问题讨论
- 第三部分计算框架篇
- 第8章离线计算框架MapReduce
- 8.1概述
- 8.1.1基本构成
- 8.1.2事件与事件处理器
- 8.2MapReduce客户端
- 8.2.1ApplicationClientProtocol协议
- 8.2.2MRClientProtocol协议
- 8.3MRAppMaster工作流程
- 8.4MR作业生命周期及相关状态机
- 8.4.1MR作业生命周期
- 8.4.2Job状态机
- 8.4.3Task状态机
- 8.4.4TaskAttempt状态机
- 8.5资源申请与再分配
- 8.5.1资源申请
- 8.5.2资源再分配
- 8.6Container启动与释放
- 8.7推测执行机制
- 8.7.1算法介绍
- 8.7.2推测执行相关类
- 8.8作业恢复
- 8.9数据处理引擎
- 8.10历史作业管理器
- 8.11MRv1与MRv2对比
- 8.11.1MRv1 On YARN
- 8.11.2MRv1与MRv2架构比较
- 8.11.3MRv1与MRv2编程接口兼容性
- 8.12源代码阅读引导
- 8.13小结
- 8.14问题讨论
- 第9章DAG计算框架Tez
- 9.1背景
- 9.2Tez数据处理引擎
- 9.2.1Tez编程模型
- 9.2.2Tez数据处理引擎
- 9.3DAG Master实现
- 9.3.1DAG编程模型
- 9.3.2MR到DAG转换
- 9.3.3DAGAppMaster
- 9.4优化机制
- 9.4.1当前YARN框架存在的问题
- 9.4.2Tez引入的优化技术
- 9.5Tez应用场景
- 9.6与其他系统比较
- 9.7小结
- 第10章实时/内存计算框架Storm/Spark
- 10.1Hadoop MapReduce的短板
- 10.2实时计算框架Storm
- 10.2.1Storm编程模型
- 10.2.2Storm基本架构
- 10.2.3Storm On YARN
- 10.3内存计算框架Spark
- 10.3.1Spark编程模型
- 10.3.2Spark基本架构
- 10.3.3Spark On YARN
- 10.3.4Spark/Storm On YARN比较
- 10.4小结
- 第四部分高级篇
- 第11章Facebook Corona剖析
- 11.1概述
- 11.1.1Corona的基本架构
- 11.1.2Corona的RPC协议与序列化框架
- 11.2Corona设计特点
- 11.2.1推式网络通信模型
- 11.2.2基于Hadoop 0.20版本
- 11.2.3使用Thrift
- 11.2.4深度集成Fair Scheduler
- 11.3工作流程介绍
- 11.3.1作业提交
- 11.3.2资源申请与任务启动
- 11.4主要模块介绍
- 11.4.1ClusterManager
- 11.4.2CoronaJobTracker
- 11.4.3CoronaTaskTracker
- 11.5小结
- 第12章Apache Mesos剖析
- 12.1概述
- 12.2底层网络通信库
- 12.2.1libprocess基本架构
- 12.2.2一个简单示例
- 12.3Mesos服务
- 12.3.1SchedulerProcess
- 12.3.2Mesos Master
- 12.3.3Mesos Slave
- 12.3.4ExecutorProcess
- 12.4Mesos工作流程
- 12.4.1框架注册过程
- 12.4.2Framework Executor注册过程
- 12.4.3资源分配到任务运行过程
- 12.4.4任务启动过程
- 12.4.5任务状态更新过程
- 12.5Mesos资源分配策略
- 12.5.1Mesos资源分配框架
- 12.5.2Mesos资源分配算法
- 12.6Mesos容错机制
- 12.6.1Mesos Master容错
- 12.6.2Mesos Slave容错
- 12.7Mesos应用实例
- 12.7.1Hadoop On Mesos
- 12.7.2Storm On Mesos
- 12.8Mesos与YARN对比
- 12.9小结
- 第13章YARN总结与发展趋势
- 13.1资源管理系统设计动机
- 13.2资源管理系统架构演化
- 13.2.1集中式架构
- 13.2.2双层调度架构
- 13.2.3共享状态架构
- 13.3YARN发展趋势
- 13.3.1YARN自身的完善
- 13.3.2以YARN为核心的生态系统
- 13.3.3YARN周边工具的完善
- 13.4小结
- 附录AYARN安装指南
- 附录BYARN配置参数介绍
- 附录CHadoop Shell命令介绍
-
附录D参考资料