大數(shù)據(jù)Hadoop 技術(shù)內(nèi)幕:Hadoop 1.x與Hadoop 2.x

一、Hadoop2.0產(chǎn)生的背景

——Hadoop 1.0中HDFS和MapReduce在高可用、擴展性等方面存在問題

——HDFS存在的問題

·NameNode單點故障,難以應用于在線場景 HA

·NameNode壓力過大,且內(nèi)存受限,影擴展性 F

——MapReduce存在的問題響系統(tǒng)

·JobTracker訪問壓力大,影響系統(tǒng)擴展性

·難以支持除MapReduce之外的計算框架,比如Spark、Storm等

二、Hadoop 1.x與Hadoop 2.x

——Hadoop 2.x由HDFS、MapReduce和YARN三個分支構(gòu)成;

·HDFS:NN Federation(聯(lián)邦)、HA;

---2.X:只支持2個節(jié)點HA,3.0實現(xiàn)了一主多備

·MapReduce:運行在YARN上的MR;

---離線計算,基于磁盤I/O計算

·YARN:資源管理系統(tǒng)

Hadoop1.0

Hadoop1.0

從上圖中可以清楚的看出原 MapReduce 程序的流程及設計思路:

首先用戶程序 (JobClient) 提交了一個 job,job 的信息會發(fā)送到 Job Tracker 中,Job Tracker 是 Map-reduce 框架的中心,他需要與集群中的機器定時通信 (heartbeat), 需要管理哪些程序應該跑在哪些機器上,需要管理所有 job 失敗、重啟等操作。

TaskTracker 是 Map-reduce 集群中每臺機器都有的一個部分,他做的事情主要是監(jiān)視自己所在機器的資源情況。

TaskTracker 同時監(jiān)視當前機器的 tasks 運行狀況。TaskTracker 需要把這些信息通過 heartbeat 發(fā)送給 JobTracker,JobTracker 會搜集這些信息以給新提交的 job 分配運行在哪些機器上。上圖虛線箭頭就是表示消息的發(fā)送 - 接收的過程。

可以看得出原來的 map-reduce 架構(gòu)是簡單明了的,在最初推出的幾年,也得到了眾多的成功案例,獲得業(yè)界廣泛的支持和肯定,但隨著分布式系統(tǒng)集群的規(guī)模和其工作負荷的增長,原框架的問題逐漸浮出水面,主要的問題集中如下:

JobTracker 是 Map-reduce 的集中處理點,存在單點故障。

JobTracker 完成了太多的任務,造成了過多的資源消耗,當 map-reduce job 非常多的時候,會造成很大的內(nèi)存開銷,潛在來說,也增加了 JobTracker fail 的風險,這也是業(yè)界普遍總結(jié)出老 Hadoop 的 Map-Reduce 只能支持 4000 節(jié)點主機的上限。

在 TaskTracker 端,以 map/reduce task 的數(shù)目作為資源的表示過于簡單,沒有考慮到 cpu/ 內(nèi)存的占用情況,如果兩個大內(nèi)存消耗的 task 被調(diào)度到了一塊,很容易出現(xiàn) OOM。

在 TaskTracker 端,把資源強制劃分為 map task slot 和 reduce task slot, 如果當系統(tǒng)中只有 map task 或者只有 reduce task 的時候,會造成資源的浪費,也就是前面提過的集群資源利用的問題。

源代碼層面分析的時候,會發(fā)現(xiàn)代碼非常的難讀,常常因為一個 class 做了太多的事情,代碼量達 3000 多行,,造成 class 的任務不清晰,增加 bug 修復和版本維護的難度。

從操作的角度來看,現(xiàn)在的 Hadoop MapReduce 框架在有任何重要的或者不重要的變化 ( 例如 bug 修復,性能提升和特性化 ) 時,都會強制進行系統(tǒng)級別的升級更新。更糟的是,它不管用戶的喜好,強制讓分布式集群系統(tǒng)的每一個用戶端同時更新。這些更新會讓用戶為了驗證他們之前的應用程序是不是適用新的 Hadoop 版本而浪費大量時間。

Hadoop2.0

Hadoop2.0

從業(yè)界使用分布式系統(tǒng)的變化趨勢和 hadoop 框架的長遠發(fā)展來看,MapReduce JobTracker/TaskTracker 機制需要大規(guī)模的調(diào)整來修復它在可擴展性,內(nèi)存消耗,線程模型,可靠性和性能上的缺陷。在過去的幾年中,hadoop 開發(fā)團隊做了一些 bug 的修復,但是最近這些修復的成本越來越高,這表明對原框架做出改變的難度越來越大。

為從根本上解決舊 MapReduce 框架的性能瓶頸,促進 Hadoop 框架的更長遠發(fā)展,從 0.23.0 版本開始,Hadoop 的 MapReduce 框架完全重構(gòu),發(fā)生了根本的變化。新的 Hadoop MapReduce 框架命名為 MapReduceV2 或者叫 Yarn,重構(gòu)根本的思想是將 JobTracker 兩個主要的功能分離成單獨的組件,這兩個功能是資源管理和任務調(diào)度 / 監(jiān)控。新的資源管理器全局管理所有應用程序計算資源的分配,每一個應用的 ApplicationMaster 負責相應的調(diào)度和協(xié)調(diào)。一個應用程序無非是一個單獨的傳統(tǒng)的 MapReduce 任務或者是一個 DAG( 有向無環(huán)圖 ) 任務。ResourceManager 和每一臺機器的節(jié)點管理服務器能夠管理用戶在那臺機器上的進程并能對計算進行組織。

事實上,每一個應用的 ApplicationMaster 是一個詳細的框架庫,它結(jié)合ResourceManager 獲得的資源和 NodeManager 協(xié)同工作來運行和監(jiān)控任務。

上圖中 ResourceManager 支持分層級的應用隊列,這些隊列享有集群一定比例的資源。從某種意義上講它就是一個純粹的調(diào)度器,它在執(zhí)行過程中不對應用進行監(jiān)控和狀態(tài)跟蹤。同樣,它也不能重啟因應用失敗或者硬件錯誤而運行失敗的任務。

ResourceManager 是基于應用程序?qū)Y源的需求進行調(diào)度的 ; 每一個應用程序需要不同類型的資源因此就需要不同的容器。資源包括:內(nèi)存,CPU,磁盤,網(wǎng)絡等等。可以看出,這同現(xiàn) Mapreduce 固定類型的資源使用模型有顯著區(qū)別,它給集群的使用帶來負面的影響。資源管理器提供一個調(diào)度策略的插件,它負責將集群資源分配給多個隊列和應用程序。調(diào)度插件可以基于現(xiàn)有的能力調(diào)度和公平調(diào)度模型。

上圖中 NodeManager 是每一臺機器框架的代理,是執(zhí)行應用程序的容器,監(jiān)控應用程序的資源使用情況 (CPU,內(nèi)存,硬盤,網(wǎng)絡 ) 并且向調(diào)度器匯報。

每一個應用的 ApplicationMaster 的職責有:向調(diào)度器索要適當?shù)馁Y源容器,運行任務,跟蹤應用程序的狀態(tài)和監(jiān)控它們的進程,處理任務的失敗原因。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,527評論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,687評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,640評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,957評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,682評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,011評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,009評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,183評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,714評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,435評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,665評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,148評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,838評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,251評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,588評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,379評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,627評論 2 380

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