閱讀814 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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

先看個yarn的整體架構



Client向RM提交任務的過程大致分為七步,先上圖在解釋:


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發送一條任務結束信息然後退出。如下圖所示:







最後更新:2017-04-03 05:39:57

  上一篇:go android View的一些學習記錄
  下一篇:go ScheduledExecutorService和timer的異同