spark概述

 

目錄

1 spark 概述

1.1 Spark產生的背景

1.2 什麼是Spark

1.3 Spark歷史

1.4 爲什麼要用Spark

1.5 Spark 對比 Hadoop

1.6 Spark 對比 MapReduce

2 spark生態

3 Spark應用場景

 


 1 spark 概述

1.1 Spark產生的背景

基於mapreduce的一些缺點,列如只有map和reduce兩種操作,延遲高、編寫程序複雜、中間結果多次落地到磁盤,等原因,spark繼承mapreduce並且對其進行了改良的形成一種新的計算框架。它的優點是使用內存計算,計算快,生態圈完善。包括spark sql spark core spark streaming 機器學習 圖計算等。spark 相對於mapreduce會的招式多,除了map reduce以外。有兩大類型的算子,分爲action 算子 和轉換類型的算子。action算子典型的有count、reduceBykey、cllocet等。轉換算子典型的有map、key、value 、filter等。spark streaming 可以實現準實時計算。spark是有scala有的,代碼量相對於java少很多。

 

1.2 什麼是Spark

        Spark,是一種通用的大數據計算框架,正如傳統大數據技術Hadoop的MapReduce、Hive引擎,以及Storm流式實時計算引擎等。

        Spark是加州大學伯克利分校AMP實驗室(Algorithms, Machines, and People Lab)開發的通用內存並行計算框架,用於構建大型的、低延遲的數據分析應用程序。

        Spark使用強大的Scala語言開發,它還提供了對Scala、Python、Java(支持Java 8)和R語言的支持。

        Apache頂級項目,項目主頁:http://spark.apache.org

1.3 Spark歷史

2009年由Berkeley's AMPLab開始編寫最初的源代碼

2010年開放源代碼

2013年6月進入Apache孵化器項目

2014年2月成爲Apache的頂級項目(8個月時間)

2014年5月底Spark1.0.0發佈,打破Hadoop保持的基準排序紀錄

2014年12月Spark1.2.0發佈

2015年11月Spark1.5.2發佈

2016年1月Spark1.6發佈

2016年12月Spark2.1發佈

1.4 爲什麼要用Spark

運行速度快:

        使用DAG(全稱 Directed Acyclic Graph, 中文爲:有向無環圖)執行引擎以支持循環數據流與內存計算(當然也有部分計算基於磁盤,比如shuffle);

易用性好:

        支持使用Scala、Java、Python和R語言進行編程,可以通過Spark Shell進行交互式編程 ;

通用性強:

        Spark提供了完整而強大的工具,包括SQL查詢、流式計算、機器學習和圖算法組件;

隨處運行:

        可運行於獨立的集羣模式中,可運行於Hadoop中,也可運行於Amazon EC2等雲環境中,並且可以訪問HDFS、Cassandra、HBase、Hive等多種數據源;

1.5 Spark 對比 Hadoop

Hadoop:

        可以用普通硬件搭建Hadoop集羣,用於解決存儲和計算問題;

            1)解決存儲:HDFS

            2)解決計算:MapReduce

            3)資源管理:YARN

Spark:

        Spark是在借鑑了MapReduce之上發展而來的,繼承了其分佈式並行計算的優點並改進了MapReduce明顯的缺陷;

        Spark不能代替Hadoop,但可能代替MapReduce。

 

現狀:

        Spark主要用於大數據的計算,而Hadoop以後主要用於大數據的存儲(HDFS),以及資源調度(Yarn)。Spark+Hadoop的組合,是未來大據領域最熱門的組合,也是最有前景的組合! 當然spark也有自己的集羣模式。

 1.6 Spark 對比 MapReduce

 1)spark可以把多次使用的數據放到內存中

 2)spark 會的算法多,方便處理數據

3)spark大部分算子都沒有shuffle階段,不會頻繁落地磁盤,降低磁盤IO;同時這些算子可以不需要排序,省略排序的步驟。

4)在代碼編寫方面,不需要寫那麼複雜的MapReduce邏輯。

2 spark生態

 

spark core:

        實現了spark的基本功能、包括任務調度、內存管理、錯誤恢復與存儲系統交互等模塊。spark core中還包含了對彈性分佈式數據集(resileent distributed dataset)的定義;

        rdd 彈性分佈式數據集,是個抽象的概念,rdd是隻讀的,能通過rdd 的轉換算子產生rdd。

        rdd可以理解爲是hdfs文件的數據。hdfs文件輸入分片爲2,相當於spark rdd 有兩個分區。每個rdd的分區操作,其實就是對對應hdfs文件數據的操作。

spark sql:

        是spark用來操作結構化數據的程序,通過SPARK SQL,我們可以使用SQL或者HIVE(HQL)來查詢數據,支持多種數據源,比如HIVE表就是JSON等,除了提供SQL查詢接口,還支持將SQL和傳統的RDD結合,開發者可以在一個應用中同時使用SQL和編程的方式(API)進行數據的查詢分析,SPARK SQL是在1.0中被引入的;

Spark Streaming:

        是Spark提供的對實時數據進行流式計算的組件,比如網頁服務器日誌,或者是消息隊列都是數據流。

MLLib:

        是Spark中提供常見的機器學習功能的程序庫,包括很多機器學習算法,比如分類、迴歸、聚類、協同過濾等。

GraphX:

        是用於圖計算的比如社交網絡的朋友關係圖。

3 Spark應用場景

        Yahoo將Spark用在Audience Expansion中的應用,進行點擊預測和及時查詢等;

        淘寶技術團隊使用了Spark來解決多次迭代的機器學習算法、高計算複雜度的算法等。應用於內容推薦、社區發現等;

        騰訊大數據精準推薦藉助Spark快速迭代的優勢,實現了在“數據實時採集、算法實時訓練、系統實時預測”的全流程實時並行高維算法,最終成功應用於廣點通pCTR投放系統上;

        優酷土豆將Spark應用於視頻推薦(圖計算)、廣告業務,主要實現機器學習、圖計算等迭代計算;

        目前大數據在互聯網公司主要應用在廣告、報表、推薦系統等業務上。在廣告業務方面需要大數據做應用分析、效果分析、定向優化等,在推薦系統方面則需要大數據優化相關排名、個性化推薦以及熱點點擊分析等。這些應用場景的普遍特點是計算量大、效率要求高、時間性要求高的。

4 Spark環境部署

主要運行方式

Local  : 單機

Standalone : spark集羣

On YARN:spark 運行在yarn,yarn做資源管理

On Mesos:Mesos 做資源管理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章