更新時間:2021年04月14日17時32分 來源:傳智教育 瀏覽次數(shù):
Hadoop發(fā)行版本分為開源社區(qū)版和商業(yè)版,社區(qū)版是指由Apache軟件基金會維護(hù)的版本,是官方維護(hù)的版本體系。商業(yè)版Hadoop是指由第三方商業(yè)公司在社區(qū)版Hadoop基礎(chǔ)上進(jìn)行了一些修改、整合以及各個服務(wù)組件兼容性測試而發(fā)行的版本,例如比較著名的有Cloudera公司的CDH版本。
為了方便學(xué)習(xí),本書采用開源社區(qū)版,而Hadoop自誕生以來,主要分為Hadoop1、Hadoop2、Hadoop3三個系列的多個版本。由于目前市場上最主流的是Hadoop2.x版本,因此,本書只針對Hadoop2.x版本進(jìn)行相關(guān)介紹。
Hadoop2.x版本指的是第2代Hadoop,它是從Hadoop1.x發(fā)展而來的,并且相對于Hadoop1.x來說,有很多改進(jìn)。下面我們從Hadoop1.x到Hadoop2.x發(fā)展的角度,對兩版本進(jìn)行講解,如圖1所示。
圖1 Hadoop版本內(nèi)核演變
通過圖1可以看出,Hadoop1.0內(nèi)核主要由分布式存儲系統(tǒng)HDFS和分布式計(jì)算框架MapReduce兩個系統(tǒng)組成,而Hadoop2.x版本主要新增了資源管理框架Yarn以及其他工作機(jī)制的改變。
在Hadoop1.x版本中,HDFS與MapReduce結(jié)構(gòu)如圖2和3所示。
圖2 HDFS組成結(jié)構(gòu)
? 圖3 MapReduce組成結(jié)構(gòu)
從圖2可以看出,HDFS由一個NameNode和多個DateNode組成,其中,DataNode負(fù)責(zé)存儲數(shù)據(jù),但是數(shù)據(jù)具體存儲到哪個DataNode節(jié)點(diǎn),則是由NameNode來決定的。
從圖3可以看出MapReduce由一個JobTracker和多個TaskTracker組成,其中,MapReduce的主節(jié)點(diǎn)JobTracker只有一個,從節(jié)點(diǎn)TaskTracker有很多個,JobTracker與TaskTracker在MapReduce中的角色就像是項(xiàng)目經(jīng)理與開發(fā)人員的關(guān)系,而JobTracker負(fù)責(zé)接收用戶提交的計(jì)算任務(wù)、將計(jì)算任務(wù)分配給TaskTracker執(zhí)行、跟蹤,JobTracker同時監(jiān)控TaskTracker的任務(wù)執(zhí)行狀況等。當(dāng)然,TaskTracker只負(fù)責(zé)執(zhí)行JobTracker分配的計(jì)算任務(wù),正是由于這種機(jī)制,Hadoop1.x架構(gòu)中的HDFS和MapReduce存在以下缺陷:
(1)HDFS中的NameNode、SecondaryNode單點(diǎn)故障,風(fēng)險是比較大的。其次,NameNode內(nèi)存受限不好擴(kuò)展,因?yàn)镠adoop1.x版本中的HDFS只有一個NameNode,并且要管理所有的DataNode。
(2)MapReduce中的JobTracker職責(zé)過多,訪問壓力太大,會影響系統(tǒng)穩(wěn)定。除此之外,MapReduce難以支持除自身以外的框架,擴(kuò)展性較低的不足。
Hadoop2.x版本為克服Hadoop1.x中的不足,對其架構(gòu)進(jìn)行了以下改進(jìn):
(1)Hadoop2.x可以同時啟動多個NameNode,其中一個處于工作(Active)狀態(tài),另一個處于隨時待命(Standby)狀態(tài),這種機(jī)制被稱為Hadoop HA(Hadoop高可用),這樣當(dāng)一個NameNode所在的服務(wù)器宕機(jī)時,可以在數(shù)據(jù)不丟失的情況下,自動切換到另一個NameNode持續(xù)提供服務(wù)。
(2)Hadoop2.x將JobTracker中的資源管理和作業(yè)控制分開,分別由ResourceManager(負(fù)責(zé)所有應(yīng)用程序的資源分配)和ApplicationMaster(負(fù)責(zé)管理一個應(yīng)用程序)實(shí)現(xiàn),即引入了資源管理框架Yarn,它是一個通用的資源管理框架,可以為各類應(yīng)用程序進(jìn)行資源管理和調(diào)度,不僅限于MapReduce一種框架,也可以為其他框架使用,如Tez、Spark、Storm,這種設(shè)計(jì)不僅能夠增強(qiáng)不同計(jì)算模型和各種應(yīng)用之間的交互,使集群資源得到高效利用,而且能更好地與企業(yè)中已經(jīng)存在的計(jì)算結(jié)構(gòu)集成在一起。
(3)Hadoop2.x中的MapReduce是運(yùn)行在Yarn上的離線處理框架,它的運(yùn)行環(huán)境不再由JobTracker和TaskTracker等服務(wù)組成,而是變成通用資源管理Yarn和作業(yè)控制進(jìn)程ApplicationMaster,從而使MapReduce在速度上和可用性上都有很大的提高。
猜你喜歡:
如何遠(yuǎn)程登錄Hadoop虛擬機(jī)和開啟SSH服務(wù)?
Hadoop安裝教程,8大安裝目錄的內(nèi)容和作用分別是什么?
北京校區(qū)