0 概念
对整个集群中的所有节点的软件和硬件资源进行管理和协调,相当于一个分布式操作系统。MR相当于运行在这个操作系统上的应用程序。
分布式环境下,跨机器的网络通信,YARN底层通过RPC协议通信
1 Yarn组成
ResourceManager(RM) HDFS相当于NM
·资源分配与调度,集群的全局管理者。对NodeManager、ApplicationMaster监控
NodeManager(NM) HDFS相当于DM
·单节点资源管理者,每个DataNode上都有
ApplicationMaster(AM)
·应用程序(我们自己写好的代码)管理者,从软件的角度进行资源分配。任务的监控与容错
Container容器
·是YARN资源的抽象的概念,封装了某个节点上的硬件资源,如:内存、CPU、磁盘等
2 Yarn工作流程
1)客户端向ResourceManager申请任务
2)MR响应,返回提交路径
3)提交Job
·Job.split 控制MR个数
·Job.xml 控制job的参数
·wc.jar 程序代码
4)申请运行mrAppMaster
5)RM生成TASK进入调度队列
6)空闲的NodeManager领取任务,创建容器,读取
7)APPmaster申请MAP、Rduce任务,RM生成新的TASK
8)APPmaster向RM注销任务
3 Yarn调度器(3种)
特性:
3.1 容量调度器Capacity Scheduler
容量调度器是Yarn默认的作业调度方式,由Yahoo开发。
3.1.1 多队列:每个队列可配置一定的资源量,队列可采用FIFO/DRF策略,队列内可以运行多任务。
DRF策略:
Yarn资源分配默认只考虑内存。DRF策略是当任务来时,判断其CPU、IO、网络等因素,统一考虑分配任务资源。
3.1.2 多用户:为防止同一个用户的Job独占队列资源,该调度器会对同一用户提交的作业所占资源量进行限定。
3.1.3 容量保证:可为每个队列设置资源最低运行率,和资源使用上限
3.1.4 灵活性:如果一个队列中的资源有剩余,可以暂时共享给那些需要资源的队列,而一旦该队列有新的应用程序提交,则其他队列借调的资源会归还给该队列。
3.1.5 分配特性(队列、作业、容器)
资源:深度优先算法,资源占用率最低的队列优先
作业:FIFO默认时间,可设置优先级
容器:本地性原则
3.2 公平调度器Fair Scheduler
公平调度器是一种多用户调度器,由Facebook开发。
同队列所有任务共享资源,与容量调度器的灵活性、多用户、资源保证相同
不同点
在时间尺度上,所有作业获得公平的资源。
某一时刻一个作业应获资源和实际获取资源的差距叫“缺额”,调度器会优先为缺额大的作业分配资源。
新来的任务,进入缺额小的队列。
3.3 先进先出调度器FIFO
略