導(dǎo)語(yǔ):工作中常常和Spark on YARN, Hadoop on YARN打交道堂湖,經(jīng)常在各種日志中摸爬滾打着降,為提升效率侦讨,總結(jié)一下YARN的知識(shí)點(diǎn)窘面,希望能形成一個(gè)比較系統(tǒng)的方法論棠绘。本文由三問(wèn)三答一例組成件相。
1、為什么要使用YARN氧苍?
為了提升集群的利用率夜矗、資源統(tǒng)一管理, 使用YARN為上層應(yīng)用提供統(tǒng)一的資源管理和調(diào)度的平臺(tái)让虐。
2紊撕、YARN的優(yōu)勢(shì)?
? ??資源的統(tǒng)一管理和調(diào)度:?
????集群中所有節(jié)點(diǎn)的資源(內(nèi)存赡突、CPU对扶、磁盤、網(wǎng)絡(luò)等)抽象為Container惭缰。計(jì)算框架需要資源進(jìn)行運(yùn)算任務(wù)時(shí)需要向YARN申請(qǐng)Container浪南, YARN按照特定的策略對(duì)資源進(jìn)行調(diào)度進(jìn)行Container的分配。
? ??資源隔離:?
????YARN使用了輕量級(jí)資源隔離機(jī)制Cgroups進(jìn)行資源隔離以避免相互干擾漱受,一旦Container使用的資源量超過(guò)事先定義的上限值络凿,就將其殺死。
3昂羡、YARN是如何工作的絮记?
介紹YARN調(diào)度過(guò)程之前,解釋幾個(gè)專用名詞:
Resource Manager:全局資源管理器紧憾,一個(gè)集群只有一個(gè)RM到千。負(fù)責(zé)和AM(Application Master)交互,資源調(diào)度赴穗、資源分配等工作憔四。
Application Master:應(yīng)用程序的管理器,類似項(xiàng)目經(jīng)理般眉,一個(gè)應(yīng)用程序只有一個(gè)AM了赵。負(fù)責(zé)任務(wù)開(kāi)始時(shí)找RM要資源,任務(wù)完成時(shí)向RM注銷自己,釋放資源甸赃;與NM通信以啟動(dòng)/停止任務(wù)柿汛;接收NM同步的任務(wù)進(jìn)度信息。
Node Manager:一臺(tái)機(jī)器上的管理者,類似于部門經(jīng)理络断。管理著本機(jī)上若干小弟Containers的生命周期裁替、監(jiān)視資源和跟蹤節(jié)點(diǎn)健康并定時(shí)上報(bào)給RM;接收并處理來(lái)自AM的Container啟動(dòng)/停止等各種請(qǐng)求貌笨。
Container:一臺(tái)機(jī)器上具體提供運(yùn)算資源弱判,將設(shè)備上的內(nèi)存、CPU锥惋、磁盤昌腰、網(wǎng)絡(luò)等資源封裝在一起的抽象概念——“資源容器”,Container是一個(gè)動(dòng)態(tài)資源分配單位膀跌,為了限定每個(gè)任務(wù)使用的資源量遭商。
Attempt:提交到Y(jié)arn中的應(yīng)用程序被稱為Application,它可能會(huì)嘗試運(yùn)行多次捅伤,每次的嘗試運(yùn)行稱為“Application Attempt”劫流,如果一次嘗試運(yùn)行失敗,則由RMApp創(chuàng)建另一個(gè)繼續(xù)運(yùn)行暑认,直至達(dá)到失敗次數(shù)的上限困介。
圖片來(lái)自參考[1]
以下通俗地解釋一下向YARN提交一個(gè)應(yīng)用程序時(shí)的執(zhí)行過(guò)程:
1、用戶向YARN提交程序蘸际,以Map Reduce程序?yàn)槔ǎ琑esource Manager(資源管理器)接收到客戶端程序的運(yùn)行請(qǐng)求
2、Resource Manager分配一個(gè)Container(資源)用來(lái)啟動(dòng)Application Master(程序管理員)粮彤,并告知Node Manager(節(jié)點(diǎn)管理員)根穷,要求它在這個(gè)Container下啟動(dòng)Application Master
3、Application Master啟動(dòng)后导坟,向Resource Manager發(fā)起注冊(cè)請(qǐng)求
4屿良、Application Master向Resource Manager申請(qǐng)資源
5、取得資源后惫周,根據(jù)資源尘惧,向相關(guān)的Node Manager通信,要求其啟動(dòng)程序
6递递、Node Manager(多個(gè))啟動(dòng)MR(每個(gè)MR任務(wù)都是一個(gè)job喷橙,可以在job日志中查看程序運(yùn)行日志)
7、Node Manager不斷匯報(bào)MR狀態(tài)和進(jìn)展給Application Master
8登舞、當(dāng)MR全部完成時(shí)贰逾,Application Master向Resource Manager匯報(bào)任務(wù)完成,并注銷自己
下面結(jié)合一個(gè)排錯(cuò)的例子來(lái)介紹日常使用:
在一次提交一個(gè)MR任務(wù)之后菠秒,application失敗退出疙剑。通常會(huì)第一時(shí)間看到application頁(yè)面排查問(wèn)題,這里第一個(gè)紅框是應(yīng)用程序最終狀態(tài),F(xiàn)AILED言缤。錯(cuò)誤發(fā)生立馬看診斷信息有沒(méi)有邏輯錯(cuò)誤信息(程序代碼自身問(wèn)題)嚼蚀,現(xiàn)在看診斷信息顯示是task失敗,排除邏輯錯(cuò)誤轧简。
除去代碼問(wèn)題驰坊,應(yīng)該是環(huán)境變量和job設(shè)置的問(wèn)題,接下來(lái)看任務(wù)運(yùn)行日志哮独,進(jìn)入 Tracking URL: History。
第二個(gè)頁(yè)面察藐,MR的job日志界面皮璧,發(fā)現(xiàn)是Map任務(wù)失敗
第三個(gè)界面,查看具體失敗的attempts情況
從Note顯示的信息判斷是邏輯還是系統(tǒng)失敗分飞,很明顯是系統(tǒng)失敗悴务,再點(diǎn)開(kāi)log查看詳細(xì)信息。
發(fā)現(xiàn)是我job設(shè)置的JAVA_HOME出現(xiàn)問(wèn)題譬猫。定位并解決~
-------------------------
參考文章:
[1]?Yarn(MapReduce2.0)架構(gòu)的資源請(qǐng)求流程(通俗)
[2]yarn-百度百科