spark四種運行模式

  1. spark的核心組件
    1.1Driver
    Spark 驅動器節點,用於執行 Spark 任務中的 main 方法,負責實際代碼的執行
    工作。Driver 在 Spark 作業執行時主要負責:
    1.1.1) 將用戶查詢轉化爲任務;
    1.1.2)在 Executor 之間調度任務;
    1.1.3)跟蹤 Executor 的執行情況;
    1.1.4)通過 UI 展示查詢運行情況;
    1.2Executor
    Spark Executor 節點是一個 JVM 進程,負責在 Spark 作業中運行具體任務,任
    務彼此之間相互獨立。Spark 應用啓動時,Executor 節點被同時啓動,並且始終伴
    隨着整個 Spark 應用的生命週期而存在。如果有 Executor 節點發生了故障或崩潰,
    Spark 應用也可以繼續執行,會將出錯節點上的任務調度到其他 Executor 節點上繼
    續運行。Executor 有兩個核心功能:
    1.2.1 負責運行組成 Spark 應用的任務,並將結果返回給驅動器進程;
    1.2.2 它們通過自身的塊管理器(Block Manager)爲用戶程序中要求緩存的 RDD
    提供內存式存儲。RDD 是直接緩存在 Executor 進程內的,因此任務可以在運行時
    充分利用緩存數據加速運算。
    2. spark通用的運行模式

在這裏插入圖片描述
Spark 通用運行流程,不論 Spark 以何種模式進行部署,任務提交後,都會先啓動 Driver 進程,隨後 Driver 進程向集羣管理器註冊應用程序,之後集羣管理器根據此任務的配置文件分配 Executor 並啓動,當 Driver 所需的資源全部滿足後,Driver 開始執行 main 函數,Spark 查詢爲懶執行,當執行到 action 算子時開始反向推算,根據寬依賴進行 stage 的劃分,隨後每一個 stage 對應一個 taskset,taskset 中有多個 task,根據本地化原則,task 會被分發到指定的 Executor 去執行,在任務執行的過程中,Executor 也會不斷與 Driver 進行通信,報告任務運行情況。

3. 四種運行模式
spark支持四種運行模式其中一種是local模式另外三種是Standalone,Mesos,yarn集羣模式。
其中 local模式適合本地測試用; Standalone spark自帶的集羣模式。需要構建一個由Master+Slave構成的Spark集羣,Spark運行在集羣中。; Spark客戶端直接連接Mesos,不需要額外構建Spark集羣,國內用的少。;Spark客戶端直接連接Yarn,不需要額外構建Spark集羣。國內生產上用的多。而集羣模式又根據Driver運行在哪又分爲客Client模式和Cluster模式。用戶在提交任務給 Spark 處理時,以下兩個參數共同決定了 Spark 的運行方式。
· –master MASTER_URL :決定了 Spark 任務提交給哪種集羣處理。
· –deploy-mode DEPLOY_MODE:決定了 Driver 的運行方式,可選值爲 Client或者 Cluster。
3.1 Spark運行模式配置

Master URL Meaning
local 在本地運行,只有一個工作進程,無並行計算能力。
local[K] 在本地運行,有 K 個工作進程,通常設置 K 爲機器的CPU 核心數量。
local[*] 在本地運行,工作進程數量等於機器的 CPU 核心數量。
spark://HOST:PORT 以 Standalone 模式運行,這是 Spark 自身提供的集羣運行模式,默認端口號: 7077。
mesos-client ./spark-shell --master mesos://host:port --deploy-mode client
mesos-cluster ./spark-shell --master mesos://host:port --deploy-mode cluster
yarn-client 在 Yarn 集羣上運行,Driver 進程在本地,Work 進程在 Yarn 集羣上。./spark-shell --master yarn --deploy-mode client。Yarn 集羣地址必須在HADOOP_CONF_DIRorYARN_CONF_DIR 變量裏定義
yarn-cluster 在 Yarn 集羣上運行,Driver 和Work 進程都在 Yarn 集羣上。./spark-shell --master yarn --deploy-mode cluster。Yarn 集羣地址必須在HADOOP_CONF_DIRorYARN_CONF_DIR 變量裏定義

3.2 Standalone模式運行機制

