Hadoop與Spark等大數(shù)據(jù)框架介紹_第1頁(yè)
Hadoop與Spark等大數(shù)據(jù)框架介紹_第2頁(yè)
Hadoop與Spark等大數(shù)據(jù)框架介紹_第3頁(yè)
Hadoop與Spark等大數(shù)據(jù)框架介紹_第4頁(yè)
Hadoop與Spark等大數(shù)據(jù)框架介紹_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Hadoop與Spark等?數(shù)據(jù)框架介紹分類?錄:海量數(shù)據(jù)的存儲(chǔ)問(wèn)題很早就已經(jīng)出現(xiàn)了,?些?業(yè)或者部門因?yàn)闅v史的積累,數(shù)據(jù)量也達(dá)到了?定的級(jí)別。很早以前,當(dāng)?臺(tái)電腦?法存儲(chǔ)這么龐?的數(shù)據(jù)時(shí),采?的解決?案是使?NFS(?絡(luò)?件系統(tǒng))將數(shù)據(jù)分開(kāi)存儲(chǔ)。但是這種?法?法充分利?多臺(tái)計(jì)算機(jī)同時(shí)進(jìn)?分析數(shù)據(jù)。?個(gè)實(shí)際的需求場(chǎng)景:?志分析?志分析是對(duì)?志中的每?個(gè)?戶的流量進(jìn)?匯總求和。對(duì)于?個(gè)?志?件,如果只有這么??數(shù)據(jù),我們?般會(huì)采?這樣的處理?式1.讀取???志2.抽取?機(jī)號(hào)和流量字段3.累加到HashMap中4.遍歷輸出結(jié)果如果數(shù)據(jù)量變得很?呢,?如?個(gè)?志?件??有?個(gè)GB數(shù)據(jù),仍然????去讀,那么就會(huì)因?yàn)榇疟P的IO瓶頸導(dǎo)致效率太低,速度太慢。如果?次性加載到內(nèi)存,那么就會(huì)因?yàn)閱闻_(tái)計(jì)算機(jī)的內(nèi)存空間有限?導(dǎo)致內(nèi)存溢出。如果將中間結(jié)果全部緩存到HashMap中,那么也會(huì)因?yàn)閱闻_(tái)計(jì)算機(jī)的內(nèi)存空間有限?導(dǎo)致內(nèi)存溢出。可以選擇采?多線程處理,但是依然?法改變資源瓶頸的現(xiàn)實(shí),因?yàn)?臺(tái)計(jì)算器的CPU資源,內(nèi)存資源,磁盤IO瓶頸是定,創(chuàng)建再多的線程也?法改變這個(gè)現(xiàn)實(shí)。解決思路?:縱向擴(kuò)展升級(jí)硬件,提?單機(jī)性能(增加內(nèi)存,增強(qiáng)CPU、?更?性能的磁盤(如固態(tài)硬盤),?如可以購(gòu)買IBM的?端服務(wù)器。這種?法簡(jiǎn)單易?,但單臺(tái)計(jì)算機(jī)的擴(kuò)展空間有限,CPU、內(nèi)存、磁盤再怎么擴(kuò)展也是有限的,?法?限擴(kuò)展。除此之外,成本較?,?端服務(wù)器常常?常昂貴,Hadoop與Spark等?數(shù)據(jù)框架介紹分類?錄:海量數(shù)據(jù)的存儲(chǔ)問(wèn)題很早就已經(jīng)出現(xiàn)了,?些?業(yè)或者部門因?yàn)闅v史的積累,數(shù)據(jù)量也達(dá)到了?定的級(jí)別。很早以前,當(dāng)?臺(tái)電腦?法存儲(chǔ)這么龐?的數(shù)據(jù)時(shí),采?的解決?案是使?NFS(?絡(luò)?件系統(tǒng))將數(shù)據(jù)分開(kāi)存儲(chǔ)。但是這種?法?法充分利?多臺(tái)計(jì)算機(jī)同時(shí)進(jìn)?分析數(shù)據(jù)。?個(gè)實(shí)際的需求場(chǎng)景:?志分析?志分析是對(duì)?志中的每?個(gè)?戶的流量進(jìn)?匯總求和。對(duì)于?個(gè)?志?件,如果只有這么??數(shù)據(jù),我們?般會(huì)采?這樣的處理?式1.讀取???志2.抽取?機(jī)號(hào)和流量字段3.累加到HashMap中4.遍歷輸出結(jié)果如果數(shù)據(jù)量變得很?呢,?如?個(gè)?志?件??有?個(gè)GB數(shù)據(jù),仍然????去讀,那么就會(huì)因?yàn)榇疟P的IO瓶頸導(dǎo)致效率太低,速度太慢。如果?次性加載到內(nèi)存,那么就會(huì)因?yàn)閱闻_(tái)計(jì)算機(jī)的內(nèi)存空間有限?導(dǎo)致內(nèi)存溢出。如果將中間結(jié)果全部緩存到HashMap中,那么也會(huì)因?yàn)閱闻_(tái)計(jì)算機(jī)的內(nèi)存空間有限?導(dǎo)致內(nèi)存溢出??梢赃x擇采?多線程處理,但是依然?法改變資源瓶頸的現(xiàn)實(shí),因?yàn)?臺(tái)計(jì)算器的CPU資源,內(nèi)存資源,磁盤IO瓶頸是定,創(chuàng)建再多的線程也?法改變這個(gè)現(xiàn)實(shí)。解決思路?:縱向擴(kuò)展升級(jí)硬件,提?單機(jī)性能(增加內(nèi)存,增強(qiáng)CPU、?更?性能的磁盤(如固態(tài)硬盤),?如可以購(gòu)買IBM的?端服務(wù)器。這種?法簡(jiǎn)單易?,但單臺(tái)計(jì)算機(jī)的擴(kuò)展空間有限,CPU、內(nèi)存、磁盤再怎么擴(kuò)展也是有限的,?法?限擴(kuò)展。除此之外,成本較?,?端服務(wù)器常常?常昂貴,?百萬(wàn)甚?上千萬(wàn)?臺(tái),?般的?公司承受不起這樣?昂的成本。解決思路?:橫向擴(kuò)展:?多臺(tái)節(jié)點(diǎn)分布式集群處理,通過(guò)增加節(jié)點(diǎn)數(shù)量提?處理能?,這?說(shuō)的節(jié)點(diǎn)指的就是?臺(tái)計(jì)算機(jī)。其思想為任務(wù)分?jǐn)?,通過(guò)協(xié)作來(lái)實(shí)現(xiàn)單節(jié)點(diǎn)?法實(shí)現(xiàn)的任務(wù),且成本相對(duì)低(可采?普通機(jī)器)、易于線性擴(kuò)展。但是其系統(tǒng)復(fù)雜度增加,我們要將我們的web應(yīng)?部署到每?個(gè)節(jié)點(diǎn)上?,?多個(gè)節(jié)點(diǎn)協(xié)同?作時(shí)就要考慮:如何調(diào)度資源、任務(wù)如何監(jiān)控、中間結(jié)果如何調(diào)度、系統(tǒng)如何容錯(cuò)、如何實(shí)現(xiàn)眾多節(jié)點(diǎn)間的協(xié)調(diào)等問(wèn)題。HadoopHadoop是?個(gè)開(kāi)源的可運(yùn)?于?規(guī)模集群上的分布式?件系統(tǒng)和運(yùn)?處理基礎(chǔ)框架。其擅長(zhǎng)于在廉價(jià)機(jī)器搭建的集群上進(jìn)?海量數(shù)據(jù)(結(jié)構(gòu)化與?結(jié)構(gòu)化)的存儲(chǔ)與離線處理。Hadoop就是?門?來(lái)處理?數(shù)據(jù)的技術(shù),就是?來(lái)解決上述提到的分布式計(jì)算??的5個(gè)技術(shù)難題的。Hadoop由ApacheSoftwareFoundation公司于2005年秋天作為L(zhǎng)ucene的?項(xiàng)?Nutch的?部分正式引?。它受到最先由GoogleLab開(kāi)發(fā)的MapReduce和GoogleFileSystem的啟發(fā)。2006年3?份,MapReduce和NutchDistributedFileSystem(NDFS)分別被納?稱為Hadoop的項(xiàng)?中。Hadoop是最受歡迎的在Internet上對(duì)搜索關(guān)鍵字進(jìn)?內(nèi)容分類的?具,但它也可以解決許多要求極?伸縮性的問(wèn)題。例如,如果您要grep?個(gè)10TB的巨型?件,會(huì)出現(xiàn)什么情況?在傳統(tǒng)的系統(tǒng)上,這將需要很長(zhǎng)的時(shí)間。但是Hadoop在設(shè)計(jì)時(shí)就考慮到這些問(wèn)題,因此能??提?效率。Hadoop的?態(tài)壞境Hadoop是?個(gè)能夠?qū)?量數(shù)據(jù)進(jìn)?分布式處理的軟件框架。具有可靠、?效、可伸縮的特點(diǎn)。Hadoop的核?是HDFS和Mapreduce,hadoop2.0還包括YARN。?多臺(tái)節(jié)點(diǎn)分布式集群處理,通過(guò)增加節(jié)點(diǎn)數(shù)量提?處理能?,這?說(shuō)的節(jié)點(diǎn)指的就是?臺(tái)計(jì)算機(jī)。其思想為任務(wù)分?jǐn)?,通過(guò)協(xié)作來(lái)實(shí)現(xiàn)單節(jié)點(diǎn)?法實(shí)現(xiàn)的任務(wù),且成本相對(duì)低(可采?普通機(jī)器)、易于線性擴(kuò)展。但是其系統(tǒng)復(fù)雜度增加,我們要將我們的web應(yīng)?部署到每?個(gè)節(jié)點(diǎn)上?,?多個(gè)節(jié)點(diǎn)協(xié)同?作時(shí)就要考慮:如何調(diào)度資源、任務(wù)如何監(jiān)控、中間結(jié)果如何調(diào)度、系統(tǒng)如何容錯(cuò)、如何實(shí)現(xiàn)眾多節(jié)點(diǎn)間的協(xié)調(diào)等問(wèn)題。HadoopHadoop是?個(gè)開(kāi)源的可運(yùn)?于?規(guī)模集群上的分布式?件系統(tǒng)和運(yùn)?處理基礎(chǔ)框架。其擅長(zhǎng)于在廉價(jià)機(jī)器搭建的集群上進(jìn)?海量數(shù)據(jù)(結(jié)構(gòu)化與?結(jié)構(gòu)化)的存儲(chǔ)與離線處理。Hadoop就是?門?來(lái)處理?數(shù)據(jù)的技術(shù),就是?來(lái)解決上述提到的分布式計(jì)算??的5個(gè)技術(shù)難題的。Hadoop由ApacheSoftwareFoundation公司于2005年秋天作為L(zhǎng)ucene的?項(xiàng)?Nutch的?部分正式引?。它受到最先由GoogleLab開(kāi)發(fā)的MapReduce和GoogleFileSystem的啟發(fā)。2006年3?份,MapReduce和NutchDistributedFileSystem(NDFS)分別被納?稱為Hadoop的項(xiàng)?中。Hadoop是最受歡迎的在Internet上對(duì)搜索關(guān)鍵字進(jìn)?內(nèi)容分類的?具,但它也可以解決許多要求極?伸縮性的問(wèn)題。例如,如果您要grep?個(gè)10TB的巨型?件,會(huì)出現(xiàn)什么情況?在傳統(tǒng)的系統(tǒng)上,這將需要很長(zhǎng)的時(shí)間。但是Hadoop在設(shè)計(jì)時(shí)就考慮到這些問(wèn)題,因此能??提?效率。Hadoop的?態(tài)壞境Hadoop是?個(gè)能夠?qū)?量數(shù)據(jù)進(jìn)?分布式處理的軟件框架。具有可靠、?效、可伸縮的特點(diǎn)。Hadoop的核?是HDFS和Mapreduce,hadoop2.0還包括YARN。HDFS(Hadoop分布式?件系統(tǒng))HDFS(HadoopDistributedFileSystem)源?于Google的GFS論?,發(fā)表于2003年10?,HDFS是GFS克隆版。是Hadoop體系中數(shù)據(jù)存儲(chǔ)管理的基礎(chǔ)。它是?個(gè)?度容錯(cuò)的系統(tǒng),能檢測(cè)和應(yīng)對(duì)硬件故障,?于在低成本的通?硬件上運(yùn)?。HDFS簡(jiǎn)化了?件的?致性模型,通過(guò)流式數(shù)據(jù)訪問(wèn),提供?吞吐量應(yīng)?程序數(shù)據(jù)訪問(wèn)功能,適合帶有?型數(shù)據(jù)集的應(yīng)?程序。Client:切分?件;訪問(wèn)HDFS;與NameNode交互,獲取?件位置信息;與DataNode交互,讀取和寫?數(shù)據(jù)。NameNode:Master節(jié)點(diǎn),在hadoop1.X中只有?個(gè),管理HDFS的名稱空間和數(shù)據(jù)塊映射信息,配置副本策略,處理客戶端請(qǐng)求。DataNode:Slave節(jié)點(diǎn),存儲(chǔ)實(shí)際的數(shù)據(jù),匯報(bào)存儲(chǔ)信息給NameNode。SecondaryNameNode:輔助NameNode,分擔(dān)其?作量;定期合并fsimage和fsedits,推送給NameNode;緊急情況下,可輔助恢復(fù)NameNode,但SecondaryNameNode并?NameNode的熱備。YARN(YetAnotherResourceNegotiator)YARN是?種Hadoop資源管理器,它是?個(gè)通?資源管理系統(tǒng),可為上層應(yīng)?提供統(tǒng)?的資源管理和調(diào)度,它的引?為集群在利?率、資源統(tǒng)?管理和數(shù)據(jù)共享等??帶來(lái)了巨?好處。#####HadoopYARN產(chǎn)?背景直接源于MRv1在?個(gè)??的缺陷:擴(kuò)展性受限單點(diǎn)故障難以?持MR之外的計(jì)算除此之外,多計(jì)算框架各?為戰(zhàn),數(shù)據(jù)共享困難。?如:MapReduce(離線計(jì)算框架)、Storm(實(shí)時(shí)計(jì)算框架)、Spark(內(nèi)存計(jì)算框架)。#####HadoopYARN基本架構(gòu)

