Yarn概述?
Yarn
是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而mapreduce
等运算程序则相当于运行于操作系统之上的应用程序
Yarn的重要概念
1
)yarn
并不清楚用户提交的程序的运行机制
2
)yarn
只提供运算资源的调度(用户程序向yarn
申请资源,yarn
就负责分配资源)
3
)yarn
中的主管角色叫ResourceManager
4
)yarn
中具体提供运算资源的角色叫NodeManager
5
)这样一来,yarn
其实就与运行的用户程序完全解耦,就意味着yarn
上可以运行各种类型的分布式运算程序(mapreduce
只是其中的一种),比如mapreduce
、storm
程序,spark
程序……
6
)所以,spark
、storm
等运算框架都可以整合在yarn
上运行,只要他们各自的框架中有符合yarn
规范的资源请求机制即可
7
)Yarn
就成为一个通用的资源调度平台,从此,企业中以前存在的各种运算集群都可以整合在一个物理集群上,提高资源利用率,方便数据共享
Yarn工作机制
2
)工作机制详解
(0
)Mr
程序提交到客户端所在的节点
(1
)yarnrunner
向Resourcemanager
申请一个application
。
(2
)rm
将该应用程序的资源路径返回给yarnrunner
(3
)该程序将运行所需资源提交到HDFS
上
(4
)程序资源提交完毕后,申请运行mrAppMaster
(5
)RM
将用户的请求初始化成一个task
(6
)其中一个NodeManager
领取到task
任务。
(7
)该NodeManager
创建容器Container
,并产生MRAppmaster
(8
)Container
从HDFS
上拷贝资源到本地
(9
)MRAppmaster
向RM
申请运行maptask
容器
(10
)RM
将运行maptask
任务分配给另外两个NodeManager
,另两个NodeManager
分别领取任务并创建容器。
(11
)MR
向两个接收到任务的NodeManager
发送程序启动脚本,这两个NodeManager
分别启动maptask
,maptask
对数据分区排序。
(12
)MRAppmaster
向RM
申请2
个容器,运行reduce task
。
(13
)reduce task
向maptask
获取相应分区的数据。
(14
)程序运行完毕后,MR
会向RM
注销自己。