本篇內(nèi)容介紹了“YARN相關(guān)知識點有哪些”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!
成都創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站制作、做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的芒市網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
YARN產(chǎn)生背景
為什么會產(chǎn)生YRAN?這個與MapReduce1.x的架構(gòu)有關(guān),正是因為MapReduce1.x存在許多的問題,才會產(chǎn)生 YARN。
MapReduce1.x的架構(gòu)如下:
MapReduce1.x的架構(gòu)
Hadoop1.x時,MapReduce的架構(gòu)仍然是主從架構(gòu)。一個JobTracker帶多個TaskTracker,主節(jié)點為JobTracker,只有一個,從節(jié)點為TaskTracker,可以有多個,從節(jié)點通過向主節(jié)點發(fā)送心跳信息(heartbeat)來告訴它自己的運行情況,而主節(jié)點則是負責管理調(diào)度的工作。
JobTracker(JT):負責資源管理和作業(yè)調(diào)度。
TaskTracker(TT):定期向JT匯報本節(jié)點的健康狀況、資源使用情況、作業(yè)執(zhí)行情況。接收來自JT的命令,從而啟動任務(wù)或殺死任務(wù)。
那么這個架構(gòu)存在什么樣的問題呢?
首先是單點故障的問題,所有的從節(jié)點(TT)都是跟主節(jié)點(JT)直接關(guān)聯(lián)的,如果主節(jié)點不小心掛了,那么整個系統(tǒng)就崩潰了,就沒有辦法運行了。
其次,JT的壓力大且不易擴展,他要接收所有從節(jié)點(TT)的心跳信息(heartbeat)和客戶端的請求,JT承擔的職責特別多,隨著集群擴展后,那么JT的壓力就會越來越大。
最后,最大的問題就是兼容性問題,它不兼容除了MapReduce外的其他框架,比如Spark是不能跑在這個系統(tǒng)上的。
而有了YARN之后,基于YARN之上可以運行很多其他的計算框架,不同計算框架可以共享同一個HDFS集群上數(shù)據(jù),享受整體的資源調(diào)度。它相當于操作系統(tǒng),起著調(diào)度管理的工作。
YARN的全稱是Yet Another Resource Negotiator。
通用的資源管理系統(tǒng),要申請資源統(tǒng)一經(jīng)過YARN進行申請就行了。
為上層應(yīng)用提供統(tǒng)一的資源管理和調(diào)度。
YARN的架構(gòu)如下圖所示:
YARN的架構(gòu)由這幾個部分構(gòu)成:
ResourceManager(RM):資源管理器
整個集群同一時間提供服務(wù)的RM只有一個,負責集群資源的統(tǒng)一管理和調(diào)度。一般來說RM只有一個,多了的話不好協(xié)調(diào)容易混亂,但是如果只有一個的話,如果RM出問題了整個系統(tǒng)就崩潰了,所以生產(chǎn)中盡量會再加一個作為備用,這樣就算主RM掛了,備用的RM也可以繼續(xù)工作,但是在同一時間提供服務(wù)的只有一個,要么是主RM,要么是備用RM。
處理客戶端的請求:提交作業(yè)、殺死作業(yè)。
監(jiān)控NM,一旦某個NM掛了,那么該NM上運行的任務(wù)需要告訴AM來如何進行處理。
NodeManager(NM):節(jié)點管理器
整個集群中有多個NM,負責自己本身節(jié)點資源管理使用。管理自身節(jié)點的資源,比如某一時刻還剩多少資源,NM是能知道的。
定時向RM匯報本節(jié)點的資源使用情況,RM只有知道所有NM上的資源使用情況,才能合理的進行調(diào)度。對于一個特定的作業(yè),他才知道該分配到哪個NM上去。
接受并處理來自RM的各種命令,比如啟動Container。NM既然作為主從結(jié)構(gòu)的從節(jié)點,那么就應(yīng)該聽老大的話,老大給你分配了任務(wù),讓你去執(zhí)行你就去執(zhí)行,讓你別干了你就別干了。
處理來自AM的命令,AM告訴NM需要在節(jié)點上啟動多少container跑task,NM才能運行。
單個節(jié)點的資源管理,在跑作業(yè)的過程中,對自己節(jié)點上資源的使用和剩余多少資源必須要有數(shù)。
ApplicationMaster(AM):應(yīng)用程序主控程序
每個應(yīng)用程序?qū)?yīng)一個,比如一個Spark或者一個MapReduce作業(yè)對應(yīng)一個AM。負責應(yīng)用程序的管理,為應(yīng)用程序向RM申請資源,比如需要多少內(nèi)存和計算量。拿到資源后再分配給內(nèi)部的task進行處理。
需要與NM進行通信,啟動或者停止task,task是運行在container里面,AM也是運行在container里面。
Container:容器
封裝了CPU、Memory等資源的一個容器,相當于一個任務(wù)運行環(huán)境的抽象。
Client:客戶端:
提交作業(yè)、查看作業(yè)的運行進度、殺死作業(yè)
關(guān)于這個架構(gòu)我是這么理解的,可以將它與企業(yè)或者公司的管理進行對比:
Client,很簡單自然就是跟公司合作的客戶。提交一個作業(yè)就相當于客戶跟公司一筆生意談成了,客戶提要求,公司負責幫客戶去完成項目,只是這里沒有金錢交易而已。
RM,相當于公司的管事的boss,權(quán)力很大,所有公司的事都要聽他的。我們對照則RM的作用一條一條來理解,首先,一個公司同一時間只能有一個拍板的,不能你說你的他說他的,最后整個公司也不知道聽誰的,那就徹底亂套了。如果某天老板生病了,那就只能委托一個代理暫時幫他行使管理的責任,這個代理就是備用的RM。其次,老板可以決定項目何時終止,何時開始,這個很好理解。NM相當于公司下面分設(shè)的許多部門,AM相當于某個具體項目的負責人,具體的我們待會再說,暫時先這么理解。最后,老板可以隨時知道部門的情況,如果某個部門集體度假了,或者出了什么重大事故,那么自然這個部門所牽涉的項目就要被擱置,這時候?qū)τ谶@個項目該怎么處理,是等他們回來再繼續(xù),還是直接把項目給其他的部門,這就要問這個項目的負責人了,怎么決斷就要聽他的意見,畢竟這個項目是他負責的。
NM所在的整個節(jié)點,相當于公司的各個部門,唯一的區(qū)別就是,在公司中,往往不會設(shè)立兩個財務(wù)部門或三個人力部門,公司的部門往往是唯一的。而YARN 的結(jié)構(gòu)中,每個節(jié)點并不具有唯一性,所以我們?yōu)榱祟惐确奖?,可以假設(shè)這個公司有3個開發(fā)部門,4個測試部門這樣。這樣NM就可以理解成這個部門的負責人,顯然NM對于本部門的情況是十分了解的,包括哪個人今天有沒有來上班,部門現(xiàn)在的工作能力如何,是不是有人還處于空閑沒事做的狀態(tài)等等。負責人需要定期向老板遞交工作記錄(心跳信息)從而讓老板知道這個部門的工作能力如何啊等等這些信息,這樣下次有新任務(wù)的時候,老板就知道能不能分配給這個部門。作為部門負責人,自然得聽老板的話,老板給你個任務(wù),讓你立馬在部門中給我組個小組(container)完成,你就要執(zhí)行老板的命令。同時對于項目負責人的要求,他也要盡量可能滿足,比如項目負責人說我這個項目需要你們部門哪些哪些人幫我去做,那部門負責人就按照他的要求把那些人組成一個小組去執(zhí)行任務(wù)。
AM,項目負責人或團隊,一個公司可能有多個項目,自然每個項目需要有一個項目負責人。項目負責人在做項目的時候必定會用到公司中的資源,比如開會需要會議室、打印機啊,那自然得跟老板去申請說,我這個項目需要利用公司的會議室、打印機等等,老板說可以啊沒問題,那么他拿到這些資源后就會給每個小組說,我已經(jīng)幫你們申請到這些東西了,以后你們要用的話就直接可以用了。最后,他可以跟某個部門的負責人說,我需要你們部門的幾個人組成一個小組(container)來幫我做這個項目,或者你們部門的這個小組做的不行,我不要他們了。
container就是一個小組,小組內(nèi)有大家可以共用的一些資源,每個項目分成一個個小的任務(wù)也是在各個小組中完成的,每個小組都屬于某個部門,一個部門可以有若干個小組。
不知道這樣說會不會對理解YARN的架構(gòu)有所幫助,這只是我在看到這個架構(gòu)時的一些理解。
YARN的執(zhí)行流程
客戶端提交一個作業(yè)請求給RM,可以是MapReduce作業(yè),也可以Spark作業(yè)。
RM會為作業(yè)分配第一個container,假設(shè)這個container運行在第二個節(jié)點上,這樣RM就會與對應(yīng)的NM進行通信,也就是跟第二個節(jié)點的NM說,我要在你上面啟動一個container。
NM在接到了RM的指令后,在NM上啟動了一個container,而application master就運行在這個container之中。
AM啟動完了之后,會在RM中進行注冊,注冊了用戶就可以通過RM看到作業(yè)執(zhí)行的進度了。并且AM會將需要使用的資源,比如需要多少memory,向RM進行申請,如果申請到資源就美滋滋,接著進行下面的步驟。
申請到資源后,AM就在對應(yīng)的NM上開始啟動任務(wù)。假設(shè)需要在第一個NM啟動2個task,在第三個NM上啟動1個task,那么把這些通知發(fā)送給對應(yīng)的NM。
NM在接受到這些通知后,就知道自己需要創(chuàng)建幾個task,于是在NM上啟動相應(yīng)的container,并把task放到container中去運行。
其實這個流程并不是很復雜,可以對照著之前舉的公司的例子,把相應(yīng)的角色帶入進去理解一下流程。
我們再來思考一個問題,為什么說在1.x版本不能支持其他計算框架的運行,而使用了YARN后就可以了呢?關(guān)鍵在于這個流程是個通用的流程,AM作為應(yīng)用程序的主控程序,如果我們對于相應(yīng)的框架都做出對應(yīng)的AM的實現(xiàn),也就是說,如果是MapReduce,那么這里的AM就是MapReduce對應(yīng)的AM,對于spark也是同樣的道理。那么在YARN之上就可以運行很多計算框架了。其實可以把YARN的作用理解成可以跑各種計算框架的操作系統(tǒng),就跟使用Windows操作系統(tǒng),你就可以在這個操作系統(tǒng)上運行各種軟件一樣。
“YARN相關(guān)知識點有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
網(wǎng)站名稱:YARN相關(guān)知識點有哪些
URL網(wǎng)址:http://aaarwkj.com/article34/jeggse.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、網(wǎng)站維護、虛擬主機、關(guān)鍵詞優(yōu)化、ChatGPT、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)