亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

慕雪6442864 2018-12-19 22:18:28
Hadoop,MapReduce,YARN和Spark的區別與聯系
查看完整描述

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計算



查看完整回答
反對 回復 2019-01-05
  • 1 回答
  • 0 關注
  • 825 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號