如果說(shuō) MapReduce 是批處理的馬自達(dá)西壮,那 Spark 一定是批處理的法拉利
原因之一就是它將數(shù)據(jù)優(yōu)先放在內(nèi)存厂画,內(nèi)存讀取速度遠(yuǎn)高于 MapReduce 的磁盤(pán) IO 速度踊挠,如果需要多次 Map 處理腰奋,就像馬自達(dá)和法拉利比賽跑遠(yuǎn)距離,之間的差距成指數(shù)級(jí)擴(kuò)大
SparkCore 是法拉利的核心引擎
RDD(彈性分布式數(shù)據(jù)集)之剧、DataFrame跺嗽、DataSet战授,Spark 任務(wù)處理的基本單元。所有 Operations(中文稱(chēng)為算子)都是作用在上這些數(shù)據(jù)集上桨嫁。
SparkCore 定義了 RDD植兰、DataFrame、DataSet璃吧。
除此之外楣导,SparkCore 還提供了 Spark 很多核心功能,包括但不限于:
-
SparkContext: spark 任務(wù)入口畜挨,在提交 Spark 任務(wù)之前需要先初始化 SparkContext筒繁,用來(lái)配置 Application 名噩凹、運(yùn)行方式等等
SparkContext 也可以被用來(lái)創(chuàng)建 RDD,DataFrame 等
存儲(chǔ)體系: 定義待處理數(shù)據(jù)集優(yōu)先存儲(chǔ)于各個(gè) NodeManager (運(yùn)行節(jié)點(diǎn))的內(nèi)存毡咏,它是法拉利的發(fā)動(dòng)機(jī)驮宴,飛起跑的可靠保證
transforms 算子很懶
處理 Spark 數(shù)據(jù)集(如 RDD)的 Operations 有兩種:
Transforms 算子
Actions 算子
transforms 算子處理對(duì)象是 RDD,返回的也是 RDD呕缭,正如其名堵泽,transforms 只是對(duì) RDD 做了轉(zhuǎn)換:
如調(diào)用filterMap()過(guò)濾數(shù)據(jù),Map()對(duì)基本單元數(shù)據(jù)進(jìn)行轉(zhuǎn)換恢总。
actions 算子則是返回最后結(jié)果或者寫(xiě)入存儲(chǔ)的操作(返回的不是RDD):
如take(), collect()返回并輸出 RDD 中真實(shí)的數(shù)據(jù)迎罗,saveAsTextFile()把 RDD 內(nèi)容保存成文本文件。
當(dāng)程序運(yùn)行到 Transforms 算子的時(shí)間离熏,該 Transforms 操作并不會(huì)第一時(shí)間被觸發(fā)并且執(zhí)行佳谦,該操作只會(huì)被記錄;
當(dāng)執(zhí)行到Actions 時(shí),前面記錄的 Transforms 算子才會(huì)真正執(zhí)行滋戳。
惰性機(jī)制提高了內(nèi)存的利用率钻蔑。
Spark 高配
Spark SQL:提供類(lèi) SQL 語(yǔ)句解析,將 SQL 解析成 Spark 任務(wù)
Spark Streaming:提供微批處理服務(wù)奸鸯,可以看成秒級(jí)別的流處理計(jì)算框架
GraphX:分布式圖處理計(jì)算框架咪笑,不了解。娄涩。窗怒。
MLlib:spark 的機(jī)器學(xué)習(xí)框架