Yarn

MapReduce

MapReduce的架構(gòu)

MapReduce是一個(gè)用于大規(guī)模數(shù)據(jù)處理的分布式計(jì)算模型
MapReduce模型主要有Mapper和Reducer兩個(gè)抽象類(lèi).
Mapper端主要負(fù)責(zé)對(duì)數(shù)據(jù)的分析處理,最終轉(zhuǎn)化為Key-value的數(shù)據(jù)結(jié)構(gòu)
Reducer端主要是獲取Mapper出來(lái)的結(jié)果欠啤,對(duì)結(jié)果進(jìn)行統(tǒng)計(jì)
MapReduce實(shí)現(xiàn)存儲(chǔ)的均衡萌壳,未實(shí)現(xiàn)計(jì)算的均衡

MapReduce的問(wèn)題

  • JobTracker存在單點(diǎn)故障的隱患毁腿。在Yarn中RM實(shí)現(xiàn)了HA。
  • JobTracker的職責(zé)多樣廓脆,且消耗的資源隨著集群和作業(yè)的數(shù)量增加而增加,更加劇了JobTracker掛掉的風(fēng)險(xiǎn)磁玉。
  • 代碼復(fù)雜停忿,bug修復(fù)和新增功能難度較大。
  • 無(wú)法支持更多的計(jì)算模型蚊伞。
  • 資源劃分粒度過(guò)大:在 TaskTracker 端席赂,以 map/reduce task 的數(shù)目作為資源的表示過(guò)于簡(jiǎn)單,沒(méi)有考慮到 cpu/ 內(nèi)存的占用情況厚柳,這種基于無(wú)類(lèi)別slot的資源劃分方法的劃分粒度仍過(guò)于粗糙氧枣,往往會(huì)造成節(jié)點(diǎn)資源利用率過(guò)高或者過(guò)低 ,比如别垮,管理員事先規(guī)劃好一個(gè)slot代表2GB內(nèi)存和1個(gè)CPU便监,如果一個(gè)應(yīng)用程序的任務(wù)只需要1GB內(nèi)存,則會(huì)產(chǎn)生“資源碎片”碳想,從而降低集群資源的利用率烧董,同樣,如果一個(gè)應(yīng)用程序的任務(wù)需要3GB內(nèi)存胧奔,則會(huì)隱式地?fù)屨计渌蝿?wù)的資源逊移,從而產(chǎn)生資源搶占現(xiàn)象,可能導(dǎo)致集群利用率過(guò)高龙填。如果兩個(gè)大內(nèi)存消耗的 task 被調(diào)度到了一塊胳泉,很容易出現(xiàn) OOM拐叉。
  • 資源無(wú)法共享:在 TaskTracker 端,把資源強(qiáng)制劃分為 map task slot 和 reduce task slot扇商,且不允許共享凤瘦。對(duì)于一個(gè)作業(yè),剛開(kāi)始運(yùn)行時(shí)案铺,Map slot資源緊缺而Reduce slot空閑蔬芥,當(dāng)Map Task全部運(yùn)行完成后,Reduce slot緊缺而Map slot空閑控汉。很明顯笔诵,這種區(qū)分slot類(lèi)別的資源管理方案在一定程度上降低了slot的利用率。在Yarn中是分階段獲取資源的姑子,且這個(gè)階段是可以配置的乎婿。
  • 資源沒(méi)有有效的隔離:CPU無(wú)法進(jìn)行隔離,應(yīng)用之間產(chǎn)生資源競(jìng)爭(zhēng)壁酬,相互干擾影響執(zhí)行效果次酌。

Yarn MapReduce2

Apache Yarn(Yet Another Resource Negotiator) 是Hadoop的新一代集群資源管理系統(tǒng)。最初舆乔,Yarn的出現(xiàn)是為了改善之前版本中MapReduce中的缺陷岳服,但是Yarn被設(shè)計(jì)的有足夠的抽象與通用,現(xiàn)在希俩,MapReduce任務(wù)只是Yarn 應(yīng)用中的一種吊宋,它還支持Tez、Spark等分布式計(jì)算模式颜武。我們比較熟悉的hive璃搜、pig與Yarn并沒(méi)有直接的協(xié)作關(guān)系,他們都是運(yùn)行在MapReduce鳞上、spark或Tez之上的这吻。

Yarn應(yīng)用

Yarn的架構(gòu)

Yarn架構(gòu)

