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-client:Driver程式執行在客戶端,適用於互動、除錯,希望立即看到app的輸出
yarn-cluster:Driver程式執行在由RM(ResourceManager)啟動的AP(APPMaster)適用於生產環境。