MapReuce筆記二之MR任務在yarn容器中的資源管理

Yarn是hadoop2.0之後引入的一個資源管理層,mapreduce也僅是yarn的一種應用模式,按照既定的協議從yarn中申請cpu,內存等資源。

Yarn由五部分組成,recouceManager(RM),nodeManager(NM),ApplicationMaster(AM),容器(container),客戶端(client)。

    RM:負責集羣資源的管理由調度器和應用管理器組成,調度器負責爲集羣中所有的應用分配資源。

    NM:負責本地節點資源管理。

    AM:應用的守護進程,負責與RM進行資源協商。應用提交後,RM的調度器和應用管理器協商後得到一個容器用以啓動AM,AM啓動後通過心跳機制與RM通信目的主要是爲應用申請資源。

    容器:分配給應用資源的抽象形式。

    客戶端:一個實例用來向RM提交應用。


MapReduce計算框架在運行時分爲兩部分,一部分稱爲MRAppMaster負責管理,其餘的全是任務他們都運行在yarn容器中。Yarn容器在hadoop框架中負責資源管,分爲ResourceManager和DataManager,ResourceManager在主節點上負責集羣資源分配調度,DataManager在從節點上負責單節點的資源管理。

         我們通過Hadoopjar執行MapReduce架包( jar文件):

         1:首先將架包文件上傳到hdfs中,然後再將地址告訴ResourceManager。

         2:ResourceManager從地址中拿到jar後會分析其代碼,分析後發現這是一個MapReduce程序,然後從集羣中的某一個DataManager中分配一個容器這個容器用來存放MRAppMaster。

         3:MRAppMaster啓動後會去分析jar中的代碼發現一共需要3個map任務和1個reduce任務,然後向ResourceManager申請4個容器。

         4:ResourceManager會去檢查如果有4個容器就會分配4個容器給MR,這個4個容器可能不在同一個節點上。

         5:分配容器後框架會先啓動3個map任務進行處理,處理完後啓動reduce任務去其他節點中拷貝數據進行reduce處理。

         6:Map或reduce任務執行完畢後MRAppMaster會告訴ResourceManager請收回容器,當所有任務資源都收回後ResourceManager再收回MRAppMaster資源。自此所有的job都執行完畢。

         注意:如果map任務和它需要讀取的數據在同一個節點上這樣屬於本地數據data_local,這種情況效率會比較高。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章