Standalone 集羣有四個重要組成部分,分別是:

  1. Driver:是一個進程,我們編寫的 Spark 應用程序就運行在 Driver 上,由Driver 進程執行;
  2. Master:是一個進程,主要負責資源的調度和分配,並進行集羣的監控等職責;
  3. Worker:是一個進程,一個 Worker 運行在集羣中的一臺服務器上,主要負責兩個職責,一個是用自己的內存存儲 RDD 的某個或某些 partition;另一個是啓動其他進程和線程(Executor),對 RDD 上的 partition 進行並行的處理和計算。
  4. Executor:是一個進程,一個 Worker 上可以運行多個 Executor,Executor通過啓動多個線程(task)來執行對 RDD 的 partition 進行並行計算,也就是執行我們對 RDD 定義的例如 map、flatMap、reduce 等算子操作。
    Standalone的client模式
    在這裏插入圖片描述
    解析:
    在 Standalone Client 模式下,Driver 在任務提交的本地機器上運行,Driver 啓動後向 Master 註冊應用程序,Master 根據 submit 腳本的資源需求找到內部資源至少可以啓動一個 Executor 的所有 Worker,然後在這些 Worker 之間分配 Executor,Worker上的 Executor 啓動後會向 Driver 反向註冊,所有的 Executor 註冊完成後,Driver 開始執行 main 函數,之後執行到 Action 算子時,開始劃分 stage,每個 stage 生成對應的 taskSet,之後將 task 分發到各個 Executor 上執行。
    Standalone的cluster模式。
    在這裏插入圖片描述
    解析
    在 Standalone Cluster 模式下,任務提交後,Master 會找到一個 Worker 啓動 Driver進程, Driver 啓動後向 Master 註冊應用程序,Master 根據 submit 腳本的資源需求找到內部資源至少可以啓動一個 Executor 的所有 Worker,然後在這些 Worker 之間分配 Executor,Worker 上的 Executor 啓動後會向 Driver 反向註冊,所有的 Executor註冊完成後,Driver 開始執行 main 函數,之後執行到 Action 算子時,開始劃分 stage,每個 stage 生成對應的 taskSet,之後將 task 分發到各個 Executor 上執行。注意,Standalone 的兩種模式下(client/Cluster),Master 在接到 Driver 註冊
    Spark 應用程序的請求後,會獲取其所管理的剩餘資源能夠啓動一個 Executor 的所有 Worker,然後在這些 Worker 之間分發 Executor,此時的分發只考慮 Worker 上的資源是否足夠使用,直到當前應用程序所需的所有 Executor 都分配完畢,Executor反向註冊完畢後,Driver 開始執行 main 程序。
    3.3Yarn運行模式
    Yarn 的clinet運行模式
    在這裏插入圖片描述
    解析:
    在 YARN Client 模式下,Driver 在任務提交的本地機器上運行,Driver 啓動後會ResourceManager 通訊申請啓動 ApplicationMaster,隨後 ResourceManager分 配 container , 在 合 適 的NodeManager 上 啓 動 ApplicationMaster , 此 時 的ApplicationMaster 的功能相當於一個 ExecutorLaucher,只負責向 ResourceManager申請 Executor 內存。ResourceManager 接到 ApplicationMaster 的資源申請後會分配 container,然後ApplicationMaster 在資源分配指定的 NodeManager 上啓動 Executor 進程,Executor進程啓動後會向 Driver 反向註冊,Executor 全部註冊完成後 Driver 開始執行 main函數,之後執行到 Action 算子時,觸發一個 job,並根據寬依賴開始劃分 stage,每個 stage 生成對應的 taskSet,之後將 task 分發到各個 Executor 上執行。
    Yarn cluster運行模式
    在這裏插入圖片描述
    解析:
    在 YARN Cluster 模式下,任務提交後會和 ResourceManager 通訊申請啓動ApplicationMaster,隨後 ResourceManager 分配 container,在合適的 NodeManager上啓動 ApplicationMaster,此時的 ApplicationMaster 就是 Driver。Driver 啓動後向 ResourceManager 申請 Executor 內存,ResourceManager 接到ApplicationMaster 的資源申請後會分配 container,然後在合適的 NodeManager 上啓動 Executor 進程,Executor 進程啓動後會向 Driver 反向註冊,Executor 全部註冊完成後 Driver 開始執行 main 函數,之後執行到 Action 算子時,觸發一個 job,並根據寬依賴開始劃分 stage,每個 stage 生成對應的 taskSet,之後將 task 分發到各個Executor 上執行。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章