Hadoop中job提交详细过程

1)客户端运行hadoop jar命令的时候,通过程序中的waitForCompletion(true),进行job的提交,jobPI等等,其中主要的一个工作就是和集群建立连接,会创建一个yarnRunner(实际上是创建resMgrDelegate)代理对象,这个对提交的时候会调用job.submit(),方法进行提交,此方法中会进行一系列的工作,比如确定job的状态,设置新的A象实际上是一个通信协议的对象。由这个对象去和RM通信。

2)客户端向RM(先请求RMRM再转向applicationsManager/ASM)申请运行一个mr程序,获取一个applicationId

3RM会返回给客户端一个applicationId和一个共享资源的路径,用于提交程序运行所需要的共享资源

4)客户端拿到共享资源的路径,就开始进行将相关资源写入到共享资源路径中,相关资源就包括程序运行所需要的jar包及其他文件(job.jar)、配置文件参数job.xml(统一写入这个配置文件中)、切片信息(job.split

5)写完之后客户端通过resMgrDelegate.submitApplication(appContext)方法向RM报告文件写入完毕,带着一个appContext的上下文并提交应用程序。

6Rm接收到请求后,将这个请求转给yarn的资源调度器schedule,调度器会初始化这个应用,并将此应用程序加入到调度队列中(默认为容量调度),因为可能同时有很多应用在执行,可能没有资源供当前的程序跑,等待分配资源

resourceManager包括两个组件:

1、调度器:负责调度任务执行的顺序,仅是调度的作用,不参与任何任务的执行

1FIFO先进先出调度器:先来的任务先执行,只有一个队列

2Capacity容量(计算能力)调度器:有多个队列,为每个队列分配不同的资源,每个队列遵循FIFOhadoop 2中默认的调度模型)

3Fair公平调度器:所有任务平分共享资源

2、任务管理器applicationsManagerASM):负责任务启动或停止或失败启动 

7)等到分配到相关资源之后就调度器会先给应用程序在一个nodemanager中分配一个容器(container),然后在容器中先启动程序的管理者,用于管理任务的运行进度和完成情况,这个管理者叫APP MASTER(主类是MRAppMaster)。

8MRappmaster会对作业进行初始化,初始化的过程中会创建多个簿记对象(作业簿),用来跟踪作业的完成。

9)接下来MRAppMaster会启动相应的maptask,但是不知道启动几个啊,也不知道每一个对应的数据切片信息,怎么办?这时候就会去先访问共享文件系统中,获取本作业的输入切片信息。会获取到本job中有几个maptaskreducetask。此时mrappmaster会首先进行一个决策,就是如果maptask的数量小于10个,而reducetask的数量只有1个,并且输入大小小于一个块的作业,就会选用和MRAppmaster同一个JVM中运行任务,因为此时在别的节点上重新启动容器和销毁容器的开销过大不划算,这种模式就是uber模式。然后MRAppMaster会对每一个分片创建一个maptask对象。

10)如果作业不适合作为uber模式运行,此时MRAppMater就会为maptaskreducetask任务向RM申请资源,先发送maptask的请求,再发送reducetask的请求。注意maptask有数据本地化的局限。优先数据本地化,其次机架本地化最后任意节点。请求返回相应的节点信息。

11RMMRappMaster返回资源信息,空闲的资源节点,MRAppmaster就会去相应的nodemanager节点上启动Container

12)之后会启动一个YarnChild进程用于执行maptask程序

13Maptask执行之前会首先去共享文件系统中下拷贝相应的文件,包括jar包、job.xml文件以及job.split分片信息等,下载到本地

14)启动相应的maptask任务

15maptask进行到80%的时候,MRAppmaster会去启动reduceTask,启动过程同上述过程

16)资源回收和销毁


 

 

 

 

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值