天天看点

yarn架构 及 client提交任务过程讲解

先看个yarn的整体架构

yarn架构 及 client提交任务过程讲解
yarn架构 及 client提交任务过程讲解

client向rm提交任务的过程大致分为七步,先上图在解释:

yarn架构 及 client提交任务过程讲解

1. client向rm发出请求

2. rm返回一个applicationid作为回应

3. client向rm回应application submission context(asc)。asc包括applicationid、user、queue,以及其他一些启动am相关的信息,除此之外,还有一个container launch context(clc),clc包含了资源请求数(内存与cpu),job files,安全token,以及其他一些用以在一个node上启动am的信息。任务一旦提交以后,client可以请求rm去杀死应用或查询应用的运行状态

4. 当rm接受到asc后,它会调度一个合适的container来启动am,这个container经常被称作为container 0。am需要请求其他的container来运行任务,如果没有合适的container,am就不能启动。当有合适的container时,rm发请求到合适的nm上,来启动am。这时候,am的prc与监控的url就已经建立了。

5. 当am启动起来后,rm回应给am集群的最小与最大资源等信息。这时am必须决定如何使用那么当前可用的资源。yarn不像那些请求固定资源的scheduler,它能够根据集群的当前状态动态调整。

6. am根据从rm那里得知的可使用的资源,它会请求一些一定数目的container。this request can be very specific,including containers with multiples of the resource minimum values (e.g., extra memory)。

7. rm将会根据调度策略,尽可能的满足am申请的container。

在一个job运行时,am会向rm汇报心跳与进度信息,在这些心跳过程中,am可能去申请或释放container。会当任务完成时,am向rm发送一条任务结束信息然后退出。如下图所示:

yarn架构 及 client提交任务过程讲解

继续阅读