我們?nèi)匀豢梢哉J(rèn)為它是采用了master/slave的架構(gòu),主要由以下幾個(gè)部分組成:

  1. ResourceManager:負(fù)責(zé)Yarn集群的資源管理篙议,任務(wù)的調(diào)度和監(jiān)控唾糯。整個(gè)系統(tǒng)只有一個(gè)是live狀態(tài)的(HA的時(shí)候另外一個(gè)是stand狀態(tài)的),它支持可插拔的資源調(diào)度器鬼贱,自帶了FIFO移怯、Fair Scheduler和Capacity Scheduler三種調(diào)度器;
  2. ApplicationMaster:負(fù)責(zé)管理單個(gè)應(yīng)用程序这难,它想RM申請(qǐng)資源舟误,并用這些資源啟動(dòng)內(nèi)部的任務(wù),同時(shí)負(fù)責(zé)任務(wù)的運(yùn)行監(jiān)控和容錯(cuò)等姻乓。
  3. NodeManager:集群中計(jì)算節(jié)點(diǎn)上的節(jié)點(diǎn)管理器嵌溢,負(fù)責(zé)單個(gè)節(jié)點(diǎn)上的資源管理和監(jiān)控眯牧,它定期將資源的使用情況報(bào)告給RM。并接收ApplicationMaster的命令以啟動(dòng)和回收Container等赖草。
  4. Container:對(duì)資源的抽象封裝炸站,它按照配置封裝了某個(gè)節(jié)點(diǎn)上的CPU、內(nèi)存等資源疚顷,一個(gè)Container既可以是一個(gè)Linux進(jìn)程也可以是一個(gè)cGroup,這取決于具體的配置禁偎。

Yarn和MapReduce1的組件比較

MapReduce1 Yarn
JobTracker ResourceManager腿堤、application master、時(shí)間軸服務(wù)器
TaskTracker NodeManager
Slot Container

ResourceManager

它同事包含兩個(gè)組件NodeManagers (NMs) 和 ApplicationMasters (AMs)如暖。

  1. NodeManagers從RM接收指令并管理單個(gè)節(jié)點(diǎn)上的可用資源笆檀。
  2. ApplicationMasters 與ResourceManager協(xié)調(diào)資源,并與NodeManagers一起啟動(dòng)容器盒至。
  3. Scheduler: 支持插件酗洒,以實(shí)現(xiàn)不同的資源調(diào)度方案。
ResourceManager

Yarn的資源管理方案

Yarn丟棄了在MapReduce1中的slot的概念枷遂,而是讓ApplicationMaster向RM申請(qǐng)自己需要的資源(比如某個(gè)任務(wù)可申請(qǐng)1.5GB 內(nèi)存和1個(gè)CPU)樱衷,而調(diào)度器則按照任務(wù)實(shí)際需求為其精細(xì)地分配對(duì)應(yīng)的資源量,不再簡(jiǎn)單的將一個(gè)Slot分配給它酒唉,Hadoop 2.0正式采用了這種基于真實(shí)資源量的資源分配方案矩桂。
http://dongxicheng.org/mapreduce-nextgen/hadoop-1-and-2-resource-manage/

提交Yarn應(yīng)用程序的過(guò)程

  • 步驟1:用戶(客戶端)將應(yīng)用程序提交到ResourceManager上,請(qǐng)求允許application master痪伦;
  • 步驟2:RM找到一個(gè)可以在容器里啟動(dòng)這個(gè)application master的節(jié)點(diǎn)侄榴。
    • 這里如果能夠完成計(jì)算的話就計(jì)算并返回結(jié)果到客戶端。
    • 步驟3:還可以從RM請(qǐng)求更多的容器(資源)网沾。
  • 步驟4a和4b:從第步驟3開(kāi)始癞蚕,運(yùn)行一個(gè)分布式計(jì)算。
yarn應(yīng)用的啟動(dòng)

多種計(jì)算框架部署在Yarn上

隨著yarn和各個(gè)計(jì)算框架的發(fā)展辉哥,慢慢形成了一種以Yarn為核心的生態(tài)系統(tǒng)桦山,Yarn負(fù)責(zé)管理和監(jiān)控整個(gè)集群的的資源,好處是顯而易見(jiàn)的证薇。

  1. 應(yīng)用程序的部署將變的簡(jiǎn)單度苔,管理員只需要部署Yarn服務(wù)即可,各類(lèi)應(yīng)用不需要自帶的服務(wù)浑度,它們?cè)谀承┮饬x上變成了編程庫(kù)寇窑。Spark集群不需要單獨(dú)部署,直接是Spark-On-Yarn箩张。甚至甩骏,我們可以自己寫(xiě)一些應(yīng)用跑在Yarn上窗市,后面我們會(huì)有spring-yarn的例子。
  2. 服務(wù)之間是隔離的饮笛。Yarn提供的服務(wù)很專(zhuān)業(yè)也很純粹咨察,只是提供資源的管理和監(jiān)控,Yarn上面運(yùn)行什么服務(wù)是由用戶自己決定的福青。
  3. 資源的彈性利用摄狱,對(duì)提高資源的利用效率有很大幫助,比如離線計(jì)算无午、實(shí)時(shí)計(jì)算媒役、DAG計(jì)算等。Yarn可以根據(jù)不同類(lèi)型的應(yīng)用程序壓力情況宪迟,調(diào)整對(duì)應(yīng)的資源使用量酣衷。

