1. 程式人生 > 實用技巧 >Spark入門

Spark入門

一、簡介

  Spark是一種基於記憶體的快速、通用、可擴充套件的大資料分析引擎。

   

 Spark Core:實現了Spark的基本功能,包含任務排程、記憶體管理、錯誤恢復與記憶體系統互動等模組。SparkCore中還包含了對彈性分散式資料集(ResilientDistributeDataSet,RDD)的API定義。

  SparkSQL:是Spark用來操作結構化資料的程式包。通過SparkSQL,我們可以使用SQL或者Hive(HQL)來查詢資料。Spark SQL支援多種資料來源,比如Hive表、Parquet以及JSON等。

  SparkStreaming:是Spark提供的對實時資料進行流式計算的元件。提供了用來操作資料流的API,並且與SparkCore的RDDAPI高度對應。

  SparkMLlib:提供常見的機器學習(ML)功能的程式庫。包括分類、迴歸、聚類、協同過濾等,還提供了模型評估資料匯入等我親愛的的支援功能。

二、Spark的重要角色

1,Driver(驅動器)

  Spark的驅動器是執行開發程式中的main方法的程序。它負責開發人員編寫的用來建立SparkContext、建立RDD,以及進行RDD的轉化操作和行動操作程式碼的執行。主要負責:

1)把使用者程式轉為作業(JOB)
2)跟蹤Executor的執行狀況
3)為執行器節點排程任務
4)UI展示應用執行狀況

2,Executor(執行器)

  Spark Executor是一個工作程序,負責在Spark作業中執行任務,任務間相互獨立。Spark應用啟動時,Executor節點被同時啟動,並且始終伴隨著整個Spark應用的生命週期而存在。如果有Executor節點發生故障或崩潰,Spark應用也可以繼續執行,會將出錯節點上的任務排程到其他Executor節點上繼續執行。主要負責:

1)負責執行組成 Spark 應用的任務,並將結果返回給驅動器程序;
2)通過自身的塊管理器(Block Manager)為使用者程式中要求快取的RDD提供記憶體式儲存。RDD是直接快取在Executor程序內的,因此任務可以在執行時充分利用快取資料加速運算。

三、Yarn部署流程

  Spark客戶端直接連線Yarn,不需要額外構建Spark叢集。有yarn-client和yarn-cluster兩種模式,主要區別在於:Driver程式的執行節點。

  yarn-clientDriver程式執行在客戶端,適用於互動、除錯,希望立即看到app的輸出

  yarn-cluster:Driver程式執行在由RM(ResourceManager)啟動的AP(APPMaster)適用於生產環境。