當我們安裝完畢hadoop2的時候,我們看到為啥沒有jobtracker,這是因為hadoop2中已經沒有jobtracer了,而是產生了yarn,yarn是什么那,可以看
yarn詳解,我們為什么已經安裝了,但是卻不知道已經成功了,原因是因為我們缺乏hadoop2的認識,下面介紹了hadoop1.X與hadoop2.X的一些常用概念。
問題導讀:
1.hadoop1.0的組成是什么?
2.hadoop2.0為和變化如此大?
3.什么是YARN?
4.什么是HDFS Federation?

(1)Hadoop 1.0
Hadoop 1.0即第一代Hadoop,由分布式存儲系統HDFS和分布式計算框架MapReduce組成,其中,HDFS由一個NameNode和多個DataNode組成,MapReduce由一個JobTracker和多個TaskTracker組成,對應Hadoop版本為Apache Hadoop 0.20.x、1.x、0.21.X、0.22.x和CDH3。
(2)Hadoop 2.0
Hadoop 2.0即第二代Hadoop,為克服Hadoop 1.0中HDFS和MapReduce存在的各種問題而提出的。針對Hadoop 1.0中的單NameNode制約HDFS的擴展性問題,提出了HDFS Federation,它讓多個NameNode分管不同的目錄進而實現訪問隔離和橫向擴展,同時它徹底解決了NameNode 單點故障問題;針對Hadoop 1.0中的MapReduce在擴展性和多框架支持等方面的不足,它將JobTracker中的資源管理和作業控制功能分開,分別由組件ResourceManager和ApplicationMaster實現,其中,ResourceManager負責所有應用程序的資源分配,而ApplicationMaster僅負責管理一個應用程序,進而誕生了全新的通用資源管理框架YARN。基於YARN,用戶可以運行各種類型的應用程序(不再像1.0那樣僅局限於MapReduce一類應用),從離線計算的MapReduce到在線計算(流式處理)的Storm等。Hadoop 2.0對應Hadoop版本為Apache Hadoop 0.23.x、2.x和CDH4。
(3)MapReduce 1.0或MRv1
MapReduce 1.0計算框架主要由三部分組成,分別是編程模型、數據處理引擎和運行時環境。它的基本編程模型是將問題抽象成Map和Reduce兩個階段,其中Map階段將輸入數據解析成key/value,迭代調用map()函數處理后,再以key/value的形式輸出到本地目錄,而Reduce階段則將key相同的value進行規約處理,並將最終結果寫到HDFS上;它的數據處理引擎由MapTask和ReduceTask組成,分別負責Map階段邏輯和Reduce階段邏輯的處理;它的運行時環境由(一個)JobTracker和(若干個)TaskTracker兩類服務組成,其中,JobTracker負責資源管理和所有作業的控制,而TaskTracker負責接收來自JobTracker的命令並執行它。該框架在擴展性、容錯性和多框架支持等方面存在不足,這也促使了MRv2的產生。
(4)MRv2
MRv2具有與MRv1相同的編程模型和數據處理引擎,唯一不同的是運行時環境。MRv2是在MRv1基礎上經加工之后,運行於資源管理框架YARN之上的計算框架MapReduce。它的運行時環境不再由JobTracker和TaskTracker等服務組成,而是變為通用資源管理系統YARN和作業控制進程ApplicationMaster,其中,YARN負責資源管理和調度,而ApplicationMaster僅負責一個作業的管理。簡言之,MRv1僅是一個獨立的離線計算框架,而MRv2則是運行於YARN之上的MapReduce。
(5)YARN
YARN是Hadoop 2.0中的資源管理系統,它是一個通用的資源管理模塊,可為各類應用程序進行資源管理和調度。YARN不僅限於MapReduce一種框架使用,也可以供其他框架使用,比如Tez(將在第9章介紹)、Spark、Storm(將在第10章介紹)等。YARN類似於幾年前的資源管理系統Mesos(將在12章介紹)和更早的Torque(將在6章介紹)。由於YARN的通用性,下一代MapReduce的核心已經從簡單的支持單一應用的計算框架MapReduce轉移到通用的資源管理系統YARN。
(6)HDFS Federation
Hadoop 2.0中對HDFS進行了改進,使NameNode可以橫向擴展成多個,每個NameNode分管一部分目錄,進而產生了HDFS Federation,該機制的引入不僅增強了HDFS的擴展性,也使HDFS具備了隔離性。