客户端向yarn提交MR作业流程简述

时间:2022-01-16 23:09:14

这里简述一下客户端向yarn提交MR作业是,yarn是如何进行调度,同时会有哪些进程(windos下为线程)协调工作。

1、yarn简述

yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式操作系统平台,而mapreduce等运算程序则相当于运行与操作系统之上的应用程序。yarn在hadoop2.x系列中被加入的资源管理器,取代hadoop1.x中的jobtracker,将资源管理与作业调度分离。


2、yarn的重要概念

2.1、yarn不需要清楚用户提交程序的运行机制。

2.2、yarn只负责提供运算资源(为运算程序提供一个容器,容器的资源由yarn负责分配)。

2.3、yarn的实现是主从关系,主动角色为ResourceManager、被动角色为NodeManager负责提供运算资源。

2.4、yarn与用户进程完全解耦,意味着yarn上可以运行各种类型的分布式运算程序,如mapreduce、storm、spark和tez等。所以通过yarn提供的接口同样可以实现自己的运算框架。

2.5、yarn是一个通用的资源调度平台,从此,生产中存在各种运算集群都可以整合在一个物理集群上,提高资源利用率,方便数据共享。


3、客户端向yarn提交mr作业流程

客户端向yarn提交MR作业流程简述


3.1、客户端提交作业申请

3.1.1、客户端向ResourceManager(后续简称RM)提交作业申请。

3.1.2、RM根据申请内容返回相关的信息(例如根据input的路径,返回对应的文件元数据,还有作业资源的提交路径)。

3.1.3、客户端根据RM返回的信息生成资源文件(job.split、job.xml、app.jar)并将资源文件提交至提交路径(一般存放在hdfs上)

3.14、资源文件提交完毕,向RM申请运行applicationMaster(后续简称AM)。


3.2、RM处理用户请求

3.2.1、RM将用户的请求打包为task,放置调度队列,根据当前yarn的调度模式进行调度YARN提供的三种任务调度策略:FIFO Scheduler,Capacity Scheduler 和 Fair Scheduler)。


3.3、NodeManager(后续简称NM)从队列中获取task。

3.3.1、创建contianer容器启动AM。

3.3.2、下载资源文件。


3.4、AM向RM申请运行mapTask容器,RM将请求再打包为task放置调度队列。

3.4.1、其它NM获取到task后会再创建contianer容器并下载资源文件,contianer中的mapTask任务由AM负责监控和调度。


3.5、AM向maptask发送程序启动命令。


3.6、contianer运行mapTask

3.6.1、当各节点mapTask运行完毕后,AM重复3.4的步骤(这次申请运行reduceTask)。


3.7、程序运行完成后,AM向RM注销自己。


4、总结

//to do


【来自@若泽大数据】