Yarn工作流程详解(review)

Yarn是一个资源管理系统,其主要组件包括ResourceManager负责全局调度,NodeManager管理节点资源,ApplicationManager处理作业提交,ResourceScheduler协调资源分配,Container是执行任务的基本单元。作业提交涉及client与ResourceManger交互,作业初始化由ApplicationMaster和Container启动,作业分配和任务运行阶段则涉及到ApplicationMaster与NodeManager的协作,直到所有任务完成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

yarn的组件及功能(个人理解,如有错误欢迎指出)

1、ResourceManager 的主要职责在于调度,即在竞争的应用程序之间分配系统中的可用资源。
2、NodeManger 负责管理每个计算机节点的资源调度。
3、ApplicationManger 负责管理某个job
4、ResourceSchedule负责协调集群中各个应用的资源分配,保证整个集群的运行效率。
5、Container执行某个作业的容器
6、ApplicationMaster 负责与ResourceManager协商资源,并和NodeManager协同来执行和监控Container

工作流程大致分为四个阶段:

作业提交阶段:
client提交job向ResourceManger申请一个job_id,
ResourceManger收到请求后返回job_id以及资源路径(staging-dir,位于hdfs的temp中)
client收到上述信息之后,上传jar包到ResourceManger指定的位置。
client发送完jar包之后向ResourceManger汇报提交成功,并发送执行作业请求,
ResourceManger随后开始创建一个ApplicationManger来管理这个Job

作业初始化阶段:
ApplicationManger将job添加到ResourceSchedule中
当轮到job执行的时候,ResourceSchedule会通知ApplicationManger有空闲的NodeManger分配出来执行任务,
ApplicationManger调用分配给他的NodeManger开辟一个Container(容器),并在容器中启动需要执行任务的ApplicationMaster
ApplicationMaster获取client提交的作业(jar包,staging-dir),并根据分片信息生成Task(map/reduce task)

作业分配阶段:
ApplicationMaster向ResourceManger申请运行资源,ResourceManger将任务分配给空闲的NodeManger,NodeManger创建执行Task的Container(容器)。

任务运行阶段
ApplicationMaster通知所有接受到任务的NodeManger启动计算
NodeManger启动任务计算
如果这一批任务计算完成后还有新的task需要计算,则再次向ResourceManger申请新的Container进行计算,直到所有task执行完成
所有任务执行完毕后ApplicationMaster会向ResouceManger申请注销自己

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值