Hadoop基础知识---之YARN原理简述
2016-07-28 17:21
274 查看
YARN原理简述
MapReduce的缺陷
多租户问题
多用户多编程模型
JobTracker/TaskTracker架构设计缺陷
JobTracker是集中处理点,单点故障JobTracker任务重,资源过度消耗
资源模型过于简单 --- TaskTracker以MR Task数作为资源,没有考虑CPU和内存
TaskTracker强制把资源分成map task slot和reduce taskslot ---资源利用率低
YARN的诞生
YARN的命名
Yet Another Resource Negotiator根本思想
将JobTracker功能分离:资源管理;任务调度/监控YARN设计目标
集群共享;可伸缩性;可靠性实现方式
分层的集群框架YARN架构
Resouce Manager
主要功能
负责紧张中所有资料的统一管理和分配接受各个节点(NodeManager)的资源汇报信息
把资源按照策略分配给各应用(ApplicationMaster)
组成部分
用户交互User ServiceNodeManager管理
ApplicationMaster管理
Application管理
安全管理
资源分配
NodeManager
主要功能
管理单个计算节点与ResourceManager保持通信
监控Container生命周期,管理资源使用。没有map slot和reduce slot概念,扩展更容易。
组成部分
–NodeStatusUpdater–ContainerManager(核心组件)
–ContainerExecutor
–NodeHealthCheckerService
–Security
–WebServer
ApplicationMaster
ApplicationMaster概念
JobTracker诸多问题,作业控制和资源管理分离,ApplicationMaster承担作业控制功能。YARN称为资源管理平台,适用于多种计算框架。
--MapReduce,流式计算,迭代式计算
--需要为每个应用开发一个ApplicationMaster组件
--YARN提供MapReduce的ApplicationMaster实现
实现方式
–使用基于事件驱动的异步编程模型,由中央事件调度器统一管理所有事件–每种组件是一种事件处理器,在中央调度器中注册
ApplicationMaster容错
–在HDFS记录task运行日志–分配新的节点运行ApplicationMaster
–切换后从HDFS读取日志,恢复运行完成的task
–没有运行完task重新申请资源和运行
Container
Container基本概念和工作流程
Container是YARN中资源的抽象,封装了某节点上一定量的资源(内存,CPU)由AM向RM申请,由RM中的资源调度器异步分配给AM
Container的运行由AM向资源所在的NM发起
两类Container
–运行AM•由RM申请和启动,用户提交应用程序时,指定AM所需的资源
–运行各类任务
•由AM向RM申请,并由AM与NM通信以启动
YARN的工作流程
用户将应用程序提交到RMRM为AM申请资源,与某个NM通信,启动AM
AM与RM通信,为执行任务申请资源
得到资源后与NM通信,启动相应的任务
所有任务结束后,AM向RM注销,整个应用结束
HadoopRPC的演变
Hadoop RPC在跨语言支持和协议兼容性两个方面存在不足
Hadoop RPC应允许某些协议的客户端或者服务器端采用其它语言实现当前Hadoop版本较多,而不同版本之间不能通信
为了解决以上几个问题,Hadoop YARN将RPC中的序列化部分剥离开,以便将现有的开源RPC框架集成进来
–RPC类变成了一个工厂,它将具体的RPC实现授权给RpcEngine实现类,而现有的开源RPC只要实现RpcEngine接口,便可以集成到HadoopRPC中YARN中的RPC协议
Yarn中的事件驱动与状态机
为了增大并发性,Yarn采用事件驱动的并发模型,将各种处理逻辑抽象成事件和调度器,将事件的处理过程用状态机表示什么是状态机
---如果一个对象,其构成为若干个状态,以及触发这些状态发送相互转移的事件,那么此对象称之为状态机。对于状态机模式,基本做法是
根据发生的时间和当前状态,来执行下一步的动作action,并设置下一个状态。ResourceScheduler
事件处理器,处理6种事件类型:
–NODE_REMOVED,移除计算节点–NODE_ADDED,增加计算节点
–APPLICATION_ADDED,RM收到新App
–APPLICATION_REMOVED,App运行结束
–CONTAINER_EXPIRED,一个AM在一定时间间隔内没有使用Container,会被scheduler收回
–NODE_UPDATE
•NM通过心跳向RM汇报Container情况,触发NODE_UPDATE事件,会引发资源分配
•调度器:FIFOScheduler、CapacityScheduler、FairScheduler
FIFO Scheduler
•最简单的调度器•只有一个队列
•先入先出
CapacityScheduler
最大化集群吞吐量
核心思想
--- 每个队列获得一定资源---空闲队列可以把资源“借”给忙队列
---需要时可以取回
调度策略
应该获得的资源/实际获得的资源,选择比值最低的队列队列内FIFO
考虑限制:用户最大资源限制,任务资源要求
资源分配模型
调度器维护多个队列信息用户向队列提交应用
NM心跳时,调度器根据规则选择队列和应用
本地优化与延迟调度
本地优化
HDFS具有3副本,在多个节点Container处理的数据在本地可以节省网络带宽
AM给RM提交资源申请时,发送本地申请 ---本地申请,匹配机架申请,任意申请
延迟调度
本地申请匹配失败,暂时跳过跳过次数有限,防止“饿死”
FairScheduler
•多用户公平共享集群资源
•作业池
–每个用户单独资源池
–作业放进共享资源池
–每个作业最低资源保障
•调度策略
–默认FIFO
–赤字策略
•deficti=理想情况下获得的资源-实际获得资源的差值
•优先分给最高deficit作业
YARN HA架构
YARN总结
改进部分
减少MapReduce的资源瓶颈,让监控task状态的程序分布式化,更安全,更优美。ApplicationMaster是可变更部分,可以针对不同的编程模型编写自己的ApplicationMaster,
让更多编程模型能够跑在Hadoop
–对资源的表示以内存和CPU为单位,比之前的slot数目更合理
–MRv1框架jobtracker监控job下的所有task,现在交给ApplicationMaster。ResourceManager监控所有ApplicationMaster ,如果出了问题在其他机器重启
–Container是Yarn作为资源隔离提出的框架,提供java虚拟机内存的隔离
相关文章推荐
- 详解HDFS Short Circuit Local Reads
- Hadoop_2.1.0 MapReduce序列图
- 使用Hadoop搭建现代电信企业架构
- 单机版搭建Hadoop环境图文教程详解
- hadoop常见错误以及处理方法详解
- hadoop 单机安装配置教程
- hadoop的hdfs文件操作实现上传文件到hdfs
- hadoop实现grep示例分享
- Apache Hadoop版本详解
- linux下搭建hadoop环境步骤分享
- hadoop client与datanode的通信协议分析
- Hadoop2.X/YARN环境搭建--CentOS7.0 JDK配置
- hadoop中一些常用的命令介绍
- Hadoop单机版和全分布式(集群)安装
- 用PHP和Shell写Hadoop的MapReduce程序
- hadoop map-reduce中的文件并发操作
- Hadoop1.2中配置伪分布式的实例
- Hadoop2.X/YARN环境搭建--CentOS7.0系统配置
- hadoop上传文件功能实例代码
- linux开机启动nodemanager步骤