生活離不開水,同樣離不開數(shù)據(jù),我們被數(shù)據(jù)包圍,在數(shù)據(jù)中生活。當(dāng)數(shù)據(jù)越來越多時,就成了大數(shù)據(jù)。
在“中國制造2025”的技術(shù)路線圖中,工業(yè)大數(shù)據(jù)是作為重要突破點來規(guī)劃的,而在未來的十年,以數(shù)據(jù)為核心構(gòu)建的智能化體系會成為支撐智能制造和工業(yè)互聯(lián)網(wǎng)的核心動力。而想要理解大數(shù)據(jù),就需要理解大數(shù)據(jù)相關(guān)的查詢、處理、機器學(xué)習(xí)、圖計算和統(tǒng)計分析等。Apache Spark作為新一代輕量級大數(shù)據(jù)快速處理平臺,集成了大數(shù)據(jù)相關(guān)的各種能力,是理解大數(shù)據(jù)的首選。
簡單來講,Spark就是一個快速、通用的大規(guī)模數(shù)據(jù)處理引擎,各種不同的應(yīng)用,如實時流處理、機器學(xué)習(xí)、交互式查詢等,都可以通過Spark 建立在不同的存儲和運行系統(tǒng)上。今天的格物匯,就帶大家來認(rèn)識一下如日中天、高速發(fā)展的大數(shù)據(jù)處理明星——Spark。
1Spark發(fā)展歷程
2009年,Spark誕生于伯克利大學(xué)AMPLab,最開初屬于伯克利大學(xué)的研究性項目,最開始Spark只是一個實驗性的項目,代碼量非常少,僅有3900行代碼左右,屬于輕量級的框架。
2010年,伯克利大學(xué)正式開源了Spark項目。
2013年6月,Spark成為了Apache基金會下的項目,進入高速發(fā)展期,第三方開發(fā)者貢獻了大量的代碼,活躍度非常高。
2014年2月,Spark以飛快的速度稱為了Apache的頂級項目。
2014年5月底Spark1.0.0發(fā)布。
2016年6月Spark2.0.0發(fā)布
2018年11月 Spark2.4.0 發(fā)布
Spark作為Hadoop生態(tài)中重要的一員,其發(fā)展速度堪稱恐怖,從誕生到成為Apache頂級項目不到五年時間,不過在如今數(shù)據(jù)量飛速增長的環(huán)境與背景下,Spark作為高效的計算框架能收到如此大的關(guān)注也是有所依據(jù)的。
2Spark的特點
Spark通過使用先進的DAG調(diào)度器、查詢優(yōu)化器和物理執(zhí)行引擎,可以高性能地進行批量及流式處理。使用邏輯回歸算法進行迭代計算,Spark比Hadoop速度快100多倍。
Spark目前支持多種編程語言,比如Java、Scala、Python、R。熟悉其中任一門語言的都可以直接上手編寫Spark程序,非常方便。還支持超過80種高級算法,使用戶可以快速構(gòu)建不同應(yīng)用。并且Spark還支持交互式的Python和Scala的Shell,這意味著可以非常方便的在這些Shell中使用Spark集群來驗證解決問題的方法,而不是像以前一樣,需要打包、上傳集群、驗證等。這對于原型開發(fā)非常重要。
Spark 目前主要由四大組件,如下:
Spark SQL:SQL on Hadoop,能夠提供交互式查詢和報表查詢,通過JDBC等接口調(diào)用;
Spark Streaming::流式計算引擎;
Spark MLlib:機器學(xué)習(xí)庫;
Spark GraphX:圖計算引擎。
擁有這四大組件,成功解決了大數(shù)據(jù)領(lǐng)域中,離線批處理、交互式查詢、實時流計算、機器學(xué)習(xí)與圖計算等最重要的任務(wù)和問題,這些不同類型的處理都可以在同一應(yīng)用中無縫使用。Spark統(tǒng)一的解決方案非常具有吸引力,畢竟任何公司都想用統(tǒng)一的平臺處理問題,減少開發(fā)和維護的人力成本和部署平臺的物理成本。當(dāng)然還有,作為統(tǒng)一的解決方案,Spark并沒有以犧牲性能為代價。相反,在性能方面Spark具有巨大優(yōu)勢。
Spark可以運行在standalone、YARN、Mesos、Kubernetes及EC2多種調(diào)度平臺上。其中Standalone模式不依賴第三方的資源管理器和調(diào)度器,這樣降低了Spark的使用門檻,使得所有人可以非常容易地部署和使用Spark。
Spark可以處理所有Hadoop支持的數(shù)據(jù),包括HDFS、Apach HBase、Apach Kudu、Apach Cassanda等。這對于已部署Hadoop集群的用戶特別重要,因為不需要做任何數(shù)據(jù)遷移就可以使用Spark強大的處理能力。
Spark與MapReduce 同為計算框架,但作為后起之秀,Spark借鑒了MapReduce,并在其基礎(chǔ)上進行了改進,使得算法性能明顯優(yōu)于MapReduce,下面大致總結(jié)一下兩者差異:
1)Spark把運算的中間數(shù)據(jù)存放在內(nèi)存,迭代計算效率更高;MapReduce的中間結(jié)果需要落地到磁盤,磁盤io操作多,影響性能。
2)Spark容錯性高,它通過Lineage機制實現(xiàn)RDD算子的高效容錯,某一部分丟失或者出錯,可以通過整個數(shù)據(jù)集的計算流程的血緣關(guān)系來實現(xiàn)重建;MapReduce的話容錯可能只能重新計算了,成本較高。
3)Spark更加通用,Spark提供了transformation和action這兩大類的多個功能算子,操作更為方便;MapReduce只提供了map和reduce兩種操作。
4)Spark框架和生態(tài)更為復(fù)雜,首先有RDD、血緣lineage、執(zhí)行時的有向無環(huán)圖DAG、stage劃分等等,很多時候spark作業(yè)都需要根據(jù)不同業(yè)務(wù)場景的需要進行調(diào)優(yōu)已達到性能要求;MapReduce框架及其生態(tài)相對較為簡單,對性能的要求也相對較弱,但是運行較為穩(wěn)定,適合長期后臺運行。
4Spark與工業(yè)互聯(lián)平臺
工業(yè)互聯(lián)網(wǎng)帶來了工業(yè)數(shù)據(jù)的快速發(fā)展,對于日益增加的海量數(shù)據(jù),傳統(tǒng)單機因本身的軟硬件限制無法應(yīng)對海量數(shù)據(jù)的處理、分析以及深度挖掘,但作為分布式計算框架的Spark卻能輕松應(yīng)付這些場景。在工業(yè)互聯(lián)網(wǎng)平臺上,Spark 既能快速實現(xiàn)工業(yè)現(xiàn)場海量流數(shù)據(jù)的處理轉(zhuǎn)換,又能輕松應(yīng)對工業(yè)大數(shù)據(jù)平臺中海量數(shù)據(jù)的快速批處理分析,自身集成的機器學(xué)習(xí)框架能夠對海量工業(yè)數(shù)據(jù)進行深度挖掘分析,從而幫助管理者進行決策分析。
基于Spark框架自身的優(yōu)良設(shè)計理念以及社區(qū)的蓬勃發(fā)展?fàn)顟B(tài),相信未來Spark會在工業(yè)互聯(lián)網(wǎng)平臺扮演越來越重要的角色。
本文作者:黃歡,格創(chuàng)東智大數(shù)據(jù)工程師 (轉(zhuǎn)載請注明來源及作者)
-
大數(shù)據(jù)
+關(guān)注
關(guān)注
64文章
8856瀏覽量
137222 -
智能制造
+關(guān)注
關(guān)注
48文章
5452瀏覽量
76238 -
工業(yè)互聯(lián)網(wǎng)
+關(guān)注
關(guān)注
28文章
4291瀏覽量
94022 -
SPARK
+關(guān)注
關(guān)注
1文章
105瀏覽量
19859 -
工業(yè)大數(shù)據(jù)
+關(guān)注
關(guān)注
0文章
72瀏覽量
7821
發(fā)布評論請先 登錄
相關(guān)推薦
評論