文章目录
一、Yarn是什么?
在现实生产环境中,大数据处理服务器众多(如下图所示),那么如果管理集群资源、如何给任务合理的分配资源就是个问题,Yarn
的作用就是解决这些问题
Yarn
是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce
等运算程序则相当于运行于操作系统之上的应用程序
二、Yarn基础架构
Yarn
主要由ResourceManager
、NodeManager
、ApplicationMaster
、Container
等组件组成:
ResourceManager(RM)
:相当于集群的老大,负责处理客户端的请求,如果有任务进来,它负责分配NodeManager
、并监控NodeManager
,启动和监控ApplicationMaster
,负责资源的分配与调度NodeManager(NM)
:它管理单个节点上的资源,处理来自RM
的命令,处理ApplicationMaster
的命令ApplicationMaster(AM)
:为MapReduce
计算程序申请资源并分配给内部的任务,同时负责任务的监控与容错Container
:是Yarn
种资源的抽象,它在某个节点种启动,就像一个服务器中的一个虚拟机,封装了某个节点上的多维度资源,比如内存、CPU、磁盘、网络等
三、Yarn工作机制
如上图所示,下面是Yarn
工作机制刨析:
- 当
MR
程序提交到客户端所在节点,它会启动YarnRunner
,向RM
申请一个Application
RM
接收请求并返回一个资源提交路径
,该程序将运行所需资源提交到HDFS
上- 程序资源提交完毕之后,申请运行
mrAppMaster
RM
会首先把用户的请求初始化为一个Task
,这个Task
会进入一个调度队列- 其中一个
NodeManager
领取Task
任务 - 该
NodeManager
创建容器Container
,并产生MRAppMaster
Container
从HDFS
上拷贝资源到本地MRAppmaster
向RM
申请运行MapTask
资源RM
将运行MapTask
任务分配给另外两个NodeManager
,这两个NodeManager
分别领取任务并创建容器MR
向两个接收到任务的NodeManager
发送程序启动脚本,这两个NodeManager
分别启动MapTask
,MaspTask
对数据分区排序MrAppMaster
等待所有MapTask
运行完毕后,向RM
申请容器,运行ReduceTask
ReducerTask
向MapTask
获取相应分区的数据- 程序运行完毕后,
MR
向RM
申请注销自己
四、Yarn作业提交全过程
1、HDFS、YARN、MapReduce三者关系
HDFS
负责文件的上传,读取等工作MapReduce
负责运算,对大数据进行处理Yarn
负责调度一切,分配资源等