1 回答

TA貢獻2012條經驗 獲得超12個贊
?。?) Hadoop 1.0
第一代Hadoop,由分布式存儲系統HDFS和分布式計算框架MapReduce組成,其中,HDFS由一個NameNode和多個DataNode組成,MapReduce由一個JobTracker和多個TaskTracker組成,對應Hadoop版本為Hadoop 1.x和0.21.X,0.22.x。
?。?) Hadoop 2.0
第二代Hadoop,為克服Hadoop 1.0中HDFS和MapReduce存在的各種問題而提出的。針對Hadoop 1.0中的單NameNode制約HDFS的擴展性問題,提出了HDFS Federation,它讓多個NameNode分管不同的目錄進而實現訪問隔離和橫向擴展;針對Hadoop 1.0中的MapReduce在擴展性和多框架支持方面的不足,提出了全新的資源管理框架YARN(Yet Another Resource Negotiator),它將JobTracker中的資源管理和作業控制功能分開,分別由組件ResourceManager和ApplicationMaster實現,其中,ResourceManager負責所有應用程序的資源分配,而ApplicationMaster僅負責管理一個應用程序。對應Hadoop版本為Hadoop 0.23.x和2.x。
?。?) MapReduce 1.0或者MRv1(MapReduceversion 1)
第一代MapReduce計算框架,它由兩部分組成:編程模型(programming model)和運行時環境(runtime environment)。它的基本編程模型是將問題抽象成Map和Reduce兩個階段,其中Map階段將輸入數據解析成key/value,迭代調用map()函數處理后,再以key/value的形式輸出到本地目錄,而Reduce階段則將key相同的value進行規約處理,并將最終結果寫到HDFS上。它的運行時環境由兩類服務組成:JobTracker和TaskTracker,其中,JobTracker負責資源管理和所有作業的控制,而TaskTracker負責接收來自JobTracker的命令并執行它。
?。?)MapReduce 2.0或者MRv2(MapReduce version 2)或者NextGen MapReduc
MapReduce 2.0或者MRv2具有與MRv1相同的編程模型,唯一不同的是運行時環境。MRv2是在MRv1基礎上經加工之后,運行于資源管理框架YARN之上的MRv1,它不再由JobTracker和TaskTracker組成,而是變為一個作業控制進程ApplicationMaster,且ApplicationMaster僅負責一個作業的管理,至于資源的管理,則由YARN完成。
簡而言之,MRv1是一個獨立的離線計算框架,而MRv2則是運行于YARN之上的MRv1。
?。?)Hadoop-MapReduce(一個離線計算框架)
Hadoop是google分布式計算框架MapReduce與分布式存儲系統GFS的開源實現,由分布式計算框架MapReduce和分布式存儲系統HDFS(Hadoop Distributed File System)組成,具有高容錯性,高擴展性和編程接口簡單等特點,現已被大部分互聯網公司采用。
(6)Hadoop-YARN(Hadoop 2.0的一個分支,實際上是一個資源管理系統)
YARN是Hadoop的一個子項目(與MapReduce并列),它實際上是一個資源統一管理系統,可以在上面運行各種計算框架(包括MapReduce、Spark、Storm、MPI等)。
當前Hadoop版本比較混亂,讓很多用戶不知所措。實際上,當前Hadoop只有兩個版本:Hadoop 1.0和Hadoop 2.0,其中,Hadoop 1.0由一個分布式文件系統HDFS和一個離線計算框架MapReduce組成,而Hadoop 2.0則包含一個支持NameNode橫向擴展的HDFS,一個資源管理系統YARN和一個運行在YARN上的離線計算框架MapReduce。相比于Hadoop 1.0,Hadoop 2.0功能更加強大,且具有更好的擴展性、性能,并支持多種計算框架。
Borg/YARN/Mesos/Torca/Corona一類系統可以為公司構建一個內部的生態系統,所有應用程序和服務可以“和平而友好”地運行在該生態系統上。有了這類系統之后,你不必憂愁使用Hadoop的哪個版本,是Hadoop 0.20.2還是 Hadoop 1.0,你也不必為選擇何種計算模型而苦惱,因此各種軟件版本,各種計算模型可以一起運行在一臺“超級計算機”上了。
從開源角度看,YARN的提出,從一定程度上弱化了多計算框架的優劣之爭。YARN是在Hadoop MapReduce基礎上演化而來的,在MapReduce時代,很多人批評MapReduce不適合迭代計算和流失計算,于是出現了Spark和Storm等計算框架,而這些系統的開發者則在自己的網站上或者論文里與MapReduce對比,鼓吹自己的系統多么先進高效,而出現了YARN之后,則形勢變得明朗:MapReduce只是運行在YARN之上的一類應用程序抽象,Spark和Storm本質上也是,他們只是針對不同類型的應用開發的,沒有優劣之別,各有所長,合并共處,而且,今后所有計算框架的開發,不出意外的話,也應是在YARN之上。這樣,一個以YARN為底層資源管理平臺,多種計算框架運行于其上的生態系統誕生了。
目前spark是一個非常流行的內存計算(或者迭代式計算,DAG計算)框架,在MapReduce因效率低下而被廣為詬病的今天,spark的出現不禁讓大家眼前一亮。
從架構和應用角度上看,spark是一個僅包含計算邏輯的開發庫(盡管它提供個獨立運行的master/slave服務,但考慮到穩定后以及與其他類型作業的繼承性,通常不會被采用),而不包含任何資源管理和調度相關的實現,這使得spark可以靈活運行在目前比較主流的資源管理系統上,典型的代表是mesos和yarn,我們稱之為“spark on mesos”和“spark on yarn”。將spark運行在資源管理系統上將帶來非常多的收益,包括:與其他計算框架共享集群資源;資源按需分配,進而提高集群資源利用率等。
FrameWork On YARN
運行在YARN上的框架,包括MapReduce-On-YARN, Spark-On-YARN, Storm-On-YARN和Tez-On-YARN。
?。?)MapReduce-On-YARN:YARN上的離線計算;
?。?)Spark-On-YARN:YARN上的內存計算;
?。?)Storm-On-YARN:YARN上的實時/流式計算;
?。?)Tez-On-YARN:YARN上的DAG計算
- 1 回答
- 0 關注
- 825 瀏覽
添加回答
舉報