Client:切分?件;訪問(wèn)HDFS;與NameNode交互,獲取?件位置信息;與DataNode交互,讀取和寫?數(shù)據(jù)。NameNode:Master節(jié)點(diǎn),在hadoop1.X中只有?個(gè),管理HDFS的名稱空間和數(shù)據(jù)塊映射信息,配置副本策略,處理客戶端請(qǐng)求。DataNode:Slave節(jié)點(diǎn),存儲(chǔ)實(shí)際的數(shù)據(jù),匯報(bào)存儲(chǔ)信息給NameNode。SecondaryNameNode:輔助NameNode,分擔(dān)其?作量;定期合并fsimage和fsedits,推送給NameNode;緊急情況下,可輔助恢復(fù)NameNode,但SecondaryNameNode并?NameNode的熱備。YARN(YetAnotherResourceNegotiator)YARN是?種Hadoop資源管理器,它是?個(gè)通?資源管理系統(tǒng),可為上層應(yīng)?提供統(tǒng)?的資源管理和調(diào)度,它的引?為集群在利?率、資源統(tǒng)?管理和數(shù)據(jù)共享等??帶來(lái)了巨?好處。#####HadoopYARN產(chǎn)?背景直接源于MRv1在?個(gè)??的缺陷:擴(kuò)展性受限單點(diǎn)故障難以?持MR之外的計(jì)算除此之外,多計(jì)算框架各?為戰(zhàn),數(shù)據(jù)共享困難。?如:MapReduce(離線計(jì)算框架)、Storm(實(shí)時(shí)計(jì)算框架)、Spark(內(nèi)存計(jì)算框架)。#####HadoopYARN基本架構(gòu)ResourceManager處理客戶端請(qǐng)求啟動(dòng)/監(jiān)控ApplicationMaster監(jiān)控NodeManager資源分配與調(diào)度NodeManager單個(gè)節(jié)點(diǎn)上的資源管理處理來(lái)?ResourceManager的命令處理來(lái)?ApplicationMaster的命令A(yù)pplicationMaster數(shù)據(jù)切分為應(yīng)?程序申請(qǐng)資源,并分配給內(nèi)部任務(wù)任務(wù)監(jiān)控與容錯(cuò)HadoopYARN調(diào)度框架HadoopYARN采?雙層調(diào)度框架。?先,RM將資源分配給AM。其次,AM再將資源進(jìn)?步分配給各個(gè)Task。YARN與“allornothing”策略不同(ApacheMesos),其遵循基于資源預(yù)留的調(diào)度策略,當(dāng)資源不夠時(shí),會(huì)為Task預(yù)留,直到資源充?。

