Hadoop1.0和Hadoop2.0的區(qū)別
一、什么是Hadoop1.0?
Hadoop1.0即***代Hadoop,指的是版本為Apache Hadoop 0.20.x、1.x或者CDH3系列的Hadoop,內(nèi)核主要由HDFS和MapReduce兩個系統(tǒng)組成,其中MapReduce是一個離線處理框架,由編程模型(新舊API)、運行時環(huán)境(JobTracker和TaskTracker)和數(shù)據(jù)處理引擎(MapTask和ReduceTask)三部分組成。
二、什么是Hadoop2.0?
Hadoop2.0即第二代Hadoop,指的是版本為Apache Hadoop 0.23.x、2.x或者CDH4系列的Hadoop,內(nèi)核主要由HDFS、MapReduce和YARN三個系統(tǒng)組成,其中YARN是一個資源管理系統(tǒng),負責集群資源管理和調(diào)度,MapReduce則是運行在YARN上的離線處理框架,它與Hadoop 1.0中的MapReduce在編程模型(新舊API)和數(shù)據(jù)處理引擎(MapTask和ReduceTask)兩個方面是相同的。
三、兩者的區(qū)別
1. 從Hadoop整體框架來說
Hadoop1.0由分布式存儲系統(tǒng)HDFS和分布式計算框架MapReduce組成,其中HDFS由一個NameNode和多個DateNode組成,MapReduce由一個JobTracker和多個TaskTracker組成。
Hadoop2.0為克服Hadoop1.0中的不足進行了下面改進:
(1)針對Hadoop1.0單NameNode制約HDFS的擴展性問題,提出HDFS Federation,它讓多個NameNode分管不同的目錄進而實現(xiàn)訪問隔離和橫向擴展,同時徹底解決了NameNode單點故障問題;
(2)針對Hadoop1.0中的MapReduce在擴展性和多框架支持等方面的不足,它將JobTracker中的資源管理和作業(yè)控制分開,分別由ResourceManager(負責所有應用程序的資源分配)和ApplicationMaster(負責管理一個應用程序)實現(xiàn),即引入了資源管理框架Yarn。
(3)Yarn作為Hadoop2.0中的資源管理系統(tǒng),它是一個通用的資源管理模塊,可為各類應用程序進行資源管理和調(diào)度,不僅限于MapReduce一種框架,也可以為其他框架使用,如Tez、Spark、Storm等
2. 從MapReduce計算框架來講
MapReduce1.0計算框架主要由三部分組成:編程模型、數(shù)據(jù)處理引擎和運行時環(huán)境。它的基本編程模型是將問題抽象成Map和Reduce兩個階段,其中Map階段將輸入的數(shù)據(jù)解析成key/value,迭代調(diào)用map()函數(shù)處理后,再以key/value的形式輸出到本地目錄,Reduce階段將key相同的value進行規(guī)約處理,并將最終結(jié)果寫到HDFS上;它的數(shù)據(jù)處理引擎由MapTask和ReduceTask組成,分別負責Map階段邏輯和Reduce階段的邏輯處理;它的運行時環(huán)境由一個JobTracker和若干個TaskTracker兩類服務組成,其中JobTracker負責資源管理和所有作業(yè)的控制,TaskTracker負責接收來自JobTracker的命令并執(zhí)行它。
MapReducer2.0具有與MRv1相同的編程模型和數(shù)據(jù)處理引擎,唯一不同的是運行時環(huán)境。MRv2是在MRv1基礎上經(jīng)加工之后,運行于資源管理框架Yarn之上的計算框架MapReduce。它的運行時環(huán)境不再由JobTracker和TaskTracker等服務組成,而是變?yōu)橥ㄓ觅Y源管理系統(tǒng)Yarn和作業(yè)控制進程ApplicationMaster,其中Yarn負責資源管理的調(diào)度而ApplicationMaster負責作業(yè)的管理。
Hadoop1與Hadoop2的區(qū)分還是非常大,HDFS和MR都有不同,最起碼的配置文件就不一樣。項目應用的話,建議盡量往高版本走。穩(wěn)健一點的話稍低于***版本的一個穩(wěn)定版本即可。
【本文為51CTO專欄作者“朱國立”的原創(chuàng)稿件,轉(zhuǎn)載請通過作者微信公眾號“開發(fā)者圓桌”獲取聯(lián)系和授權(quán)】