Spark相關知識

基本概念:算法

Spark做爲新一代大數據計算引擎,由於內存計算的特性,具備比hadoop更快的計算速度。是一個分佈式計算框架,旨在簡化運行於計算機集羣上的並行程序的編寫。
RDD:是spark核心數據處理模型,彈性分佈式數據集(Resilient Distributed Dataset)是分佈式內存的一個抽象概念,提供了一個高度受限的共享內存模型。一個RDD包含多個分區(Partition)。
DAG:有向無環圖(Directed Acyclic Graph)反應RDD之間的依賴關係。
Executor:運行在工做節點(WorkNode)的一個進程,負責運行Task。
Application:用戶編寫的Spark程序。
Task:運行在Executor上的工做單元。
Job:一個Job包含多個RDD及做用於相應RDD上的各類操做。
Stage:是Job的基本調度單位,一個Job會分爲多組Task,每組Task被稱爲Stage,或者也被稱爲TaskSet,表明了一組由關聯的、相互之間沒有shuffle依賴關係的任務組成的任務集。
如下是Spark中各類概念之間的相互關係:

編程

 

 

 

Spark組件:

框架

Spark主要包含了Spark Core、Spark SQL、Spark Streaming、MLLib和GraphX 等組件 。
Spark Core:Spark Core包含Spark的基本功能,如內存計算、任務調度、部署模式、故障恢復、存儲管理等;
Spark SQL:Spark SQL容許開發人員直接處理RDD(彈性分佈式數據集),同時也可查詢Hive、HBase等外部數據源。Spark SQL的一個重要特色是其可以統一處理關係表和RDD,使得開發人員能夠輕鬆地使用SQL命令進行查詢,並進行更復雜的數據分析;
Spark Streaming:Spark Streaming支持高吞吐量、可容錯處理的實時流數據處理,其核心思路是將流式計算分解成一系列短小的批處理做業。
Spark Streaming支持多種數據輸入源,如Kafka、Flume和TCP套接字等;
4. MLlib(機器學習):MLlib提供了經常使用機器學習算法的實現,包括聚類、分類、迴歸、協同過濾等,下降了機器學習的門檻,開發人員只要具有必定的理論知識就能進行機器學習的工做;
5. GraphX(圖計算):GraphX是Spark中用於圖計算的API,可認爲是Pregel在Spark上的重寫及優化,Graphx性能良好,擁有豐富的功能和運算符,能在海量數據上自如地運行復雜的圖算法。
右側爲spark組件:機器學習

 

 

 

 

技術特徵:
1.運行速度快:
           使用先進的DAG(Directed Acyclic Graph,有向無環圖)執行引擎,以支持循環數據流與內存計算,基於內存的執行速度可比Hadoop MapReduce快上百倍,基於磁盤的執行速度也能快十倍;
2.容易使用:
          Spark支持使用Scala、Java、Python和R語言進行編程,簡潔的API設計有助於用戶輕鬆構建並行程序,而且能夠經過Spark Shell進行交互式編程;

3.通用性:
           Spark提供了完整而強大的技術棧,包括SQL查詢、流式計算、機器學習和圖算法組件,這些組件能夠無縫整合在同一個應用中,足以應對複雜的計算;
4.運行模式多樣:
         Spark可運行於獨立的集羣模式中,或者運行於Hadoop中,也可運行於Amazon EC2等雲環境中,而且能夠訪問HDFS、Cassandra、HBase、Hive等多種數據源。



分佈式

 

運行框架:oop

 

 

應用場景:
1.    應用場景:
       Spark是基於內存的迭代計算框架,適用於須要屢次操做特定數據集的應用場合。須要反覆操做的次數越多,所需讀取的數據量越大,受益越大,數據量小可是計算密集度較大的場合,受益就相對較小。適用場景:複雜的批量處理(Batch Data Processing),偏重點在於處理海量數據的能力,至於處理速度可忍受,一般的時間多是在數十分鐘到數小時;基於歷史數據的交互式查詢(Interactive Query),一般的時間在數十秒到數十分鐘之間;基於實時數據流的數據處理(Streaming Data Processing),一般在數百毫秒到數秒之間總的來講Spark的適用面比較普遍且比較通用。
       例如:騰訊大數據使用了Spark平臺來支持挖掘分析類計算、交互式實時查詢計算以及容許偏差範圍的快速查詢計算,騰訊大數據精準推薦藉助Spark快速迭代的優點,圍繞「數據+算法+系統」技術方案,實現了在「數據實時採集、算法實時訓練、系統實時預測」的全流程實時並行高維算法,支持天天上百億的請求量。


性能

Spark與hadoop比較:學習

 Spark是給予map reduce 算法實現的分佈式計算,擁有Hadoop MapReduce所具備的有點,但不一樣與MaoReduce的是Job中間輸出和結果能夠保存在內存中,從而不用在讀寫HDFS,所以Spark能更好的適用於數據挖掘與機器學習等須要迭代的map reduce的算法。
1.    Spark比Hadoop更快:
        Spark 與Hadoop的MapReduce相比,Spark基於內存的運算要快100倍以上;而基於磁盤的運算也要快10倍以上。Spark實現了高效的DAG執行引擎,能夠經過基於內存來高效地處理數據流.Spark的中間數據放到內存中,對於迭代運算效率比較高。 (Hadoop  MapReduce是分步對數據進行處理的: 從集羣中讀取數據,進行一次處理,將結果寫到集羣,從集羣中讀取更新後的數據,進行下一次的處理,將結果寫到集羣。spark從集羣中讀取數據,完成全部必須的分析處理,將結果寫回集羣,完成。)
2.    Spark比Hadoop更通用:
Spark提供了統一的解決方案。Spark能夠用於批處理、交互式查詢(通用Spark SQL)、實時流處理(經過Spark Streaming)、機器學習(經過Spark MLlib)和圖計算(經過Spark GraphX)。這些不一樣類型的處理均可以在同一應用中無縫使用。Spark統一的解決方案很是具備吸引力,畢竟任何公司都想用統一的平臺處理問題,減小開發和維護的人力成本和部署平臺的物理成本。固然還有,做爲統一的解決方案,Spark並無以犧牲性能爲代價。相反,在性能方面Spark具備巨大優點。
3. Spark與Hadoop的結合:
       Hadoop除了提供爲你們所共識的HDFS分佈式數據存儲功能以外,還提供了叫作MapReduce的數據處理功能。因此這裏徹底能夠拋開Spark,使用Hadoop自身的MapReduce來完成數據的處理。相反,Spark也不是非要依附在Hadoop身上才能生存,畢竟它沒有提供文件管理系統,因此,相反,Spark也不是非要依附在Hadoop身上才能生存。畢竟它沒有提供文件管理系統,因此,它必須和其餘的分佈式文件系統進行集成才能運做。這裏咱們能夠選擇Hadoop的HDFS,也能夠選擇其餘的基於雲的數據系統平臺。但Spark默認來講仍是被用在Hadoop上面的,它們的結合是最好的。


大數據

相關文章
相關標籤/搜索