Spark計算引擎
為大規(guī)模數(shù)據(jù)處理而設(shè)計的快速通用的計算引擎。
Spark計算引擎是美國加利福尼亞大學(xué)伯克利分校的算法、機器和人(algorithms machines and people,AMP)實驗室所開源的Hadoop映射-化簡(MapReduce)的通用并行框架。Spark擁有MapReduce所具有的優(yōu)點,不同于MapReduce的是其工作中間輸出結(jié)果可以保存在內(nèi)存中,從而不再需要讀寫Hadoop分布式文件系統(tǒng)(Hadoop distributed file system,HDFS),因此Spark能更好地適用于數(shù)據(jù)挖掘與機器學(xué)習(xí)等需要迭代的MapReduce的算法。
Spark的核心概念是彈性分布式數(shù)據(jù)集(resilient distributed datasets,RDD)。從本質(zhì)上來說,RDD是分布式內(nèi)存的一個抽象概念,RDD提供了一種高度受限的共享內(nèi)存模型,即RDD是只讀的記錄分區(qū)的集合,只能通過在其他RDD執(zhí)行確定的轉(zhuǎn)換操作而創(chuàng)建,然而這些限制使得實現(xiàn)容錯的開銷很低。對開發(fā)者而言,RDD可以看作是Spark的一個對象,它本身運行于內(nèi)存中,如讀文件是一個RDD,對文件計算是一個RDD,結(jié)果集也是一個RDD,不同的分片、數(shù)據(jù)之間的依賴、鍵值類型的映射數(shù)據(jù)都可以看作RDD。
Spark已經(jīng)形成了較為完整的生態(tài)圈,其中包括:Spark Core是Spark的核心應(yīng)用程序接口(application program interface,API),實現(xiàn)了很多基本的RDD轉(zhuǎn)換操作;Spark SQL是Spark針對結(jié)構(gòu)化數(shù)據(jù)的API,能夠使SQL對結(jié)構(gòu)化數(shù)據(jù)進行標(biāo)準(zhǔn)分析;Spark Streaming是Spark針對流數(shù)據(jù)的API,可以實現(xiàn)對大規(guī)模數(shù)據(jù)流以元組為單位低延遲的處理;Spark MLib是Spark針對機器學(xué)習(xí)任務(wù)的API,可以有效地進行大規(guī)模迭代計算;Spark GraphX是Spark針對圖數(shù)據(jù)的API。