扣丁學(xué)堂大數(shù)據(jù)淺談Hadoop生態(tài)系統(tǒng)各組件與Yarn的兼容性
2018-09-27 14:53:26
1494瀏覽
今天扣丁學(xué)堂大數(shù)據(jù)培訓(xùn)老師給大家介紹一下關(guān)于Hadoop生態(tài)系統(tǒng)各組件與Yarn的兼容性詳解,首先作為Hadoop2.0中出現(xiàn)的資源管理系統(tǒng),Yarn總體上仍然是master/slave結(jié)構(gòu),在整個(gè)資源管理框架中,resourcemanager為master,nodemanager是slave。作為Hadoop生態(tài)系統(tǒng)的一部分,Yarn要想獲得市場(chǎng)認(rèn)可,必須學(xué)會(huì)與Hadoop生他系統(tǒng)中其他組件兼容,下面我們一起來(lái)看一下吧。
1、Yarn應(yīng)用程序
隨著時(shí)間的推移,我們已經(jīng)看到了Yarn生態(tài)系統(tǒng)的快速增長(zhǎng)。如今,我們生活在多數(shù)據(jù)中心運(yùn)行多個(gè)不同系統(tǒng)的世界,如圖2.13所示。所有系統(tǒng)都有其存在的價(jià)值,但對(duì)系統(tǒng)管理員和架構(gòu)師帶來(lái)了前所未有的挑戰(zhàn),他們需要支持這些系統(tǒng)并保證它們正常運(yùn)轉(zhuǎn),系統(tǒng)之間的數(shù)據(jù)交換成本昂貴且復(fù)雜,每個(gè)系統(tǒng)都必須解決相同的分布式問(wèn)題,例如容錯(cuò)、分布式存儲(chǔ)、日志處理以及資源調(diào)度等。
既然身在Hadoop生態(tài)之中,Yarn團(tuán)隊(duì)也為其融入整個(gè)生態(tài)和企業(yè)技術(shù)架構(gòu)做出了很多努力,Yarn目前已經(jīng)可以和多類(lèi)組件或應(yīng)用實(shí)現(xiàn)兼容。比如,Hoya的出現(xiàn)讓HBase可以運(yùn)行在Yarn之上,可靈活得將數(shù)據(jù)移入和移出,Hoya與Yarn集成也可以提供彈性按需計(jì)算,在單個(gè)Yarn集群可運(yùn)行多個(gè)HBase集群。
2、NoSQL
對(duì)于NoSQL的概念,此處就不在贅述了,簡(jiǎn)而言之,這是不遵循ACID原則的實(shí)時(shí)CRUD操作系統(tǒng)。NoSQL的出現(xiàn)是為了解決單片OLAP系統(tǒng)的缺點(diǎn),因?yàn)槠渥璧K了系統(tǒng)架構(gòu)擴(kuò)展和提供響應(yīng)服務(wù)的能力。雖然存在很多NoSQL系統(tǒng),但沒(méi)有任何一個(gè)系統(tǒng)與Hadoop的集成比HBase更多。在Yarn出現(xiàn)之前,HBase的目標(biāo)是使用HDFS進(jìn)行存儲(chǔ),并從與MapReduce的緊密集成中受益,批量處理功能的加入讓其得以超越競(jìng)爭(zhēng)對(duì)手。但是,Yarn為HBase解決了兩大挑戰(zhàn),一是HBase和MapReduce共存于集群上帶來(lái)的資源管理方面的挑戰(zhàn),因?yàn)闆](méi)有簡(jiǎn)單的方法來(lái)保證兩個(gè)系統(tǒng)的SLA,Yarn利用Linux中cgroups提供的并發(fā)執(zhí)行進(jìn)程,保證訪(fǎng)問(wèn)所需資源。二是Yarn讓HBase能夠在同一個(gè)Hadoop集群上運(yùn)行多個(gè)HBase集群,這就是上文提到的Hoya項(xiàng)目。
3、SQLonHadoop
SQLonHadoop無(wú)疑是目前的熱門(mén)研究方向。在Hadoop上也可運(yùn)行SQL,比如啟動(dòng)Hiveshell,輸入查詢(xún)并等待幾分鐘之后,或許就可以得到結(jié)果,但這對(duì)于數(shù)據(jù)科學(xué)家或者分析師快速探測(cè)和試驗(yàn)數(shù)據(jù)來(lái)說(shuō),不是一個(gè)有利的環(huán)境。Cloudera的解決方案是創(chuàng)建Impala項(xiàng)目,該項(xiàng)目完全繞過(guò)MapReduce,并通過(guò)集群中的每個(gè)從節(jié)點(diǎn)運(yùn)行守護(hù)進(jìn)程。為了幫助Yarn集群實(shí)現(xiàn)多租戶(hù),Cloudera開(kāi)發(fā)了Llama,旨在讓Yarn了解Impala守護(hù)進(jìn)程正在利用的集群資源。Hortonworks的策略是專(zhuān)注于對(duì)Hive進(jìn)行改進(jìn),并在使Hive更具互動(dòng)性方面邁出重要的一步,其團(tuán)隊(duì)將這些改進(jìn)結(jié)合在了一個(gè)名為Stinger的項(xiàng)目中,最重要的變化涉及繞過(guò)MapReduce并使用Tez(一個(gè)YarnDAG處理框架)來(lái)執(zhí)行工作。
ApacheDrill是另一個(gè)SQL-on-Hadoop解決方案,它承諾能夠處理許多持久性存儲(chǔ)問(wèn)題,例如Cassandra和MongoDB(https://issues.apache.org/jira/browse/DRILL-142)。FacebookPresto也在SQL-on-Hadoop陣營(yíng),但其不像Spark那樣默認(rèn)支持Yarn,Spark與Yarn兼容性很好,只需要簡(jiǎn)單配置就可啟動(dòng)腳本,集群環(huán)境就可在Yarn上運(yùn)行Spark任務(wù)。Presto則需要借助于slider,通過(guò)slider實(shí)現(xiàn)PrestoonYarn。
4、圖形處理
現(xiàn)代圖形處理系統(tǒng)允許分布式圖形算法針對(duì)包含數(shù)十億個(gè)節(jié)點(diǎn)和數(shù)萬(wàn)億個(gè)邊緣的大規(guī)模圖像執(zhí)行。使用傳統(tǒng)MapReduce圖形操作需要在每次迭代時(shí)將整個(gè)圖形數(shù)據(jù)結(jié)構(gòu)序列化到磁盤(pán)并從磁盤(pán)序列化,整個(gè)過(guò)程繁瑣而麻煩。ApacheGiraph是一個(gè)流行的圖形處理項(xiàng)目,自版本1及更早版本以來(lái)一直致力于Hadoop,并且提交者還更新了Giraph,以便作為本機(jī)Yarn應(yīng)用程序運(yùn)行,ApacheHama在Yarn上也有一些圖形處理功能。
5、實(shí)時(shí)數(shù)據(jù)處理
實(shí)時(shí)數(shù)據(jù)處理系統(tǒng)是處理無(wú)限數(shù)據(jù)流的計(jì)算系統(tǒng)。這些系統(tǒng)的功能類(lèi)似于MapReduce,因?yàn)樵试S處理諸如過(guò)濾、投影、連接和聚合等操作。這些系統(tǒng)的典型用途是處理系統(tǒng)中發(fā)生的實(shí)時(shí)事件,執(zhí)行聚合,然后將結(jié)果推送到NoSQL以供其他系統(tǒng)檢索。目前比較常用的幾大實(shí)時(shí)數(shù)據(jù)處理系統(tǒng)有ApacheStorm、SparkStreaming等,在SparkStreaming流行之前,Storm幾乎統(tǒng)治了整個(gè)流式計(jì)算江湖,其最初由NathanMarz構(gòu)建,為了將Storm帶到Y(jié)arn,雅虎創(chuàng)建了一個(gè)名為Storm-Yarn的項(xiàng)目,其不僅可以讓多個(gè)Storm集群在Yarn上運(yùn)行,而且可以為Storm集群提供彈性,幫助其快速配置額外資源。有關(guān)該項(xiàng)目的更多詳細(xì)信息,請(qǐng)?jiān)L問(wèn)https://github.com/yahoo/storm-yarn。
SparkStreaming作為SparkAPI的擴(kuò)展而開(kāi)發(fā),支持消費(fèi)數(shù)據(jù)源,比如HDFS,Kafka,F(xiàn)lume等。Yarn也支持Spark,并且如果掌握了Spark,你會(huì)很容易知道如何用SparkStreaming,反之亦然,這意味著可以使用單一編程范例進(jìn)行離線(xiàn)和實(shí)時(shí)數(shù)據(jù)分析。其他與Yarn集成的實(shí)時(shí)數(shù)據(jù)處理系統(tǒng)還有ApacheS4,ApacheSamza(來(lái)自L(fǎng)inkedIn)和DataTorrent。
6、批量處理
批量同步并行(BSP)是一種分布式處理方法,多個(gè)并行工作者獨(dú)立處理整個(gè)問(wèn)題的子集,然后彼此交換數(shù)據(jù),使用全局同步機(jī)制等待所有工作者在重復(fù)該過(guò)程之前完成,ApacheGiraph使用類(lèi)似的BSP模型進(jìn)行圖形迭代,ApacheHama則是一個(gè)可以在Yarn上運(yùn)行的通用BSP實(shí)現(xiàn),具有內(nèi)置圖形處理功能。
7、MPI
MPI(消息傳遞接口)是一種允許在主機(jī)集群上交換消息的機(jī)制,OpenMPI是一個(gè)開(kāi)源MPI實(shí)現(xiàn)。目前有一個(gè)開(kāi)源項(xiàng)目可以完成將OpenMPI支持集成到Hadoop中的工作(https://issues.apache.org/jira/browse/MAPREDUCE-2911),完成此項(xiàng)集成工作的項(xiàng)目是mpich2-Yarn(詳情可訪(fǎng)問(wèn):https://github.com/alibaba/mpich2-yarn)。
8、內(nèi)存計(jì)算
內(nèi)存計(jì)算使用系統(tǒng)中不斷增加的內(nèi)存占用快速執(zhí)行迭代處理和交互式數(shù)據(jù)挖掘等活動(dòng)。ApacheSpark是一個(gè)流行的項(xiàng)目,是整套解決方案的關(guān)鍵部分,還包括用于SQL操作的Shark和用于圖形處理的GraphX,Cloudera的CDH5發(fā)行包括在Yarn上運(yùn)行的Spark。
9、DAG
DAG執(zhí)行引擎允許將數(shù)據(jù)處理邏輯建模為DAG(有向無(wú)環(huán)圖),然后在大型數(shù)據(jù)集上并行執(zhí)行。ApacheTez是DAG執(zhí)行引擎的一個(gè)例子,它產(chǎn)生于需要提供更通用的MapReduce系統(tǒng),該系統(tǒng)保留了MapReduce的并行性和吞吐量,同時(shí)支持MapReduce提供的額外處理模型和優(yōu)化。Tez的功能示例包括不強(qiáng)加特定的數(shù)據(jù)模型,因此可以支持MapReduce的鍵/值模型以及Hive和Pig的基于元組模型。
Tez提供了許多優(yōu)于MapReduce的優(yōu)勢(shì),其中包括消除MapReduce中多個(gè)作業(yè)之間存在的復(fù)寫(xiě)障礙——這是Hive和Pig等系統(tǒng)的主要性能瓶頸。Tez中的應(yīng)用程序不需要排序,可減少M(fèi)apReduce中的排序開(kāi)銷(xiāo),從而產(chǎn)生更高效的管道。Tez還支持復(fù)雜操作,比如Map-Map-Reduce或任意操作圖,開(kāi)發(fā)人員能夠更自然地表達(dá)他們的管道。Tez還可用于在執(zhí)行時(shí)選擇動(dòng)態(tài)數(shù)據(jù)流,例如,根據(jù)流中數(shù)據(jù)大小決定將其存儲(chǔ)在內(nèi)存、HDFS或本地磁盤(pán)中。
Hadoop整個(gè)生態(tài)自Hadoop2.0版本出現(xiàn)之后發(fā)生了巨大的改變,彌補(bǔ)了Hadoop1.0中的諸多不足。在Hadoop3.0及之后的幾次小版本迭代中,Yarn在時(shí)間軸服務(wù)方面進(jìn)行了升級(jí),提高了時(shí)間軸服務(wù)的可伸縮性和可靠性,并通過(guò)引入流量和聚合來(lái)提高可用性。雖然不再像Hadoop1.0時(shí)期依靠MapReduce完成大量工作,Yarn已經(jīng)與Hadoop1.0時(shí)期出現(xiàn)的眾多組件形成了良好的互補(bǔ)合作模式,這一點(diǎn)是毋庸置疑的。
以上就是關(guān)于扣丁學(xué)堂大數(shù)據(jù)Hadoop生態(tài)系統(tǒng)各組件與Yarn兼容性的詳細(xì)介紹,希望對(duì)同學(xué)們學(xué)習(xí)大數(shù)據(jù)Hadoop有所幫助,扣丁學(xué)堂大數(shù)據(jù)視頻教程VIP直播課服務(wù)包含課后錄播,配套筆記源碼,課上課后答疑,作業(yè)批改,階段考核,一對(duì)一輔導(dǎo),項(xiàng)目答辯,班主任電話(huà)回訪(fǎng)督導(dǎo),畢業(yè)證書(shū),就業(yè)指導(dǎo)及全國(guó)15個(gè)校區(qū)提供就業(yè)推薦服務(wù),緊貼企業(yè)一線(xiàn)流行開(kāi)發(fā)技術(shù),學(xué)員進(jìn)入企業(yè)即能上手參與前沿項(xiàng)目,大數(shù)據(jù)學(xué)習(xí)交流群:827371640
【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】
查看更多關(guān)于“大數(shù)據(jù)培訓(xùn)資訊”的相關(guān)文章>
標(biāo)簽:
大數(shù)據(jù)培訓(xùn)
大數(shù)據(jù)視頻教程
大數(shù)據(jù)分析培訓(xùn)
大數(shù)據(jù)學(xué)習(xí)視頻
Hadoop生態(tài)圈