
Spark是一種快速、通用、可擴(kuò)展的大數(shù)據(jù)分析引擎,2009年誕生于加州大學(xué)伯克利分校AMPLab,2010年開源,2013年6月成為Apache孵化項(xiàng)目,2014年2月成為Apache頂級項(xiàng)目。目前,Spark生態(tài)系統(tǒng)已經(jīng)發(fā)展成為一個(gè)包含多個(gè)子項(xiàng)目的集合,其中包含SparkSQL、Spark Streaming、GraphX、MLlib等子項(xiàng)目,Spark是基于內(nèi)存計(jì)算的大數(shù)據(jù)并行計(jì)算框架。Spark基于內(nèi)存計(jì)算,提高了在大數(shù)據(jù)環(huán)境下數(shù)據(jù)處理的實(shí)時(shí)性,同時(shí)保證了高容錯(cuò)性和高可伸縮性,允許用戶將Spark部署在大量廉價(jià)硬件之上,形成集群。
Spark得到了眾多大數(shù)據(jù)公司的支持,這些公司包括Hortonworks、IBM、Intel、Cloudera、MapR、Pivotal、百度、阿里、騰訊、京東、攜程、優(yōu)酷土豆。當(dāng)前百度的Spark已應(yīng)用于鳳巢、大搜索、直達(dá)號、百度大數(shù)據(jù)等業(yè)務(wù);阿里利用GraphX構(gòu)建了大規(guī)模的圖計(jì)算和圖挖掘系統(tǒng),實(shí)現(xiàn)了很多生產(chǎn)系統(tǒng)的推薦算法;騰訊Spark集群達(dá)到8000臺的規(guī)模,是當(dāng)前已知的世界上最大的Spark集群。
- 概念:Spark是統(tǒng)一的分布式大數(shù)據(jù)分析引擎
- 關(guān)鍵詞:
-
-
統(tǒng)一:Spark能夠適應(yīng)多種計(jì)算場景 (離線計(jì)算、實(shí)時(shí)計(jì)算、機(jī)器學(xué)習(xí)、圖計(jì)算、AI應(yīng)用)。一般公司在進(jìn)行技術(shù)選型過程,spark首選
-
大數(shù)據(jù)分析引擎:Spark能夠分析數(shù)據(jù),但是沒有存儲。一般線上的spark數(shù)據(jù)來源 (HDFS, Hive、Kafka、Flume、日志文件、關(guān)系型數(shù)據(jù)庫、NoSQL數(shù)據(jù)庫)。Spark數(shù)據(jù)出口(HDFS、Hive、Kafka、Redise、關(guān)系型數(shù)據(jù)庫、NoSQL數(shù)據(jù)庫)
-
分布式:Spark一般情況是以集群模式存在。架構(gòu) :Master/Slaver(主從結(jié)構(gòu))
應(yīng)用場景
-
-
精準(zhǔn)廣告推薦系統(tǒng)(Spark機(jī)器學(xué)習(xí),一般在廣告或者電商公司應(yīng)用)
-
金融風(fēng)險(xiǎn)管控系統(tǒng) (對實(shí)時(shí)性要求比較,起碼毫秒級)
-
精細(xì)化運(yùn)行系統(tǒng) (CMS系統(tǒng) 、BI系統(tǒng),重點(diǎn):多維分析)
-
用戶畫像 (用戶數(shù)據(jù)畫像)
Spark是一個(gè)開源的類似于Hadoop MapReduce的通用的并行計(jì)算框架,Spark基于map reduce算法實(shí)現(xiàn)的分布式計(jì)算,擁有Hadoop MapReduce所具有的優(yōu)點(diǎn);但不同于MapReduce的 是Spark中的Job中間輸出和結(jié)果可以保存在內(nèi)存中,從而不再需要讀寫HDFS,因此Spark能更好地適用于數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)等需要迭代的map reduce的算法。
Spark是MapReduce的替代方案,而且兼容HDFS、Hive,可融入Hadoop的生態(tài)系統(tǒng),以彌補(bǔ)MapReduce的不足。
-
Spark特點(diǎn)
- 速度快
- 典型數(shù)據(jù)處理流程:Spark在使用過程中,會讀取HDFS上數(shù)據(jù),并且會將HDFS中數(shù)據(jù)駐留在內(nèi)存當(dāng)中,將數(shù)據(jù)進(jìn)行緩存、在后續(xù)數(shù)據(jù)迭代操作過程能夠重用內(nèi)存中的數(shù)。在邏輯回歸處理(算法)中,Spark的速度要比Hadoop 理論上快100倍
- 與Hadoop的MapReduce相比,Spark基于內(nèi)存的運(yùn)算要快100倍以上,基于硬盤的運(yùn)算也要快10倍以上。Spark實(shí)現(xiàn)了高效的DAG執(zhí)行引擎,可以通過基于內(nèi)存來高效處理數(shù)據(jù)流。

- Spark對程序員非常友好
- spark支持多種語言(Java、Scala、Python、R、SQL)
- Spark支持Java、Python和Scala的API,還支持超過80種高級算法,使用戶可以快速構(gòu)建不同的應(yīng)用。而且Spark支持交互式的Python和Scala的shell,可以非常方便地在這些shell中使用Spark集群來驗(yàn)證解決問題的方法。
- Spark一站式解決方案
- 五大模塊
- SparkCore (處理離線數(shù)據(jù))
- SparkSQL (主要用來做多維數(shù)據(jù)分析、以及交互式查詢)
- SparkStreaming (實(shí)時(shí)數(shù)據(jù)處理程序)
- Spark MLlib (機(jī)器學(xué)習(xí) 包含非常多算法,相當(dāng)于Spark提供的一個(gè)算法)
- Spark Graphx (圖計(jì)算處理模塊)
在開發(fā)Spark應(yīng)用程序過程中,能夠同時(shí)使用以上所有模塊。以上模塊能夠無縫兼容
Spark提供了統(tǒng)一的解決方案。Spark可以用于批處理、交互式查詢(Spark SQL)、實(shí)時(shí)流處理(Spark Streaming)、機(jī)器學(xué)習(xí)(Spark MLlib)和圖計(jì)算(GraphX)。這些不同類 型的處理都可以在同一個(gè)應(yīng)用中無縫使用。Spark統(tǒng)一的 解決方案非常具有吸引力,畢竟任何公司都想用統(tǒng)一的平臺去處理遇到的問題,減少開發(fā)和維護(hù)的人力成本和部署平臺的物力成本。
- 兼容性
- Spark能夠兼容 (hadoop、hive、hbase、yarn、kafka、flume、redise、關(guān)系型數(shù)據(jù)等)
- Spark可以非常方便地與其他的開源產(chǎn)品進(jìn)行融合。比如,Spark可以使用Hadoop的YARN和Apache Mesos作為它的資源管理和調(diào)度器,器,并且可以處理所有Hadoop支持的數(shù)據(jù),包括HDFS、HBase和Cassandra等。這對于已經(jīng)部署Hadoop集群的用戶特別重要,因?yàn)椴恍枰鋈魏螖?shù)據(jù)遷移就可以使用Spark的強(qiáng)大處理能力。Spark也可以不依賴于第三方的資源管理和調(diào)度器,它實(shí)現(xiàn)了Standalone作為其內(nèi)置的資源管理和調(diào)度框架,這樣進(jìn)一步降低了Spark的使用門檻,使得所有人都可以非常容易地部署和使用Spark。此外,Spark還提供了在EC2上部署Standalone的Spark集群的工具。

|