ResourceManager處理客戶端請(qǐng)求啟動(dòng)/監(jiān)控ApplicationMaster監(jiān)控NodeManager資源分配與調(diào)度NodeManager單個(gè)節(jié)點(diǎn)上的資源管理處理來(lái)?ResourceManager的命令處理來(lái)?ApplicationMaster的命令A(yù)pplicationMaster數(shù)據(jù)切分為應(yīng)?程序申請(qǐng)資源,并分配給內(nèi)部任務(wù)任務(wù)監(jiān)控與容錯(cuò)HadoopYARN調(diào)度框架HadoopYARN采?雙層調(diào)度框架。?先,RM將資源分配給AM。其次,AM再將資源進(jìn)?步分配給各個(gè)Task。YARN與“allornothing”策略不同(ApacheMesos),其遵循基于資源預(yù)留的調(diào)度策略,當(dāng)資源不夠時(shí),會(huì)為Task預(yù)留,直到資源充?。運(yùn)?在YARN上的計(jì)算框架離線計(jì)算框架:MapReduceDAG計(jì)算框架:Tez流式計(jì)算框架:Storm內(nèi)存計(jì)算框架:Spark圖計(jì)算框架:Giraph、GraphLibMapReduce(分布式計(jì)算框架)HadoopMapReduce是googleMapReduce克隆版。MapReduce是?種計(jì)算模型,?以進(jìn)??數(shù)據(jù)量的計(jì)算。其中Map對(duì)數(shù)據(jù)集上的獨(dú)?元素進(jìn)?指定的操作,?成鍵-值對(duì)形式中間結(jié)果。Reduce則對(duì)中間結(jié)果中相同“鍵”的所有“值”進(jìn)?規(guī)約,以得到最終結(jié)果。MapReduce這樣的功能劃分,?常適合在?量計(jì)算機(jī)組成的分布式并?環(huán)境?進(jìn)?數(shù)據(jù)處理。

運(yùn)?在YARN上的計(jì)算框架離線計(jì)算框架:MapReduceDAG計(jì)算框架:Tez流式計(jì)算框架:Storm內(nèi)存計(jì)算框架:Spark圖計(jì)算框架:Giraph、GraphLibMapReduce(分布式計(jì)算框架)HadoopMapReduce是googleMapReduce克隆版。MapReduce是?種計(jì)算模型,?以進(jìn)??數(shù)據(jù)量的計(jì)算。其中Map對(duì)數(shù)據(jù)集上的獨(dú)?元素進(jìn)?指定的操作,?成鍵-值對(duì)形式中間結(jié)果。Reduce則對(duì)中間結(jié)果中相同“鍵”的所有“值”進(jìn)?規(guī)約,以得到最終結(jié)果。MapReduce這樣的功能劃分,?常適合在?量計(jì)算機(jī)組成的分布式并?環(huán)境?進(jìn)?數(shù)據(jù)處理。JobTracker:Master節(jié)點(diǎn),只有?個(gè),管理所有作業(yè),作業(yè)/任務(wù)的監(jiān)控、錯(cuò)誤處理等;將任務(wù)分解成?系列任務(wù),并分派給TaskTracker。TaskTracker:Slave節(jié)點(diǎn),運(yùn)?MapTask和ReduceTask;并與JobTracker交互,匯報(bào)任務(wù)狀態(tài)。MapTask:解析每條數(shù)據(jù)記錄,傳遞給?戶編寫的map(),并執(zhí)?,將輸出結(jié)果寫?本地磁盤(如果為map-only作業(yè),直接寫?HDFS)。ReducerTask:從MapTask的執(zhí)?結(jié)果中,遠(yuǎn)程讀取輸?數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)?排序,將數(shù)據(jù)按照分組傳遞給?戶編寫的reduce函數(shù)執(zhí)?。Hive(基于Hadoop的數(shù)據(jù)倉(cāng)庫(kù))Hive由facebook開(kāi)源,最初?于解決海量結(jié)構(gòu)化的?志數(shù)據(jù)統(tǒng)計(jì)問(wèn)題。Hive定義了?種類似SQL的查詢語(yǔ)?(HQL),將SQL轉(zhuǎn)化為MapReduce任務(wù)在Hadoop上執(zhí)?,通常?于離線分析。HBase(分布式列存數(shù)據(jù)庫(kù))

