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