Yarn起源
Yarn是Hadoop的子项目,为分离Hadoop2.0资源管理和计算组件而引入
Yarn具有足够的通用性,可以支持其他的分布式计算模式
Yarn架构模式
ResourceManager(RM)
- RM是Yarn中主的角色
- RM是一个全局的资源管理器,集群只有一个active对外提供服务
负责整个系统的资源管理和分配
监控NM资源分配与调度
处理客户端请求
启动/监控ASM - 两个组件构成:调度器(Scheduler)和应用程序管理器(Applications Manager ASM)
- 调度器(Scheduler)
纯调度器,根据队列、容量等限制条件,将系统中的资源分配到各个正在运行的应用程序 应用程序管理器(Applications Manager ASM)
负责管理整个系统中所有的应用程序;接收Job的提交请求,为应用分配Container来运行ApplicationMasterNodeManager(NM)
NM是Yarn中slave的角色
- 向RM注册并汇报资源情况(磁盘、内存、cpu等),通过心跳汇报
- 接收及处理来自RM的命令请求,分配容器给应用的某个任务
- 监控本节点的资源使用情况和各个Container的运行状态
调度器(Scheduler)
FIFO调度器
容量调度器(Capacity)
公平调度器(Fair)
MR ON Yarn执行流程
- MapReduce client负责切片清单、配置、jar、上传到HDFS,访问ResourceManager申请AppMaster
- ResourceManager选择空闲节点通知NodeManager启动一个Container,反射MapReduce AppMaster
- 启动MapReduce AppMaster,从HDFS下载切片清单,向ResourceManager申请资源
- ResourceManager根据掌握的资源情况得到一个确定的清单,通知NodeManager启动Container
- Container启动后反向注册到已经启动的MapReduce AppMaster进程
- MapReduce AppMaster(曾今的JobTracker阉割版不带资源管理)最终将任务Task发送给Container(消息)
- Container会反射相应的Task类为对象,调用执行方法,即执行业务逻辑代码
- 计算框架都会有Task失败重试机制
1.x PK 2.x
1.x JobTracker和TaskTracker 是MapReduce常服务,2.x之后这些都变成临时服务,用完即删