JobTracker:Master節(jié)點(diǎn),只有?個(gè),管理所有作業(yè),作業(yè)/任務(wù)的監(jiān)控、錯(cuò)誤處理等;將任務(wù)分解成?系列任務(wù),并分派給TaskTracker。TaskTracker:Slave節(jié)點(diǎn),運(yùn)?MapTask和ReduceTask;并與JobTracker交互,匯報(bào)任務(wù)狀態(tài)。MapTask:解析每條數(shù)據(jù)記錄,傳遞給?戶編寫的map(),并執(zhí)?,將輸出結(jié)果寫?本地磁盤(如果為map-only作業(yè),直接寫?HDFS)。ReducerTask:從MapTask的執(zhí)?結(jié)果中,遠(yuǎn)程讀取輸?數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)?排序,將數(shù)據(jù)按照分組傳遞給?戶編寫的reduce函數(shù)執(zhí)?。Hive(基于Hadoop的數(shù)據(jù)倉(cāng)庫(kù))Hive由facebook開(kāi)源,最初?于解決海量結(jié)構(gòu)化的?志數(shù)據(jù)統(tǒng)計(jì)問(wèn)題。Hive定義了?種類似SQL的查詢語(yǔ)?(HQL),將SQL轉(zhuǎn)化為MapReduce任務(wù)在Hadoop上執(zhí)?,通常?于離線分析。HBase(分布式列存數(shù)據(jù)庫(kù))Hbae源?Google的Bigtable論?,發(fā)表于2006年11?,HBase是GoogleBigtable克隆版。HBase是?個(gè)針對(duì)結(jié)構(gòu)化數(shù)據(jù)的可伸縮、?可靠、?性能、分布式和?向列的動(dòng)態(tài)模式數(shù)據(jù)庫(kù)。和傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)不同,HBase采?了BigTable的數(shù)據(jù)模型:增強(qiáng)的稀疏排序映射表(Key/Value),其中,鍵由?關(guān)鍵字、列關(guān)鍵字和時(shí)間戳構(gòu)成。HBase提供了對(duì)?規(guī)模數(shù)據(jù)的隨機(jī)、實(shí)時(shí)讀寫訪問(wèn),同時(shí),HBase中保存的數(shù)據(jù)可以使?MapReduce來(lái)處理,它將數(shù)據(jù)存儲(chǔ)和并?計(jì)算完美地結(jié)合在?起。HBase和Hive在?數(shù)據(jù)架構(gòu)中處在不同位置,HBase主要解決實(shí)時(shí)數(shù)據(jù)查詢問(wèn)題,Hive主要解決數(shù)據(jù)處理和計(jì)算問(wèn)題,?般是配合使?。Zookeeper(分布式協(xié)作服務(wù))源?Google的Chubby論?,發(fā)表于2006年11?,Zookeeper是Chubby克隆版解決分布式環(huán)境下的數(shù)據(jù)管理問(wèn)題:統(tǒng)?命名,狀態(tài)同步,集群管理,配置同步等。Sqoop(數(shù)據(jù)同步?具)Sqoop是SQL-to-Hadoop的縮寫,主要?于傳統(tǒng)數(shù)據(jù)庫(kù)和Hadoop之前傳輸數(shù)據(jù)。數(shù)據(jù)的導(dǎo)?和導(dǎo)出本質(zhì)上是Mapreduce程序,充分利?了MR的并?化和容錯(cuò)性。Pig(基于Hadoop的數(shù)據(jù)流系統(tǒng))由yahoo!開(kāi)源,設(shè)計(jì)動(dòng)機(jī)是提供?種基于MapReduce的ad-hoc(計(jì)算在query時(shí)發(fā)?)數(shù)據(jù)分析?具。其定義了?種數(shù)據(jù)流語(yǔ)?—PigLatin,將腳本轉(zhuǎn)換為MapReduce任務(wù)在Hadoop上執(zhí)?,通常?于進(jìn)?離線分析。SparkSpark是UCBerkeleyAMPLab開(kāi)發(fā)的是?種計(jì)算框架,分布式資源?作交由集群管理軟件(Mesos、YARN)。###Spark的特點(diǎn)

