1. 程式人生 > >Hadoop1.0和Hadoop2.0的區別

Hadoop1.0和Hadoop2.0的區別

文章轉載自「開發者圓桌」一個關於開發者入門、進階、踩坑的微信公眾號

什麼是Hadoop1.0?

Hadoop1.0即第一代Hadoop,指的是版本為Apache Hadoop 0.20.x、1.x或者CDH3系列的Hadoop,核心主要由HDFS和MapReduce兩個系統組成,其中MapReduce是一個離線處理框架,由程式設計模型(新舊API)、執行時環境(JobTracker和TaskTracker)和資料處理引擎(MapTask和ReduceTask)三部分組成。

什麼是Hadoop2.0?

Hadoop2.0即第二代Hadoop,指的是版本為Apache Hadoop 0.23.x、2.x或者CDH4系列的Hadoop,核心主要由HDFS、MapReduce和YARN三個系統組成,其中YARN是一個資源管理系統,負責叢集資源管理和排程,MapReduce則是執行在YARN上的離線處理框架,它與Hadoop 1.0中的MapReduce在程式設計模型(新舊API)和資料處理引擎(MapTask和ReduceTask)兩個方面是相同的。

兩者的區別

從Hadoop整體框架來說

Hadoop1.0由分散式儲存系統HDFS和分散式計算框架MapReduce組成,其中HDFS由一個NameNode和多個DateNode組成,MapReduce由一個JobTracker和多個TaskTracker組成。

Hadoop2.0為克服Hadoop1.0中的不足進行了下面改進:

1、針對Hadoop1.0單NameNode制約HDFS的擴充套件性問題,提出HDFS Federation,它讓多個NameNode分管不同的目錄進而實現訪問隔離和橫向擴充套件,同時徹底解決了NameNode單點故障問題;

2、針對Hadoop1.0中的MapReduce在擴充套件性和多框架支援等方面的不足,它將JobTracker中的資源管理和作業控制分開,分別由ResourceManager(負責所有應用程式的資源分配)和ApplicationMaster(負責管理一個應用程式)實現,即引入了資源管理框架Yarn。

3、Yarn作為Hadoop2.0中的資源管理系統,它是一個通用的資源管理模組,可為各類應用程式進行資源管理和排程,不僅限於MapReduce一種框架,也可以為其他框架使用,如Tez、Spark、Storm等


從MapReduce計算框架來講

MapReduce1.0計算框架主要由三部分組成:程式設計模型、資料處理引擎和執行時環境。它的基本程式設計模型是將問題抽象成Map和Reduce兩個階段,其中Map階段將輸入的資料解析成key/value,迭代呼叫map()函式處理後,再以key/value的形式輸出到本地目錄,Reduce階段將key相同的value進行規約處理,並將最終結果寫到HDFS上;它的資料處理引擎由MapTask和ReduceTask組成,分別負責Map階段邏輯和Reduce階段的邏輯處理;它的執行時環境由一個JobTracker和若干個TaskTracker兩類服務組成,其中JobTracker負責資源管理和所有作業的控制,TaskTracker負責接收來自JobTracker的命令並執行它。


MapReducer2.0具有與MRv1相同的程式設計模型和資料處理引擎,唯一不同的是執行時環境。MRv2是在MRv1基礎上經加工之後,運行於資源管理框架Yarn之上的計算框架MapReduce。它的執行時環境不再由JobTracker和TaskTracker等服務組成,而是變為通用資源管理系統Yarn和作業控制程序ApplicationMaster,其中Yarn負責資源管理的排程而ApplicationMaster負責作業的管理。

Hadoop1與Hadoop2的區分還是非常大,HDFS和MR都有不同,最起碼的配置檔案就不一樣。專案應用的話,建議儘量往高版本走。穩健一點的話稍低於最高版本的一個穩定版本即可。

通過訪問Hadoop官網http://hadoop.apache.org/releases.html,我們可以看到目前Hadoop已經發展到3.0版本。


通過訪問http://mirror.bit.edu.cn/apache/hadoop/common/可以下載需要的Hadoop軟體包,各個版本以及如何選擇穩定版本,請參考圖中標註,其中current目錄表示當前研發中的版本,stable表示當前最穩定的版本,stable1表示Hadoop1.0最穩定版本,同理stable2表示Hadoop2.0最穩定版本。