什么是Spark

目錄
1.什么是Spark
2.為什么使用Spark
3.Spark的特點
4.Spark的體系架構(gòu)
5.Spark運行機制及原理分析

1.什么是Spark?

????Spark是一種快速、通用、可擴展的大數(shù)據(jù)分析引擎,2009年誕生于加州大學(xué)伯克利分校AMPLab,2010年開源,2013年6月成為Apache孵化項目,2014年2月成為Apache頂級項目。目前,Spark生態(tài)系統(tǒng)已經(jīng)發(fā)展成為一個包含多個子項目的集合,其中包含SparkSQL、Spark Streaming、GraphX、MLlib等子項目,Spark是基于內(nèi)存計算的大數(shù)據(jù)并行計算框架。Spark基于內(nèi)存計算,提高了在大數(shù)據(jù)環(huán)境下數(shù)據(jù)處理的實時性,同時保證了高容錯性和高可伸縮性,允許用戶將Spark部署在大量廉價硬件之上,形成集群。Spark得到了眾多大數(shù)據(jù)公司的支持,這些公司包括Hortonworks、IBM、Intel、Cloudera、MapR、Pivotal、百度、阿里、騰訊、京東、攜程、優(yōu)酷土豆。當(dāng)前百度的Spark已應(yīng)用于鳳巢、大搜索、直達號、百度大數(shù)據(jù)等業(yè)務(wù);阿里利用GraphX構(gòu)建了大規(guī)模的圖計算和圖挖掘系統(tǒng),實現(xiàn)了很多生產(chǎn)系統(tǒng)的推薦算法;騰訊Spark集群達到8000臺的規(guī)模,是當(dāng)前已知的世界上最大的Spark集群。

2.為什么要使用Spark?

(1)Hadoop的MapReduce計算模型存在的問題:
????MapReduce的核心是Shuffle(洗牌)。在整個Shuffle的過程中,至少會產(chǎn)生6次的I/O。下圖是MapReduce的Shuffle的過程。
????中間結(jié)果輸出:基于MapReduce的計算引擎通常會將中間結(jié)果輸出到磁盤上,進行存儲和容錯。另外,當(dāng)一些查詢(如:Hive)翻譯到MapReduce任務(wù)時,往往會產(chǎn)生多個Stage(階段),而這些串聯(lián)的Stage又依賴于底層文件系統(tǒng)(如HDFS)來存儲每一個Stage的輸出結(jié)果,而I/O的效率往往較低,從而影響了MapReduce的運行速度。

MapReduce的Shuffle

(2)Spark的最大特點:基于內(nèi)存
????Spark是MapReduce的替代方案,而且兼容HDFS、Hive,可融入Hadoop的生態(tài)系統(tǒng),以彌補MapReduce的不足。

3.Spark的特點:快、易用、通用、兼容性

(1)快
????與Hadoop的MapReduce相比,Spark基于內(nèi)存的運算速度要快100倍以上,即使,Spark基于硬盤的運算也要快10倍。Spark實現(xiàn)了高效的DAG執(zhí)行引擎,從而可以通過內(nèi)存來高效處理數(shù)據(jù)流。

(2)易用
????Spark支持Java、Python和Scala的API,還支持超過80種高級算法,使用戶可以快速構(gòu)建不同的應(yīng)用。而且Spark支持交互式的Python和Scala的shell,可以非常方便地在這些shell中使用Spark集群來驗證解決問題的方法。

(3)通用
????Spark提供了統(tǒng)一的解決方案。Spark可以用于批處理、交互式查詢(Spark SQL)、實時流處理(Spark Streaming)、機器學(xué)習(xí)(Spark MLlib)和圖計算(GraphX)。這些不同類型的處理都可以在同一個應(yīng)用中無縫使用。Spark統(tǒng)一的解決方案非常具有吸引力,畢竟任何公司都想用統(tǒng)一的平臺去處理遇到的問題,減少開發(fā)和維護的人力成本和部署平臺的物力成本。
????另外Spark還可以很好的融入Hadoop的體系結(jié)構(gòu)中可以直接操作HDFS,并提供Hive on Spark、Pig on Spark的框架集成Hadoop。

(4)兼容性
????Spark可以非常方便地與其他的開源產(chǎn)品進行融合。比如,Spark可以使用Hadoop的YARN和Apache Mesos作為它的資源管理和調(diào)度器,器,并且可以處理所有Hadoop支持的數(shù)據(jù),包括HDFS、HBase和Cassandra等。這對于已經(jīng)部署Hadoop集群的用戶特別重要,因為不需要做任何數(shù)據(jù)遷移就可以使用Spark的強大處理能力。Spark也可以不依賴于第三方的資源管理和調(diào)度器,它實現(xiàn)了Standalone作為其內(nèi)置的資源管理和調(diào)度框架,這樣進一步降低了Spark的使用門檻,使得所有人都可以非常容易地部署和使用Spark。此外,Spark還提供了在EC2上部署Standalone的Spark集群的工具。

4.Spark集群的體系結(jié)構(gòu)
Spark集群的體系架構(gòu)1
Spark集群的體系架構(gòu)2
Spark集群的體系架構(gòu)3

(1)結(jié)構(gòu)
(a)Master:接收任務(wù)請求,分發(fā)任務(wù)

(b)Worker:本節(jié)點任務(wù)調(diào)度,資源管理。默認(rèn)占用該節(jié)點所有資源

  • Spark對內(nèi)存沒有很好管理,容易出現(xiàn)OOM。Spark把內(nèi)存管理交給應(yīng)用程序。
  • Spark架構(gòu)出現(xiàn)單點故障問題,通過HA解決。

(c)Driver:客戶端

(2)啟動方式:
1)Spark-submit:
????用于提交Spark 任務(wù)。每個任務(wù)是一個jar。
2)spark-shell:
????類似于 REPL

5.Spark運行機制及原理分析

(1).WordCount執(zhí)行的流程分析

WordCount執(zhí)行的流程

(2).Spark提交任務(wù)的流程


Spark提交任務(wù)的流程
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容