當前位置:編程學習大全網 - 源碼下載 - Hadoop,MapReduce,YARN和Spark的區別與聯系

Hadoop,MapReduce,YARN和Spark的區別與聯系

(1) Hadoop 1.0

第壹代Hadoop,由分布式存儲系統HDFS和分布式計算框架MapReduce組成,其中,HDFS由壹個NameNode和多個DataNode組成,MapReduce由壹個JobTracker和多個TaskTracker組成,對應Hadoop版本為Hadoop 1.x和0.21.X,0.22.x。

(2) 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。

(3) 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的命令並執行它。

(4)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。

(5)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。

(1)MapReduce-On-YARN:YARN上的離線計算;

(2)Spark-On-YARN:YARN上的內存計算;

(3)Storm-On-YARN:YARN上的實時/流式計算;

(4)Tez-On-YARN:YARN上的DAG計算

  • 上一篇:求網頁飄雪花源代碼
  • 下一篇:匯編以獲得源代碼
  • copyright 2024編程學習大全網