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