首頁(yè)技術(shù)文章正文

Spark發(fā)展史:讓你了解什么是Spark?

更新時(shí)間:2020-04-23 來(lái)源:黑馬程序員 瀏覽量:

Spark于2009年誕生于美國(guó)加州大學(xué)伯克利分校的AMP實(shí)驗(yàn)室,它是一個(gè)可應(yīng)用于大規(guī)模數(shù)據(jù)處理的統(tǒng)一分析引擎。Spark不僅計(jì)算速度快,而且內(nèi)置了豐富的APl,使得用戶能夠更加容易地編寫(xiě)程序。下面我們就來(lái)聊聊Spark的發(fā)展歷史。

 

Spark在2013年加入Apache孵化器項(xiàng)目,之后發(fā)展迅猛,并于2014年正式成為Apache軟件基金會(huì)的頂級(jí)項(xiàng)目。Spark從最初研發(fā)到最終成為Apache的頂級(jí)項(xiàng)目,其發(fā)展的整個(gè)過(guò)程僅用了5年時(shí)間目前。

目前,Spark生態(tài)系統(tǒng)已經(jīng)發(fā)展成為一個(gè)可應(yīng)用于大規(guī)模數(shù)據(jù)處理的統(tǒng)一分析引擎,它是基于內(nèi)存計(jì)算的大數(shù)據(jù)并行計(jì)算框架,適用于各種各樣的分布式平臺(tái)系統(tǒng)。在Spark生態(tài)圈中包含了Spark SQL、Spark Streaming、GraphX、MLlib等組件,這些組件可以非常容易地把各種處理流程整合在一起,而這樣的整合,在實(shí)際數(shù)據(jù)分析過(guò)程中是很有意義的。不僅如此,Spark的這種特性還大大減輕了原先需要對(duì)各種平臺(tái)分別管理的依賴負(fù)擔(dān)。下面,通過(guò)一張圖描述Spark的生態(tài)系統(tǒng),具體如下圖1所示。

1587621314563_Spark-Core01.jpg


通過(guò)上面圖片可以看出,Spark生態(tài)系統(tǒng)主要包含Spark Core、Spark SQL、Spark Streaming、MLib、GraphX以及獨(dú)立調(diào)度器,下面對(duì)上述組件進(jìn)行一一介紹。推薦了解黑馬程序員大數(shù)據(jù)培訓(xùn)課程。

 

(1)Spark Core:Spark核心組件,它實(shí)現(xiàn)了Spark的基本功能,包含任務(wù)調(diào)度、內(nèi)存管理、錯(cuò)誤恢復(fù)、與存儲(chǔ)系統(tǒng)交互等模塊。Spark Core中還包含了對(duì)彈性分布式數(shù)據(jù)集(Resilient Distributed Datasets,RDD)的API定義,RDD是只讀的分區(qū)記錄的集合,只能基于在穩(wěn)定物理存儲(chǔ)中的數(shù)據(jù)集和其他已有的RDD上執(zhí)行確定性操作來(lái)創(chuàng)建。

 

(2)Spark SQL:用來(lái)操作結(jié)構(gòu)化數(shù)據(jù)的核心組件,通過(guò)Spark SQL可以直接查詢Hive、 HBase等多種外部數(shù)據(jù)源中的數(shù)據(jù)。Spark SQL的重要特點(diǎn)是能夠統(tǒng)一處理關(guān)系表和RDD在處理結(jié)構(gòu)化數(shù)據(jù)時(shí),開(kāi)發(fā)人員無(wú)須編寫(xiě) MapReduce程序,直接使用SQL命令就能完成更加復(fù)雜的數(shù)據(jù)查詢操作。

 

(3)Spark Streaming:Spark提供的流式計(jì)算框架,支持高吞吐量、可容錯(cuò)處理的實(shí)時(shí)流式數(shù)據(jù)處理,其核心原理是將流數(shù)據(jù)分解成一系列短小的批處理作業(yè),每個(gè)短小的批處理作業(yè)都可以使用 Spark Core進(jìn)行快速處理。Spark Streaming支持多種數(shù)據(jù)源,如 Kafka以及TCP套接字等。

 

(4)MLlib:Spark提供的關(guān)于機(jī)器學(xué)習(xí)功能的算法程序庫(kù),包括分類(lèi)、回歸、聚類(lèi)、協(xié)同過(guò)濾算法等,還提供了模型評(píng)估、數(shù)據(jù)導(dǎo)入等額外的功能,開(kāi)發(fā)人員只需了解一定的機(jī)器學(xué)習(xí)算法知識(shí)就能進(jìn)行機(jī)器學(xué)習(xí)方面的開(kāi)發(fā),降低了學(xué)習(xí)成本。

(5) GraphX: Spark提供的分布式圖處理框架,擁有圖計(jì)算和圖挖掘算法的API接口以及豐富的功能和運(yùn)算符,極大地方便了對(duì)分布式圖的處理需求,能在海量數(shù)據(jù)上運(yùn)行復(fù)雜的圖算法。

(6)獨(dú)立調(diào)度器、Yarn、 Mesos: Spark框架可以高效地在一個(gè)到數(shù)千個(gè)節(jié)點(diǎn)之間伸縮計(jì)算,集群管理器則主要負(fù)責(zé)各個(gè)節(jié)點(diǎn)的資源管理工作,為了實(shí)現(xiàn)這樣的要求,同時(shí)獲得最大的靈活性, Spark支持在各種集群管理器( Cluster Manager)上運(yùn)行, Hadoop Yarn、Apache Mesos以及 Spark自帶的獨(dú)立調(diào)度器都被稱為集群管理器。

 

Spark生態(tài)系統(tǒng)各個(gè)組件關(guān)系密切,并且可以相互調(diào)用,這樣設(shè)計(jì)具有以下顯著優(yōu)勢(shì)。

(1) Spark生態(tài)系統(tǒng)包含的所有程序庫(kù)和高級(jí)組件都可以從 Spark核心引擎的改進(jìn)中獲益。

(2)不需要運(yùn)行多套獨(dú)立的軟件系統(tǒng),能夠大大減少運(yùn)行整個(gè)系統(tǒng)的資源代價(jià)。

(3)能夠無(wú)縫整合各個(gè)系統(tǒng),構(gòu)建不同處理模型的應(yīng)用。

 

綜上所述,Spak框架對(duì)大數(shù)據(jù)的支持從內(nèi)存計(jì)算、實(shí)時(shí)處理到交互式查詢,進(jìn)而發(fā)展到圖計(jì)算和機(jī)器學(xué)習(xí)模塊。Spark生態(tài)系統(tǒng)廣泛的技術(shù)面,一方面挑戰(zhàn)占據(jù)大數(shù)據(jù)市場(chǎng)份額最大的Hadoop,另一方面又隨時(shí)準(zhǔn)備迎接后起之秀Flink、Kafka等計(jì)算框架的挑戰(zhàn),從而使Spark在大數(shù)據(jù)領(lǐng)域更好地發(fā)展。

猜你喜歡

什么是機(jī)器學(xué)習(xí)?


分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!