YARN的任務提交流程簡述及圖解
#YARN的任務提交流程簡述及圖解
1,Client向ResourceManager發出請求,提交程式,(ResourceManager中有Scheduler排程器和ApplicationsManager應用程式管理器
2,ResourceManager向Scheduler返回一個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啟動起來後,ResourceManager迴應給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,ResourceManager將會根據排程策略,儘可能的滿足AM申請的container。