1 回答

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