Hbae源?Google的Bigtable論?,發(fā)表于2006年11?,HBase是GoogleBigtable克隆版。HBase是?個(gè)針對(duì)結(jié)構(gòu)化數(shù)據(jù)的可伸縮、?可靠、?性能、分布式和?向列的動(dòng)態(tài)模式數(shù)據(jù)庫(kù)。和傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)不同,HBase采?了BigTable的數(shù)據(jù)模型:增強(qiáng)的稀疏排序映射表(Key/Value),其中,鍵由?關(guān)鍵字、列關(guān)鍵字和時(shí)間戳構(gòu)成。HBase提供了對(duì)?規(guī)模數(shù)據(jù)的隨機(jī)、實(shí)時(shí)讀寫訪問(wèn),同時(shí),HBase中保存的數(shù)據(jù)可以使?MapReduce來(lái)處理,它將數(shù)據(jù)存儲(chǔ)和并?計(jì)算完美地結(jié)合在?起。HBase和Hive在?數(shù)據(jù)架構(gòu)中處在不同位置,HBase主要解決實(shí)時(shí)數(shù)據(jù)查詢問(wèn)題,Hive主要解決數(shù)據(jù)處理和計(jì)算問(wèn)題,?般是配合使?。Zookeeper(分布式協(xié)作服務(wù))源?Google的Chubby論?,發(fā)表于2006年11?,Zookeeper是Chubby克隆版解決分布式環(huán)境下的數(shù)據(jù)管理問(wèn)題:統(tǒng)?命名,狀態(tài)同步,集群管理,配置同步等。Sqoop(數(shù)據(jù)同步?具)Sqoop是SQL-to-Hadoop的縮寫,主要?于傳統(tǒng)數(shù)據(jù)庫(kù)和Hadoop之前傳輸數(shù)據(jù)。數(shù)據(jù)的導(dǎo)?和導(dǎo)出本質(zhì)上是Mapreduce程序,充分利?了MR的并?化和容錯(cuò)性。Pig(基于Hadoop的數(shù)據(jù)流系統(tǒng))由yahoo!開(kāi)源,設(shè)計(jì)動(dòng)機(jī)是提供?種基于MapReduce的ad-hoc(計(jì)算在query時(shí)發(fā)?)數(shù)據(jù)分析?具。其定義了?種數(shù)據(jù)流語(yǔ)?—PigLatin,將腳本轉(zhuǎn)換為MapReduce任務(wù)在Hadoop上執(zhí)?,通常?于進(jìn)?離線分析。SparkSpark是UCBerkeleyAMPLab開(kāi)發(fā)的是?種計(jì)算框架,分布式資源?作交由集群管理軟件(Mesos、YARN)。###Spark的特點(diǎn)先進(jìn)架構(gòu)Spark采?Scala語(yǔ)?編寫,底層采?了actormodel的akka作為通訊框架,代碼?分簡(jiǎn)潔?效?;贒AG圖的執(zhí)?引擎,減少多次計(jì)算之間中間結(jié)果寫到Hdfs的開(kāi)銷。建?在統(tǒng)?抽象的RDD(分布式內(nèi)存抽象)之上,使得它可以以基本?致的?式應(yīng)對(duì)不同的?數(shù)據(jù)處理場(chǎng)景。?效提供Cache機(jī)制來(lái)?持需要反復(fù)迭代的計(jì)算或者多次數(shù)據(jù)共享,減少數(shù)據(jù)讀取的IO開(kāi)銷。與Hadoop的MapReduce相?,Spark基于內(nèi)存的運(yùn)算?MR要快100倍;?基于硬盤的運(yùn)算也要快10倍!易?Spark提供?泛的數(shù)據(jù)集操作類型(20+種),不像Hadoop只提供了Map和Reduce兩種操作。Spark?持Java,Python和ScalaAPI,?持交互式的Python和Scala的shell。提供整體解決?案以其RDD模型的強(qiáng)?表現(xiàn)能?,逐漸形成了?套??的?態(tài)圈,提供了full-stack的解決?案。主要包括Spark內(nèi)存中批處理,SparkSQL交互式查詢,SparkStreaming流式計(jì)算,GraphX和MLlib提供的常?圖計(jì)算和機(jī)器學(xué)習(xí)算法。與Hadoop?縫連接Spark可以使?YARN作為它的集群管理器讀取HDFS,HBase等?切Hadoop的數(shù)據(jù)Spark整體架構(gòu)Spark提供了多種?級(jí)?具,如:SharkSQL應(yīng)?于即席查詢(Ad-hocquery)、SparkStreaming應(yīng)?于流式計(jì)算、MLlib應(yīng)?于機(jī)器學(xué)習(xí)、GraphX應(yīng)?于圖處理。Spark還可以基于?帶的standalone集群管理器獨(dú)?運(yùn)?,也可以部署在ApacheMesos和HadoopYARN等集群管理器上運(yùn)?。Spark可以訪問(wèn)存儲(chǔ)在HDFS、Hbase、Cassandra、AmazonS3、本地?件系統(tǒng)等等上的數(shù)據(jù),Spark?持?本?件,序列?件,以及任何Hadoop的InputFormat。Spark核?概念Spark任務(wù)提供多層分解的概念,Spark組件將?戶的應(yīng)?程序分解為內(nèi)部執(zhí)?任務(wù)并提供執(zhí)?容器,資源管理為spark組件提供資源管理和調(diào)度。Spark任務(wù)

先進(jìn)架構(gòu)Spark采?Scala語(yǔ)?編寫,底層采?了actormodel的akka作為通訊框架,代碼?分簡(jiǎn)潔?效?;贒AG圖的執(zhí)?引擎,減少多次計(jì)算之間中間結(jié)果寫到Hdfs的開(kāi)銷。建?在統(tǒng)?抽象的RDD(分布式內(nèi)存抽象)之上,使得它可以以基本?致的?式應(yīng)對(duì)不同的?數(shù)據(jù)處理場(chǎng)景。?效提供Cache機(jī)制來(lái)?持需要反復(fù)迭代的計(jì)算或者多次數(shù)據(jù)共享,減少數(shù)據(jù)讀取的IO開(kāi)銷。與Hadoop的MapReduce相?,Spark基于內(nèi)存的運(yùn)算?MR要快100倍;?基于硬盤的運(yùn)算也要快10倍!易?Spark提供?泛的數(shù)據(jù)集操作類型(20+種),不像Hadoop只提供了Map和Reduce兩種操作。Spark?持Java,Python和ScalaAPI,?持交互式的Python和Scala的shell。提供整體解決?案以其RDD模型的強(qiáng)?表現(xiàn)能?,逐漸形成了?套??的?態(tài)圈,提供了full-stack的解決?案。主要包括Spark內(nèi)存中批處理,SparkSQL交互式查詢,SparkStreaming流式計(jì)算,GraphX和MLlib提供的常?圖計(jì)算和機(jī)器學(xué)習(xí)算法。與Hadoop?縫連接Spark可以使?YARN作為它的集群管理器讀取HDFS,HBase等?切Hadoop的數(shù)據(jù)Spark整體架構(gòu)Spark提供了多種?級(jí)?具,如:SharkSQL應(yīng)?于即席查詢(Ad-hocquery)、SparkStreaming應(yīng)?于流式計(jì)算、MLlib應(yīng)?于機(jī)器學(xué)習(xí)、GraphX應(yīng)?于圖處理。Spark還可以基于?帶的standalone集群管理器獨(dú)?運(yùn)?,也可以部署在ApacheMesos和HadoopYARN等集群管理器上運(yùn)?。Spark可以訪問(wèn)存儲(chǔ)在HDFS、Hbase、Cassandra、AmazonS3、本地?件系統(tǒng)等等上的數(shù)據(jù),Spark?持?本?件,序列?件,以及任何Hadoop的InputFormat。Spark核?概念Spark任務(wù)提供多層分解的概念,Spark組件將?戶的應(yīng)?程序分解為內(nèi)部執(zhí)?任務(wù)并提供執(zhí)?容器,資源管理為spark組件提供資源管理和調(diào)度。Spark任務(wù)應(yīng)?程序:由?個(gè)driverprogram和多個(gè)job構(gòu)成job:由多個(gè)stage組成stage:對(duì)應(yīng)?個(gè)tasksettaskset:對(duì)應(yīng)?組關(guān)聯(lián)的相互之間沒(méi)有shuffle依賴關(guān)系的task組成。task:任務(wù)最?的?作單元Spark組件DriverProgram(驅(qū)動(dòng)程序):Spark的核?組件構(gòu)建SparkContext(Spark應(yīng)?的??,它負(fù)責(zé)和整個(gè)集群的交互,創(chuàng)建需要的變量,還包含集群的配置信息等)將?戶提交的job轉(zhuǎn)換為DAG圖(類似數(shù)據(jù)處理的流程圖)根據(jù)策略將DAG圖劃分為多個(gè)stage,根據(jù)分區(qū)從??成?系列tasks根據(jù)tasks要求向資源管理器申請(qǐng)資源提交任務(wù)并檢測(cè)任務(wù)狀態(tài)Executor真正執(zhí)?task的單元,?個(gè)WorkerNode上可以有多個(gè)Executor資資源管理組件YARN(通?):Master/Slave結(jié)構(gòu)ResourceManager(RM):全局的資源管理器,負(fù)責(zé)系統(tǒng)的資源管理和分配NodeManager(NM):每個(gè)節(jié)點(diǎn)上的資源和任務(wù)管理器ApplicationMaster(AM):每個(gè)應(yīng)?程序都有?個(gè),負(fù)責(zé)任務(wù)的調(diào)度和監(jiān)視,并與RM調(diào)度器協(xié)商為任務(wù)獲取資源。Standalone(Spark?帶):Master/Slave結(jié)構(gòu)Master:類似于YARN的RMWorker:類似于YARN的NMSpark端到端流程Spark的DriverProgram(簡(jiǎn)稱Driver)包含?戶的應(yīng)?程序,Driver完成task的解析和?成。

