溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

新手必備:Hadoop基礎(chǔ)——YARN認知

發(fā)布時間:2020-07-24 10:51:05 來源:網(wǎng)絡(luò) 閱讀:190 作者:Hjiangxue 欄目:大數(shù)據(jù)

Yarn是一個分布式的資源管理系統(tǒng),用以提高分布式的集群環(huán)境下的資源利用率,這些資源包括內(nèi)存、IO、網(wǎng)絡(luò)、磁盤等。其產(chǎn)生的原因是為了解決原MapReduce框架的不足。

最初MapReduce的committer們還可以周期性的在已有的代碼上進行修改,可是隨著代碼的增加以及原MapReduce框架設(shè)計的不足,在原MapReduce框架上進行修改變得越來越困難,

所以MapReduce的committer們決定從架構(gòu)上重新設(shè)計MapReduce,使下一代的MapReduce(MRv2/Yarn)框架具有更好的擴展性、可用性、可靠性、向后兼容性和更高的資源利用率以及能支持除了MapReduce計算框架外的更多的計算框架。

1、MapReduce框架的不足

現(xiàn)在比較流行的說法是jobtracker的問題,比如單點故障,任務(wù)過重。但除了Jobtracker,同時還有一個TaskTracker。我們看下圖:
新手必備:Hadoop基礎(chǔ)——YARN認知

JobTacker概述

JobTacker其承擔(dān)的任務(wù)有:接受任務(wù)、計算資源、分配資源、與DataNode進行交流。

在hadoop中每個應(yīng)用程序被表示成一個作業(yè),每個作業(yè)又被分成多個任務(wù),JobTracker的作業(yè)控制模塊則負責(zé)作業(yè)的分解和狀態(tài)監(jiān)控。

*最重要的是狀態(tài)監(jiān)控:主要包括TaskTracker狀態(tài)監(jiān)控、作業(yè)狀態(tài)監(jiān)控和任務(wù)狀態(tài)監(jiān)控。主要作用:容錯和為任務(wù)調(diào)度提供決策依據(jù)。

TaskTracker概述

TaskTracker是JobTracker和Task之間的橋梁:一方面,從JobTracker接收并執(zhí)行各種命令:運行任務(wù)、提交任務(wù)、殺死任務(wù)等;另一方面,將本地節(jié)點上各個任務(wù)的狀態(tài)通過心跳周期性匯報給JobTracker。TaskTracker與JobTracker和Task之間采用了RPC協(xié)議進行通信

資源slot概述

slot不是CPU的Core,也不是memory chip,它是一個邏輯概念,一個節(jié)點的slot的數(shù)量用來表示某個節(jié)點的資源的容量或者說是能力的大小,因而slot是 Hadoop的資源單位。

hadoop中什么是slots

所以JobTracker需要完成的任務(wù)太多,既要維護job的狀態(tài)又要維護job的task的狀態(tài),造成過多的資源消耗

在taskTracker端,用map/reduce task作為資源的表示過于簡單,沒有考慮到CPU、內(nèi)存等資源情況,當(dāng)把兩個需要消耗大內(nèi)存的task調(diào)度到一起,很容易出現(xiàn)OOM

把資源強制劃分為map/reduce slot,當(dāng)只有map task時,reduce slot不能用;當(dāng)只有reduce task時,map slot不能用,容易造成資源利用不足。

2、Yarn

首先讓我們看一看Yarn的架構(gòu)

新手必備:Hadoop基礎(chǔ)——YARN認知

1.ResourceManager概述

是全局的,負責(zé)對于系統(tǒng)中的所有資源有最高的支配權(quán)。ResourceManager作為資源的協(xié)調(diào)者有兩個主要的組件:Scheduler和ApplicationsManager(AsM)。

Scheduler負責(zé)分配最少但滿足application運行所需的資源量給Application。Scheduler只是基于資源的使用情況進行調(diào)度,并不負責(zé)監(jiān)視/跟蹤application的狀態(tài),當(dāng)然也不會處理失敗的task。

ApplicationsManager負責(zé)處理client提交的job以及協(xié)商第一個container以供applicationMaster運行,并且在applicationMaster失敗的時候會重新啟動applicationMaster。

2.NodeManager概述

NM主要負責(zé)啟動RM分配給AM的container以及代表AM的container,并且會監(jiān)視container的運行情況。

在啟動container的時候,NM會設(shè)置一些必要的環(huán)境變量以及將container運行所需的jar包、文件等從hdfs下載到本地,也就是所謂的資源本地化;當(dāng)所有準(zhǔn)備工作做好后,才會啟動代表該container的腳本將程序啟動起來。

啟動起來后,NM會周期性的監(jiān)視該container運行占用的資源情況,若是超過了該container所聲明的資源量,則會kill掉該container所代表的進程。

3.ApplicationMaster概述

由于NodeManager 執(zhí)行和監(jiān)控任務(wù)需要資源,所以通過ApplicationMaster與ResourceManager溝通,獲取資源。換句話說,ApplicationMaster起著中間人的作用。

轉(zhuǎn)換為更專業(yè)的術(shù)語:AM負責(zé)向ResourceManager索要NodeManager執(zhí)行任務(wù)所需要的資源容器,更具體來講是ApplicationMaster負責(zé)從Scheduler申請資源,以及跟蹤這些資源的使用情況以及任務(wù)進度的監(jiān)控。

所以我們看到JobTracker的功能被分散到各個進程中包括ResourceManager和NodeManager:

比如監(jiān)控功能,分給了NodeManager,和Application Master。

ResourceManager里面又分為了兩個組件:調(diào)度器及應(yīng)用程序管理器。

也就是說Yarn重構(gòu)后,JobTracker的功能,被分散到了各個進程中。同時由于這些進程可以被單獨部署所以這樣就大大減輕了單點故障,及壓力。

最后要提醒在yarn上寫應(yīng)用程序并不同于我們熟知的MapReduce應(yīng)用程序,必須牢記yarn只是一個資源管理的框架,并不是一個計算框架,計算框架可以運行在yarn上。我們所能做的就是向RM申請container,然后配合NM一起來啟動container。

結(jié)語

感謝您的觀看,如有不足之處,歡迎批評指正。

為了幫助大家讓學(xué)習(xí)變得輕松、高效,給大家免費分享一大批資料,幫助大家在成為大數(shù)據(jù)工程師,乃至架構(gòu)師的路上披荊斬棘。在這里給大家推薦一個大數(shù)據(jù)學(xué)習(xí)交流圈:658558542 歡迎大家進×××流討論,學(xué)習(xí)交流,共同進步。

當(dāng)真正開始學(xué)習(xí)的時候難免不知道從哪入手,導(dǎo)致效率低下影響繼續(xù)學(xué)習(xí)的信心。

但最重要的是不知道哪些技術(shù)需要重點掌握,學(xué)習(xí)時頻繁踩坑,最終浪費大量時間,所以有有效資源還是很有必要的。

最后祝福所有遇到瓶疾且不知道怎么辦的大數(shù)據(jù)程序員們,祝福大家在往后的工作與面試中一切順利。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI