點擊標(biāo)題下「藍(lán)色微信名」可快速關(guān)注
一、yarn簡介
YARN是一個通用的資源管理模塊,可以為各類應(yīng)用程序進(jìn)行資源管理和調(diào)度。基本思想是將資源管理和作業(yè)調(diào)度/監(jiān)視的功能拆分為多帶帶的守護程序。這個想法是擁有一個全局ResourceManager(RM)和每個應(yīng)用程序ApplicationMaster(AM)。應(yīng)用程序可以是單個作業(yè),也可以是作業(yè)的DAG。
在最早的HadoopMapReduce計算架構(gòu)中,進(jìn)行作業(yè)調(diào)度時使用FIFOScheduler。FIFO是指,所有用戶的作業(yè)都被提交到一個隊列中,然后按照作業(yè)的優(yōu)先級,再按照作業(yè)提交時間的先后順序選擇將被執(zhí)行的作業(yè)。Hadoop中只有一個作業(yè)隊列,被提交的作業(yè)按照先后順序在作業(yè)隊列中排隊,新來的作業(yè)插入到隊尾。一個作業(yè)運行完成后,總是從隊首取下一個作業(yè)運行。這種調(diào)度策略的優(yōu)點是簡單、易于實現(xiàn),同時也減輕了JobTracker的負(fù)擔(dān)。缺點是,它沒有考慮到作業(yè)的緊迫程度,另外對小作業(yè)的運行不利。因此,逐漸衍生出可以分配資源的SuperiorScheduler和CapacityScheduler。
YARN模型主要由ResourceManager、ApplicationMaster和NodeManager組成
ResourceManager:負(fù)責(zé)集群中所有資源的統(tǒng)一管理和分配。接收來自各個節(jié)點(NodeManager)的資源匯報信息,并根據(jù)收集的資源按照一定的策略分配給各個應(yīng)用程序。
ApplicationMaster:即圖中的AppMstr,負(fù)責(zé)一個Application生命周期內(nèi)的所有工作。包括:與RM調(diào)度器協(xié)商以獲取資源;將得到的資源進(jìn)一步分配給內(nèi)部任務(wù)(資源的二次分配);與NM通信以啟動/停止任務(wù);監(jiān)控所有任務(wù)運行狀態(tài),并在任務(wù)運行失敗時重新為任務(wù)申請資源以重啟任務(wù)。
NodeManager(NM)是YARN中每個節(jié)點上的代理,管理Hadoop集群中單個計算節(jié)點,包括與ResourceManger保持通信,監(jiān)督Container的生命周期管理,監(jiān)控每個Container的資源使用(內(nèi)存、CPU等)情況,追蹤節(jié)點健康狀況,管理日志和不同應(yīng)用程序用到的附屬服務(wù)(auxiliaryservice)。
1. 首先由客戶端生成Application信息,提交給ResourceManager。
2. ResourceManager為Application分配第一個Container(ApplicationMaster),并在該Container上啟動Driver。
3. ApplicationMaster向ResourceManager申請資源以運行Container(容器)。
ResourceManager分配Container給ApplicationMaster,ApplicationMaster和相關(guān)的NodeManager通訊,在獲得的Container上啟動Executor,Executor啟動后,開始向Driver注冊并申請Task。
4. Driver分配Task給Executor執(zhí)行。
5. Executor執(zhí)行Task并向Driver匯報運行狀況。
通過yarnweb UI查詢集群資源總量,Yarn配置文件yarn-site.xml配置文件
1. 配置ResourceManager屬性(集群)
根據(jù)集群和節(jié)點物理CPU及內(nèi)存配置設(shè)置參數(shù)
2. 配置NodeManager屬性(節(jié)點)
yarn.nodemanager.resource.cpu-vcores”設(shè)置當(dāng)前節(jié)點上NodeManager可使用的虛擬CPU核數(shù),建議按節(jié)點實際邏輯核數(shù)的1.5到2倍配置
“yarn.nodemanager.resource.memory-mb”設(shè)置當(dāng)前節(jié)點上NodeManager可使用的物理內(nèi)存大小,建議按節(jié)點實際物理內(nèi)存大小的75%配置
3. 配置Scheduler屬性(容器)
(1)設(shè)置容器最小最大內(nèi)存
yarn.scheduler.maximum-allocation-mb
yarn.scheduler.minimum-allocation-mb
(2)設(shè)置容器最小最大CPU
yarn.scheduler.minimum-allocation-vcores
yarn.scheduler.maximum-allocation-vcores
注:yarn.scheduler.maximum-allocation-vcores。不能高于maxResources。該屬性對于根隊列無效。
4. 配置MapReduce屬性
MapReduce向YARN請求三種不同的容器:應(yīng)用程序主容器,地圖容器和reduce容器。對于每種容器類型,都有一組對應(yīng)的屬性可用于設(shè)置請求的資源。
5. 資源故障處理
當(dāng)調(diào)度資源運行出錯時,NodeManager進(jìn)程出現(xiàn)“java.lang.OutOfMemoryError:Direct buffermemory”的錯誤;查詢NodeManager的日志,看是否存在錯誤日志“OutOfMemoryError”報錯。
運行任務(wù)前按照實際需要配置NodeManager的相關(guān)內(nèi)存參數(shù)
堆外內(nèi)存(MB)=(Spark單個Stagetask的最大數(shù)量/可用的NodeManager數(shù)量)*32 * 機器核數(shù)/1024/1024
堆內(nèi)內(nèi)存(MB)=(Spark單個Stagetask的最大數(shù)量/可用的NodeManager數(shù)量)*512/1024/1024
參考:https://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/ResourceModel.html
https://support.huawei.com/hedex/hdx.do?docid=EDOC1100094387&lang=zh&idPath=22658044%7C7919788%7C9856606%7C21110924
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/130038.html
CDH(Cloudera Distribution Including Apache Hadoop)是一個用于在企業(yè)中部署和管理Apache Hadoop生態(tài)系統(tǒng)的分發(fā)版本。CDH包含了Hadoop核心組件,如HDFS、YARN和MapReduce,以及許多其他工具,如Apache Hive、Apache Pig、Apache Spark和Apache HBase?! ≡贑DH中進(jìn)行調(diào)優(yōu)的...
摘要:包括等,它們共同維護了一個事件與事件處理器的映射表,用來處理各個事件。例如內(nèi)部包含一個中央異步調(diào)度器,并注冊了等一系列事件事件處理器,由中央異步調(diào)度器統(tǒng)一管理和調(diào)度。當(dāng)狀態(tài)機轉(zhuǎn)換到最終狀態(tài)時,則退出。 大數(shù)據(jù)夢工廠( 0011 - YARN核心設(shè)計解析)1 - YARN RPC架構(gòu)設(shè)計YARN RPC Serv...
閱讀 1346·2023-01-11 13:20
閱讀 1684·2023-01-11 13:20
閱讀 1132·2023-01-11 13:20
閱讀 1858·2023-01-11 13:20
閱讀 4100·2023-01-11 13:20
閱讀 2704·2023-01-11 13:20
閱讀 1385·2023-01-11 13:20
閱讀 3597·2023-01-11 13:20