應(yīng)?程序:由?個(gè)driverprogram和多個(gè)job構(gòu)成job:由多個(gè)stage組成stage:對(duì)應(yīng)?個(gè)tasksettaskset:對(duì)應(yīng)?組關(guān)聯(lián)的相互之間沒(méi)有shuffle依賴關(guān)系的task組成。task:任務(wù)最?的?作單元Spark組件DriverProgram(驅(qū)動(dòng)程序):Spark的核?組件構(gòu)建SparkContext(Spark應(yīng)?的??,它負(fù)責(zé)和整個(gè)集群的交互,創(chuàng)建需要的變量,還包含集群的配置信息等)將?戶提交的job轉(zhuǎn)換為DAG圖(類似數(shù)據(jù)處理的流程圖)根據(jù)策略將DAG圖劃分為多個(gè)stage,根據(jù)分區(qū)從??成?系列tasks根據(jù)tasks要求向資源管理器申請(qǐng)資源提交任務(wù)并檢測(cè)任務(wù)狀態(tài)Executor真正執(zhí)?task的單元,?個(gè)WorkerNode上可以有多個(gè)Executor資資源管理組件YARN(通?):Master/Slave結(jié)構(gòu)ResourceManager(RM):全局的資源管理器,負(fù)責(zé)系統(tǒng)的資源管理和分配NodeManager(NM):每個(gè)節(jié)點(diǎn)上的資源和任務(wù)管理器ApplicationMaster(AM):每個(gè)應(yīng)?程序都有?個(gè),負(fù)責(zé)任務(wù)的調(diào)度和監(jiān)視,并與RM調(diào)度器協(xié)商為任務(wù)獲取資源。Standalone(Spark?帶):Master/Slave結(jié)構(gòu)Master:類似于YARN的RMWorker:類似于YARN的NMSpark端到端流程Spark的DriverProgram(簡(jiǎn)稱Driver)包含?戶的應(yīng)?程序,Driver完成task的解析和?成。1.Driver向ClusterManager(集群資源管理器)申請(qǐng)運(yùn)?task需要的資源。2.集群資源管理器為task分配滿?要求的節(jié)點(diǎn),并在節(jié)點(diǎn)按照要求創(chuàng)建Executor3.創(chuàng)建的Executor向Driver注冊(cè)。4.Driver將Spark應(yīng)?程序的代碼和?件傳送給分配的Executor5.Executor運(yùn)?task,運(yùn)?完之后將結(jié)果返回給Driver或者寫?HDFS或其他介質(zhì)。Spark流程SparkonStandaloneMaster和Worker是Standalone的??,Driver和Executor是Spark的??。Master負(fù)責(zé)分配資源,分配Driver和Executor,讓W(xué)orker啟動(dòng)Driver和Executor,只管理到Executor層,不涉及任務(wù)。Driver負(fù)責(zé)?成task,并與Executor通信,進(jìn)?任務(wù)的調(diào)度和結(jié)果跟蹤,不1.Driver向ClusterManager(集群資源管理器)申請(qǐng)運(yùn)?task需要的資源。2.集群資源管理器為task分配滿?要求的節(jié)點(diǎn),并在節(jié)點(diǎn)按照要求創(chuàng)建Executor3.創(chuàng)建的Executor向Driver注冊(cè)。4.Driver將Spark應(yīng)?程序的代碼和?件傳送給分配的Executor5.Executor運(yùn)?task,運(yùn)?完之后將結(jié)果返回給Driver或者寫?HDFS或其他介質(zhì)。Spark流程SparkonStandaloneMaster和Worker是Standalone的??,Driver和Executor是Spark的??。Master負(fù)責(zé)分配資源,分配Driver和Executor,讓W(xué)orker啟動(dòng)Driver和Executor,只管理到Executor層,不涉及任務(wù)。Driver負(fù)責(zé)?成task,并與Executor通信,進(jìn)?任務(wù)的調(diào)度和結(jié)果跟蹤,不涉及資源。Driver運(yùn)?在Worker1.客戶端把作業(yè)發(fā)布到Master2.Master讓?個(gè)Worker啟動(dòng)Driver,并將作業(yè)推送給Driver3.Driver進(jìn)程?成?系列task4.Driver向Master申請(qǐng)資源5.Master讓調(diào)度的Worker啟動(dòng)Exeuctor6.Exeuctor啟動(dòng)后向Driver注冊(cè)。7.Driver將task調(diào)度到Exeuctor執(zhí)?。8.Executor執(zhí)?結(jié)果寫??件或返回DriverDriver運(yùn)?在Client1.客戶端啟動(dòng)后直接運(yùn)??戶程序,啟動(dòng)Driver1.客戶端把作業(yè)發(fā)布到Master2.Master讓?個(gè)Worker啟動(dòng)Driver,并將作業(yè)推送給Driver3.Driver進(jìn)程?成?系列task4.Driver向Master申請(qǐng)資源5.Master讓調(diào)度的Worker啟動(dòng)Exeuctor6.Exeuctor啟動(dòng)后向Driver注冊(cè)。7.Driver將task調(diào)度到Exeuctor執(zhí)?。8.Executor執(zhí)?結(jié)果寫??件或返回DriverDriver運(yùn)?在Client1.客戶端啟動(dòng)后直接運(yùn)??戶程序,啟動(dòng)Driver2.Driver進(jìn)程?成?系列task3.Driver向Master申請(qǐng)資源4.Master讓調(diào)度的Worker啟動(dòng)Exeuctor5.Exeuctor啟動(dòng)后向Driver注冊(cè)。6.Driver將task調(diào)度到Exeuctor執(zhí)?。7.Executor執(zhí)?結(jié)果寫??件或返回DriverSpark的核?組件Spark的核?組件包括RDD、Scheduler、Storage、Shuffle四部分:RDD是Spark最核?最精髓的部分,Spark將所有數(shù)據(jù)都抽象成RDD。Scheduler是Spark的調(diào)度機(jī)制,分為DAGScheduler和TaskScheduler。Storage模塊主要管理緩存后的RDD、shuffle中間結(jié)果數(shù)據(jù)和broadcast數(shù)據(jù)Shuffle分為Hash?式和Sort?式,兩種?式的shuffle中間數(shù)據(jù)都寫本地盤RDD(ResilientDistributedDatasets)RDD是彈性分布式數(shù)據(jù)集,是只讀的分區(qū)記錄集合。每個(gè)RDD有5個(gè)主要的屬性:?組分?(Partition):數(shù)據(jù)集的最基本組成單位?個(gè)計(jì)算每個(gè)分?的函數(shù):對(duì)于給定的數(shù)據(jù)集,需要做哪些計(jì)算依賴(Dependencies):RDD的依賴關(guān)系,描述了RDD之間的lineagepreferredLocations(可選):對(duì)于datapartition的位置偏好partitioner(可選):對(duì)于計(jì)算出來(lái)的數(shù)據(jù)結(jié)果如何分發(fā)作?于RDD上的Operation分為轉(zhuǎn)換(transformantion)和動(dòng)作(action)。Spark中的所有“轉(zhuǎn)換”都是惰性的,在執(zhí)?“轉(zhuǎn)換”操作,并不會(huì)提交Job,只有在執(zhí)?“動(dòng)作”操作,所有operation才會(huì)被提交到cluster中真正的被執(zhí)?。這樣可以??提升系統(tǒng)的性能。轉(zhuǎn)換:從現(xiàn)有的數(shù)據(jù)集創(chuàng)建?個(gè)新的數(shù)據(jù)集即數(shù)據(jù)集中的內(nèi)容會(huì)發(fā)?更改,由數(shù)據(jù)集A轉(zhuǎn)換成為數(shù)據(jù)集B動(dòng)作:在數(shù)據(jù)集上運(yùn)?計(jì)算后,返回?個(gè)值給驅(qū)動(dòng)程序。即數(shù)據(jù)集中的內(nèi)容會(huì)被歸約為?個(gè)具體的數(shù)值(Scala標(biāo)量、集合類型的數(shù)據(jù)或存儲(chǔ))。RDD擁有的操作?MR豐富的多,不僅僅包括Map、Reduce操作,還包括右圖的filter、sort、join、save、count等操作,所以Spark?MR更容易?便完成更復(fù)雜的任務(wù)。RDD持久化默認(rèn)情況下,每?個(gè)轉(zhuǎn)換過(guò)的RDD都會(huì)在它之上執(zhí)??個(gè)動(dòng)作時(shí)被重新計(jì)算。如果RDD只被使??次或者很少次,不需要持久化。如果RDD被重復(fù)使?或者計(jì)算其代價(jià)很?,才考慮持久化。另外,shuffle后?成的RDD盡量持久化,因?yàn)閟huffle代價(jià)太?。RDD被緩存后,Spark將會(huì)在集群中,保存相關(guān)元數(shù)據(jù),下次查詢這個(gè)RDD時(shí),它將能更快速訪問(wèn),不需要計(jì)算。如果持久化?謂的RDD,會(huì)浪費(fèi)內(nèi)存(或硬盤)空間,反?降低系統(tǒng)整體性能RDD依賴關(guān)系

