yarn是什么?
Hadoop 它是一個分布式系統(tǒng)基礎(chǔ)架構(gòu),由Apache基金會所開發(fā)。 用戶可以在不了解分布式底層細節(jié)的情況下,開發(fā)分布式程序。充分利用集群的威力進行高速運算和存儲。 hadoop的框架最核心的設(shè)計就是:HDFS和MapReduce.HDFS為海量的數(shù)據(jù)提供了存儲,則MapReduce為海量的數(shù)據(jù)提供了計算。 Yarn 它是Hadoop2.0的升級版。 Yarn的優(yōu)點: 這個設(shè)計大大減小了JobTracker(也就是現(xiàn)在的ResourceManager)的資源消耗,并且讓監(jiān)測每一個Job子任務(wù)(tasks)狀態(tài)的程序分布式化了,更安全、更優(yōu)美。 在新的Yarn中,ApplicationMaster是一個可變更的部分,用戶可以對不同的編程模型寫自己的AppMst,讓更多類型的編程模型能夠跑在Hadoop集群中,可以參考hadoopYarn官方配置模板中的mapred-site.xml配置。 對于資源的表示以內(nèi)存為單位(在目前版本的Yarn中,沒有考慮cpu的占用),比之前以剩余slot數(shù)目更合理。 老的框架中,JobTracker一個很大的負擔(dān)就是監(jiān)控job下的tasks的運行狀況,現(xiàn)在,這個部分就扔給ApplicationMaster做了,而ResourceManager中有一個模塊叫做ApplicationsMasters(注意不是ApplicationMaster),它是監(jiān)測ApplicationMaster的運行狀況,如果出問題,會將其在其他機器上重啟。 Container是Yarn為了將來作資源隔離而提出的一個框架。這一點應(yīng)該借鑒了Mesos的工作,目前是一個框架,僅僅提供java虛擬機內(nèi)存的隔離,hadoop團隊的設(shè)計思路應(yīng)該后續(xù)能支持更多的資源調(diào)度和控制,既然資源表示成內(nèi)存量,那就沒有了之前的mapslot/reduceslot分開造成集群資源閑置的尷尬情況。 Spark Spark是UCBerkeleyAMPlab所開源的類HadoopMapReduce的通用的并行計算框架,Spark基于mapreduce算法實現(xiàn)的分布式計算,擁有HadoopMapReduce所具有的優(yōu)點;但不同于MapReduce的是Job中間輸出結(jié)果可以保存在內(nèi)存中,從而不再需要讀寫HDFS,因此Spark能更好地適用于數(shù)據(jù)挖掘與機器學(xué)習(xí)等需要迭代的mapreduce的算法。 他們?nèi)齻€其實也可以說Hadoop發(fā)展的幾個階段,目前Spark非常火,是用Scala語言寫的。