1. 程式人生 > >yarn架構 及 client提交任務過程講解

yarn架構 及 client提交任務過程講解

一.yarn的整體架構

二.任務提交過程

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傳送一條任務結束資訊然後退出