這篇文章跟大家分析一下“MapReduce運行架構(gòu)以及Yarn資源調(diào)度是怎樣的”。內(nèi)容詳細易懂,對“MapReduce運行架構(gòu)以及Yarn資源調(diào)度是怎樣的”感興趣的朋友可以跟著小編的思路慢慢深入來閱讀一下,希望閱讀后能夠?qū)Υ蠹矣兴鶐椭O旅娓【幰黄鹕钊雽W習“MapReduce運行架構(gòu)以及Yarn資源調(diào)度是怎樣的”的知識吧。
創(chuàng)新互聯(lián)2013年至今,先為永吉等服務建站,永吉等地企業(yè),進行企業(yè)商務咨詢服務。為永吉企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。
?某天, 某研究機構(gòu)設(shè)計了一款私人飛機圖紙, 之后某公司根據(jù)該圖紙制作出一架私人飛機. 然后某位有錢人士覺得這架飛機非常好, 就花高價錢買下這架飛機. 飛機要想起飛, 需要向空管局申請航線, 申請成功后, 這位富人又雇傭了一位飛行員. 最后飛行員開啟飛機, 這位富人如愿坐上心儀的飛機并翱翔天際.
??上述流程可以概括為:
設(shè)計圖紙 --> 私人飛機 --> 空管局(申請航線) --> 雇傭飛行員(駕駛飛機) --> 開啟飛機(翱翔天際).
??看完上述實例, 再來看某個MapReduce應用的運行流程:
??06年, MapReduce這一計算框架納入Hadoop項目, 逐漸進入人們的眼簾. 一時間各大公司, 開發(fā)人員等都在學習使用MapReduce.
?某一天, 你基于MapReduce的原理開發(fā)了一個Application(應用程序), 并將它放在服務器上運行. 運行開始后, App先向資源管理器申請資源, 資源申請成功后, App又去找任務調(diào)度器, 讓它安排一個可以調(diào)度App的任務. 最后task執(zhí)行App, 完成分布式計算.
??上述流程可以概括為:
MapReduce框架 --> Application --> 資源調(diào)度器(申請資源) --> 任務調(diào)度器(執(zhí)行App) --> 分布式并行計算.
??既然程序的執(zhí)行需要資源調(diào)度器和任務調(diào)度器, 那么MapReduce在各個節(jié)點上又是怎么運行的呢?
?在之前的文章Hadoop簡介中, 也曾提到過Hadoop兩大版本的組成是不一樣的, 不一樣的最大區(qū)別就在于MapReduce應用程序運行時資源和任務的調(diào)度上. 接下來, 來看這兩大版本是如何調(diào)度的.
官方配圖:
??
在Hadoop1.x版本, MR自帶資源調(diào)度器, 資源調(diào)度器都是主從架構(gòu), 第一幅圖中有兩個新角色: JobTracker和TaskTracker.
??上述三幅圖的流程與下圖相似:
??再來分析這個流程圖, 不難看出:
JobTracker的壓力很大, 容易出現(xiàn)單點故障. JobTracker即是資源調(diào)度主節(jié)點又是任務調(diào)度主節(jié)點, 監(jiān)控整個集群的資源負載.
TaskTracker是從節(jié)點, 管理自身節(jié)點的資源, 同時和JobTracker保持心跳, 匯報資源獲取情況, 進而獲取task任務.
資源管理與計算調(diào)度強耦合, 其他框架難以加入集群.
?JobTracker, TaskTracker(以下簡稱JTT)是MR自帶的, 如果想要在這個集群上運行Spark, 需要手動實現(xiàn)一套JTT, 實現(xiàn)之后這個集群就會有兩套JTT來管理整個集群的資源.
?當MR程序申請到資源 (假設(shè)申請大量資源) 開始計算時, Spark實現(xiàn)的JTT并不知道MR的JTT已經(jīng)申請資源, Spark的JTT仍然會認為整個集群的資源是足夠的, 當Spark的計算程序運行時, 也會去申請資源 (假設(shè)也申請大量資源) , 但此時集群上已經(jīng)沒有足夠的資源, 這就會導致資源搶奪的問題, 造成資源搶奪的原因是因為資源隔離. 也就是說不同框架對資源不能全局掌控.
MR處理思想是計算像數(shù)據(jù)移動, 或者說計算移動數(shù)據(jù)不移動, 或者說是數(shù)據(jù)本地化. 而上述流程中, reduce計算的數(shù)據(jù)"over the network"通過網(wǎng)絡(luò)進行傳輸, 也就是說數(shù)據(jù)向計算移動, 這樣就存在大量網(wǎng)絡(luò)IO, 降低集群的效率.
??而在Hadoop2.x版本中, 完全廢除了MR自帶的JTT, 引入一個新的資源管理工具 – Yarn, 下面來看Yarn是如何工作的.
官方配圖:
?在Hadoop2.x版本, Hadoop將自帶的資源調(diào)度器提取解耦形成一個獨立的資源調(diào)度器 – Yarn(Yet Another Resource Negotiator), Yarn資源調(diào)度器也是主從架構(gòu). 主節(jié)點是ResourceManager, 從節(jié)點是NodeManager.
?Yarn資源調(diào)度流程圖:
?上述流程比較繁瑣, 分為9步, 圖中可以分析出:
Yarn的核心思想將Hadoop1.x中JobTracker的資源管理和任務調(diào)度兩個功能分開,分別由ResourceManager和ApplicationMaster進程實現(xiàn).
ResourceManager:負責整個集群的資源管理和調(diào)度
ApplicationMaster:負責應用程序相關(guān)的事務,比如任務調(diào)度、任務監(jiān)控和容錯等.
Yarn為AppMstr提供容錯機制, 當AppMstr掛掉后, RM會在一臺資源充足的隨機節(jié)點上重新啟動一個AppMstr.
每一個MapReduce作業(yè)對應一個AppMstr
NodeManager: 管理單節(jié)點上的資源, 處理來自RM的命令, 與RM保持心跳, 處理來自ApplicationMaster的命令.
Container: NM節(jié)點上的資源抽象, 內(nèi)存, CPU, 磁盤, 網(wǎng)絡(luò)等資源的封裝.
YARN的引入,使得多個計算框架可運行在一個集群中. 每個應用程序?qū)粋€ApplicationMaster. 目前可以運行在YARN上的計算框架有MapReduce、Spark、Storm等.
關(guān)于MapReduce運行架構(gòu)以及Yarn資源調(diào)度是怎樣的就分享到這里啦,希望上述內(nèi)容能夠讓大家有所提升。如果想要學習更多知識,請大家多多留意小編的更新。謝謝大家關(guān)注一下創(chuàng)新互聯(lián)網(wǎng)站!
網(wǎng)站題目:MapReduce運行架構(gòu)以及Yarn資源調(diào)度是怎樣的
分享URL:http://aaarwkj.com/article10/igcdgo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、商城網(wǎng)站、品牌網(wǎng)站制作、網(wǎng)站改版、全網(wǎng)營銷推廣、品牌網(wǎng)站設(shè)計
聲明:本網(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)