運(yùn)行在Yarn上的計(jì)算框架

下面舉幾個(gè)例子。

  1. MapReduce-On-YARN:YARN上的離線計(jì)算次泽,YARN發(fā)行版中自帶該實(shí)現(xiàn)穿仪;
  2. Spark-On-YARN:YARN上的內(nèi)存計(jì)算;
  3. Storm-On-YARN:YARN上的實(shí)時(shí)/流式計(jì)算意荤;
  4. Tez-On-YARN:YARN上的DAG計(jì)算啊片,我們目前的Hive底層就是用到了這個(gè)計(jì)算框架。

Yarn調(diào)度器

  1. FIFO調(diào)度器:hadoop默認(rèn)的調(diào)度器袭异,它按照作業(yè)的優(yōu)先級(jí)高低先排序钠龙,再按照作業(yè)的先來(lái)后到排序執(zhí)行作業(yè)。
  2. 計(jì)算能力調(diào)度器Capacity Scheduler:它配置了多個(gè)隊(duì)列御铃,每個(gè)隊(duì)列占用集群的一定百分比的資源量碴里,在每個(gè)隊(duì)列內(nèi)部采用FIFO調(diào)度策略,它的缺點(diǎn)在于犧牲了部分資源利用率上真。

調(diào)度器的一些配置

應(yīng)用允許的占用最大資源率
  • 彈性隊(duì)列咬腋,單個(gè)作業(yè)的資源一般不會(huì)超過(guò)隊(duì)列的總量。如果多個(gè)資源運(yùn)行且當(dāng)前隊(duì)列的資源不夠用了睡互,是可以彈性的使用其他隊(duì)列的資源的根竿;另外,如果下面的選項(xiàng)yarn.scheduler.capacity.<queue-path>.user-limit-factor > 1 則y一個(gè)作業(yè)可以使用超過(guò)隊(duì)列總量的資源就珠。
  • 隊(duì)列的等待與搶占寇壳,自己的隊(duì)列之前是空閑的,然后被被別的隊(duì)列占用了妻怎,那么只能是等待占用了這個(gè)資源的應(yīng)用釋放容器資源壳炎。還可以是搶占的,但是這樣會(huì)影響作業(yè)的執(zhí)行效率逼侦。
  • 其他配置匿辩,可以配置用戶或者應(yīng)用最多能占用集群資源的多少腰耙,以及隊(duì)列的ACL認(rèn)證等。
用戶限制
  1. 公平調(diào)度器Fair Scheduler
    公平調(diào)度器也可以有多隊(duì)列的組合铲球,并且可以給每個(gè)隊(duì)列配置一個(gè)權(quán)重挺庞。在隊(duì)列中允許以FIFO的策略執(zhí)行作業(yè)。
    公平調(diào)度器與多隊(duì)列
Yarn上最常見(jiàn)的三種調(diào)度器

reference:
http://www.reibang.com/p/b3afeb1daf3a
http://hadoop.apache.org/docs/r2.4.1/hadoop-yarn/hadoop-yarn-site/YARN.html
http://dongxicheng.org/mapreduce-nextgen/apache-hadoop-yarn-paper-on-socc2013/

http://blog.csdn.net/suifeng3051/article/details/49508261

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末稼病,一起剝皮案震驚了整個(gè)濱河市选侨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌然走,老刑警劉巖侵俗,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異丰刊,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)增拥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)啄巧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人掌栅,你說(shuō)我怎么就攤上這事秩仆。” “怎么了猾封?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵澄耍,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我晌缘,道長(zhǎng)齐莲,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任磷箕,我火速辦了婚禮选酗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘岳枷。我一直安慰自己芒填,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布空繁。 她就那樣靜靜地躺著殿衰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪盛泡。 梳的紋絲不亂的頭發(fā)上闷祥,一...
    開(kāi)封第一講書(shū)人閱讀 51,698評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音饭于,去河邊找鬼蜀踏。 笑死维蒙,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的果覆。 我是一名探鬼主播颅痊,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼局待!你這毒婦竟也來(lái)了斑响?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤钳榨,失蹤者是張志新(化名)和其女友劉穎舰罚,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體薛耻,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡营罢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了饼齿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片饲漾。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖缕溉,靈堂內(nèi)的尸體忽然破棺而出考传,到底是詐尸還是另有隱情,我是刑警寧澤证鸥,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布僚楞,位于F島的核電站,受9級(jí)特大地震影響枉层,放射性物質(zhì)發(fā)生泄漏泉褐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一鸟蜡、第九天 我趴在偏房一處隱蔽的房頂上張望兴枯。 院中可真熱鬧,春花似錦矩欠、人聲如沸财剖。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)躺坟。三九已至,卻和暖如春乳蓄,著一層夾襖步出監(jiān)牢的瞬間咪橙,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留美侦,地道東北人产舞。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像菠剩,于是被迫代替她去往敵國(guó)和親易猫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容