Spark的核?組件包括RDD、Scheduler、Storage、Shuffle四部分:RDD是Spark最核?最精髓的部分,Spark將所有數(shù)據(jù)都抽象成RDD。Scheduler是Spark的調(diào)度機(jī)制,分為DAGScheduler和TaskScheduler。Storage模塊主要管理緩存后的RDD、shuffle中間結(jié)果數(shù)據(jù)和broadcast數(shù)據(jù)Shuffle分為Hash?式和Sort?式,兩種?式的shuffle中間數(shù)據(jù)都寫本地盤RDD(ResilientDistributedDatasets)RDD是彈性分布式數(shù)據(jù)集,是只讀的分區(qū)記錄集合。每個(gè)RDD有5個(gè)主要的屬性:?組分?(Partition):數(shù)據(jù)集的最基本組成單位?個(gè)計(jì)算每個(gè)分?的函數(shù):對(duì)于給定的數(shù)據(jù)集,需要做哪些計(jì)算依賴(Dependencies):RDD的依賴關(guān)系,描述了RDD之間的lineagepreferredLocations(可選):對(duì)于datapartition的位置偏好partitioner(可選):對(duì)于計(jì)算出來(lái)的數(shù)據(jù)結(jié)果如何分發(fā)作?于RDD上的Operation分為轉(zhuǎn)換(transformantion)和動(dòng)作(action)。Spark中的所有“轉(zhuǎn)換”都是惰性的,在執(zhí)?“轉(zhuǎn)換”操作,并不會(huì)提交Job,只有在執(zhí)?“動(dòng)作”操作,所有operation才會(huì)被提交到cluster中真正的被執(zhí)?。這樣可以??提升系統(tǒng)的性能。轉(zhuǎn)換:從現(xiàn)有的數(shù)據(jù)集創(chuàng)建?個(gè)新的數(shù)據(jù)集即數(shù)據(jù)集中的內(nèi)容會(huì)發(fā)?更改,由數(shù)據(jù)集A轉(zhuǎn)換成為數(shù)據(jù)集B動(dòng)作:在數(shù)據(jù)集上運(yùn)?計(jì)算后,返回?個(gè)值給驅(qū)動(dòng)程序。即數(shù)據(jù)集中的內(nèi)容會(huì)被歸約為?個(gè)具體的數(shù)值(Scala標(biāo)量、集合類型的數(shù)據(jù)或存儲(chǔ))。RDD擁有的操作?MR豐富的多,不僅僅包括Map、Reduce操作,還包括右圖的filter、sort、join、save、count等操作,所以Spark?MR更容易?便完成更復(fù)雜的任務(wù)。RDD持久化默認(rèn)情況下,每?個(gè)轉(zhuǎn)換過(guò)的RDD都會(huì)在它之上執(zhí)??個(gè)動(dòng)作時(shí)被重新計(jì)算。如果RDD只被使??次或者很少次,不需要持久化。如果RDD被重復(fù)使?或者計(jì)算其代價(jià)很?,才考慮持久化。另外,shuffle后?成的RDD盡量持久化,因?yàn)閟huffle代價(jià)太?。RDD被緩存后,Spark將會(huì)在集群中,保存相關(guān)元數(shù)據(jù),下次查詢這個(gè)RDD時(shí),它將能更快速訪問(wèn),不需要計(jì)算。如果持久化?謂的RDD,會(huì)浪費(fèi)內(nèi)存(或硬盤)空間,反?降低系統(tǒng)整體性能RDD依賴關(guān)系RDD只能基于在穩(wěn)定物理存儲(chǔ)中的數(shù)據(jù)集和其他已有的RDD上執(zhí)?確定性操作來(lái)創(chuàng)建。能從其他RDD通過(guò)確定操作創(chuàng)建新的RDD的原因是RDD含有從其他RDD衍?(即計(jì)算)出本RDD的相關(guān)信息(即Lineage)。Dependency代表了RDD之間的依賴關(guān)系,即?緣(Lineage),分為窄依賴和寬依賴:窄依賴:?個(gè)?RDD最多被?個(gè)?RDD?在?個(gè)集群節(jié)點(diǎn)上管道式執(zhí)?。?如map、filter、union等寬依賴:?RDD的分區(qū)依賴于?RDD的所有分區(qū),這是因?yàn)閟huffle類操作要求所有?分區(qū)可?。?如groupByKey、reduceByKey、sort、partitionBy等根據(jù)RDD依賴關(guān)系的不同,Spark將每?個(gè)job分為不同的stage,stage之間的依賴關(guān)系形成了DAG圖。對(duì)于窄依賴,Spark將其盡量劃分在同?個(gè)stage中,因?yàn)樗鼈兛梢赃M(jìn)?流?線計(jì)算,?寬依賴往往意味著shuffle操作,這也是Spark劃分stage的主要邊界。寬/窄依賴的概念不??在stage劃分中,對(duì)容錯(cuò)也很有?。若Transformation操作中間發(fā)?計(jì)算失敗,如果運(yùn)算是窄依賴,只要把丟失的?RDD分區(qū)重算即可,跟其他節(jié)點(diǎn)沒(méi)有依賴,這樣可以??加快場(chǎng)景恢復(fù)的開(kāi)銷,但如果運(yùn)算是寬依賴,則需要?RDD的所有分區(qū)都存在,重算代價(jià)就較?。當(dāng)Lineage特別長(zhǎng)時(shí)或者有寬依賴時(shí),主動(dòng)調(diào)?checkpoint把當(dāng)前數(shù)據(jù)寫?穩(wěn)定存儲(chǔ),作為檢查點(diǎn)。Scheduler

