Hadoop學習14--Hadoop之一點點理解yarn

yarn是一個分佈式的資源管理系統。html

它誕生的緣由是原來的MapReduce框架的一些不足:app

一、JobTracker單點故障隱患框架

二、JobTracker承擔的任務太多,維護Job狀態,Job的task的狀態等分佈式

三、在taskTracker端,使用map/reduce task表示資源過於簡單,沒有考慮cpu、內存等使用狀況。當把多個須要消耗大量內存的task調度到一塊兒時,很容易出現問題spa

演化後的基本組件xml

下面具體解釋:htm

yarn是一個資源管理的框架,而非計算的框架,理解這點很重要。對象

圖中的Application至關於1.x版本中的map/reduce job。blog

圖中的Container是一個邏輯概念,是一組資源(內存、cpu等)的統稱。生命週期

AM:每個Application對應一個AM。

ResourceManager:主要來作資源的協調者。有兩個重要的組件:

  Scheduler:【資源調度】從全部運行着的Application收到資源請求後,構建一個全局的分配計劃。而後根據Application特殊的限制以及全局的一些限制條件分配資源。【資源監視】週期性的接受來自NM的資源使用率監控信息。注意這和job的執行狀況無關,只是監視資源。另外能夠爲AM提供其已完成的container的狀態信息。

  Asm:接收資源請求,向Scheduler申請一個Container提供給AM,並啓動AM。向client提供AM運行狀態。總結一句話,就是用來管理全部AM的生命週期。

yarn工做流程:

總結的說就是兩步:client提交Job到AM,AM請求資源運行起來ASM;ASM接管,它計算split、申請資源、與NM配合運行task、監控task等。

 一、Job client向AM提交job。

  1)得到ApplicationID

  2)將Application定義,以及所需jar包上傳到hdfs指定目錄(yarn-site.xml的yarn.app.mapreduce.am.staging-dir)

  3)構造資源請求對象以及Application提交上下文信息,提交給AM

二、AM向Scheduler請求一個供ASM運行的Container,向其所在NM發送launchContainer信息,啓動Container

三、AM於NM協調,啓動ASM,並監控之

四、Job client從AM處得到ASM信息,並與之直接通訊

五、ASM計算splits併爲全部map構造資源請求

六、ASM作一些OutputCommitter的準備工做

七、ASM向Scheduler申請資源(一組Container)而後與NM一塊兒對Container執行一些必要的任務,例如資源本地化

八、ASM監視task,若是失敗從新申請Container,若是完成,運行OutputCommitter的cleanup以及commit動做

九、ASM退出

 

client想知道監控信息的途徑:

  task的從AM獲取

  AM的從AsM獲取

NM還有一項工做,監控task所使用的資源,若是超出所申請的Container範圍,則kill掉其任務進程

yarn是資源框架,計算框架運行於資源框架之上。map-reduce是計算模型,它實現了特定的ApplicationMaster,才得以在yarn上運行。若是是其餘的計算模型,還須要實現特定的ApplicationMaster,才能在yarn上運行。

引伸閱讀:http://www.aboutyun.com/thread-7678-1-3.html

相關文章
相關標籤/搜索