Spark作為大數(shù)據(jù)在國(guó)內(nèi)常用的兩大架構(gòu)之一,因?yàn)槠涓訌?qiáng)大的功能而代表著大數(shù)據(jù)架構(gòu)的未來。中培偉業(yè)《大數(shù)據(jù)Hadoop與Spark架構(gòu)應(yīng)用實(shí)戰(zhàn)》培訓(xùn)專家鐘老師在這里就大數(shù)據(jù)Spark架構(gòu)的核心部件進(jìn)行了詳細(xì)介紹。
Spark大數(shù)據(jù)分析框架的核心部件包含RDD內(nèi)存數(shù)據(jù)結(jié)構(gòu)、Streaming流計(jì)算框架、GraphX圖計(jì)算與網(wǎng)狀數(shù)據(jù)挖掘、MLlib機(jī)器學(xué)習(xí)支持框架、Spark SQL數(shù)據(jù)檢索語言、Tachyon文件系統(tǒng)、SparkR計(jì)算引擎等主要部件。
一、RDD內(nèi)存數(shù)據(jù)結(jié)構(gòu)
大數(shù)據(jù)分析系統(tǒng)一般包括數(shù)據(jù)獲取、數(shù)據(jù)清洗、數(shù)據(jù)處理、數(shù)據(jù)分析、報(bào)表輸出等子系統(tǒng)。Spark為了方便數(shù)據(jù)處理、提升性能,專門引入了RDD數(shù)據(jù)內(nèi)存結(jié)構(gòu),這一點(diǎn)與的機(jī)制非常類似。用戶程序只需要訪問RDD的結(jié)構(gòu),與存儲(chǔ)系統(tǒng)的數(shù)據(jù)調(diào)度、交換都由提供者驅(qū)動(dòng)去實(shí)現(xiàn)。RDD可以與Haoop的 HBaseHDFS等交互,用作數(shù)據(jù)存儲(chǔ)系統(tǒng),當(dāng)然也可以通過擴(kuò)展支持很多其它的數(shù)據(jù)存儲(chǔ)系統(tǒng)。
因?yàn)橛辛薘DD,應(yīng)用模型就與物理存儲(chǔ)分離開來,而且能夠更容易地處理大量數(shù)據(jù)記錄遍歷搜索的情況,這一點(diǎn)非常重要。因?yàn)镠adoop的結(jié)構(gòu)主要適用于順序處理,要翻回去反復(fù)檢索數(shù)據(jù)的話效率就非常低下,而且缺乏一個(gè)統(tǒng)一的實(shí)現(xiàn)框架,由算法開發(fā)者自己去想辦法實(shí)現(xiàn)。毫無疑問,這具有相當(dāng)大的難度。 RDD的出現(xiàn),使這一問題得到了一定程度的解決。但正因?yàn)镽DD是核心部件、實(shí)現(xiàn)難度大,這一塊的性能、容量、穩(wěn)定性直接決定著其它算法的實(shí)現(xiàn)程度。從目前看,還是經(jīng)常會(huì)出現(xiàn)RDD占用的內(nèi)存過載出問題的情況。
二、Streaming流計(jì)算框架
流是現(xiàn)在推特、微博、微信、圖片服務(wù)以及物聯(lián)網(wǎng)、位置服務(wù)等等的重要數(shù)據(jù)形態(tài),因此流計(jì)算正顯得前所未有的重要。流計(jì)算框架是所有互聯(lián)網(wǎng)服務(wù)商的核心基礎(chǔ)架構(gòu),AmazonMicrosoft都已經(jīng)推出了Event消息總線云服務(wù)平臺(tái),而facebook witter等更是將自己的流計(jì)算框架開源。
Spark Streaming專門設(shè)計(jì)用于處理流式數(shù)據(jù)。通過Spark Streaming,可以快速地將數(shù)據(jù)推入處理環(huán)節(jié),猶如流水線一樣進(jìn)行快速的加工,并在最短的時(shí)間反饋給使用。
三、GraphX圖計(jì)算與網(wǎng)狀數(shù)據(jù)挖掘
物理網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),社交網(wǎng)絡(luò)的連接關(guān)系,傳統(tǒng)數(shù)據(jù)庫(kù)的E-R關(guān)系,都是典型的圖(Graph)數(shù)據(jù)模型。Hadoop主要適用于“數(shù)據(jù)量”很大的場(chǎng)合,對(duì)于關(guān)系的處理幾乎沒有支持,Hbase也是非常弱的關(guān)系處理能力。圖數(shù)據(jù)結(jié)構(gòu)往往需要快速多次對(duì)數(shù)據(jù)進(jìn)行掃描式遍歷,RDD的引入使Spark可以更高效地處理基于圖的數(shù)據(jù)結(jié)構(gòu),從而使存儲(chǔ)和處理大規(guī)模的圖網(wǎng)絡(luò)成為可能。類似的專用于圖的系統(tǒng)還有neo4j等。
GraphX相對(duì)于傳統(tǒng)數(shù)據(jù)庫(kù)的關(guān)系連接,可以處理更大規(guī)模、更深度的拓?fù)潢P(guān)系,可以在多個(gè)集群節(jié)點(diǎn)上進(jìn)行運(yùn)算,確實(shí)是現(xiàn)代數(shù)據(jù)關(guān)系研究的利器。
四、MLlib機(jī)器學(xué)習(xí)支持框架
通過把機(jī)器學(xué)習(xí)的算法移植到Spark架構(gòu)上,一方面可以利用底層的大規(guī)模存儲(chǔ)和RDD的數(shù)據(jù)快速訪問能力,還可以利用圖數(shù)據(jù)結(jié)構(gòu)和集群計(jì)算的處理能力,使機(jī)器學(xué)習(xí)的運(yùn)算可以在大規(guī)模的集群系統(tǒng)上展開,即大力拓展了機(jī)器學(xué)習(xí)算法的應(yīng)用能力。
五、Spark SQL數(shù)據(jù)檢索語言
這個(gè)跟基于Hive的實(shí)現(xiàn)有些類似,但是基于RDD理論上能提供更好的性能,同時(shí)能更方便處理如join和關(guān)系檢索等操作。這個(gè)被設(shè)計(jì)為與用戶交互的一個(gè)標(biāo)準(zhǔn)化入口。
六、Tachyon文件系統(tǒng)
Tachyon是一個(gè)類似于HDFS的實(shí)現(xiàn),不過感覺上更加接近于使用者,而HDFS主要是面向存儲(chǔ)塊的。
七、SparkR計(jì)算引擎
將R語言的能力應(yīng)用到Spark基礎(chǔ)計(jì)算架構(gòu)上,為其提供算法引擎。