RDD只能基于在穩(wěn)定物理存儲(chǔ)中的數(shù)據(jù)集和其他已有的RDD上執(zhí)?確定性操作來(lái)創(chuàng)建。能從其他RDD通過(guò)確定操作創(chuàng)建新的RDD的原因是RDD含有從其他RDD衍?(即計(jì)算)出本RDD的相關(guān)信息(即Lineage)。Dependency代表了RDD之間的依賴關(guān)系,即?緣(Lineage),分為窄依賴和寬依賴:窄依賴:?個(gè)?RDD最多被?個(gè)?RDD?在?個(gè)集群節(jié)點(diǎn)上管道式執(zhí)?。?如map、filter、union等寬依賴:?RDD的分區(qū)依賴于?RDD的所有分區(qū),這是因?yàn)閟huffle類操作要求所有?分區(qū)可?。?如groupByKey、reduceByKey、sort、partitionBy等根據(jù)RDD依賴關(guān)系的不同,Spark將每?個(gè)job分為不同的stage,stage之間的依賴關(guān)系形成了DAG圖。對(duì)于窄依賴,Spark將其盡量劃分在同?個(gè)stage中,因?yàn)樗鼈兛梢赃M(jìn)?流?線計(jì)算,?寬依賴往往意味著shuffle操作,這也是Spark劃分stage的主要邊界。寬/窄依賴的概念不??在stage劃分中,對(duì)容錯(cuò)也很有?。若Transformation操作中間發(fā)?計(jì)算失敗,如果運(yùn)算是窄依賴,只要把丟失的?RDD分區(qū)重算即可,跟其他節(jié)點(diǎn)沒(méi)有依賴,這樣可以??加快場(chǎng)景恢復(fù)的開(kāi)銷,但如果運(yùn)算是寬依賴,則需要?RDD的所有分區(qū)都存在,重算代價(jià)就較?。當(dāng)Lineage特別長(zhǎng)時(shí)或者有寬依賴時(shí),主動(dòng)調(diào)?checkpoint把當(dāng)前數(shù)據(jù)寫?穩(wěn)定存儲(chǔ),作為檢查點(diǎn)。SchedulerScheduler模塊作為Spark最核?的模塊之?,充分體現(xiàn)了Spark與MapReduce的不同之處,體現(xiàn)了SparkDAG思想的精巧和設(shè)計(jì)的優(yōu)雅。Scheduler模塊分為兩?主要部分,DAGScheduler和TaskScheduler。DAGScheduler把?個(gè)spark作業(yè)轉(zhuǎn)換成成stage的DAG(DirectedAcyclicGraph有向?環(huán)圖),根據(jù)RDD和stage之間的關(guān)系,找出開(kāi)銷最?的調(diào)度?法,然后把stage以TaskSet的形式提交給TaskScheduler。TaskScheduler模塊?于與DAGScheduler交互,負(fù)責(zé)任務(wù)的具體調(diào)度和運(yùn)?。任務(wù)調(diào)度模塊基于兩個(gè)Trait:TaskScheduler和SchedulerBackend。StorageStorage模塊主要分為兩層:通信層:Storage模塊采?的是master-slave結(jié)構(gòu)來(lái)實(shí)現(xiàn)通信層,master和slave之間傳輸控制信息、狀態(tài)信息,這些都是通過(guò)通信層來(lái)實(shí)現(xiàn)的。存儲(chǔ)層:Storage模塊需要把數(shù)據(jù)存儲(chǔ)到disk或是memory上?,有可能還需replicate到遠(yuǎn)端,這都是由存儲(chǔ)層來(lái)實(shí)現(xiàn)和提供相應(yīng)接?。Storage模塊提供了統(tǒng)?的操作類BlockManag

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論