1. 程式人生 > >Spark程式的端到端執行架構解讀

Spark程式的端到端執行架構解讀

Spark任務提供多層分解的概念,Spark元件將使用者的應用程式分解為內部執行任務並提供執行容器,資源管理為spark元件提供資源管理和排程。

Spark任務:

  1. 應用程式:由一個driver program和多個job構成;
  2. job:由多個stage組成;
  3. stage:對應一個taskset,
  4. taskset:對應一組關聯的相互之間沒有shuffle依賴關係的task組成。
  5. task:任務最小的工作單

Spark元件:

  1. Driver Program (驅動程式) 是Spark 的核心元件
  2. 構建SparkContext(Spark應用的入口,它負責和整個叢集的互動,建立需要的變數,還包含叢集的配置資訊等)
  3. 將使用者提交的job轉換為DAG圖(類似資料處理的流程圖)
  4. 根據策略將DAG圖劃分為多個stage,根據分割槽從而生成一系列tasks
  5. 根據tasks要求向資源管理器申請資源
  6. 提交任務並檢測任務狀態
  7. Executor真正執行task的單元,一個Worker Node上可以有多個Executor

資源管理元件

  1. YARN(通用) Master/Slave結構
  2. Resource Manager(RM)全域性的資源管理器,負責系統的資源管理和分配
  3. Node Manager(NM)每個節點上的資源和工作管理員
  4. ApplicationMaster(AM)每個應用程式都有一個,負責任務的排程和監視,並與RM排程器協商為任務獲取資源。
  5. Standalone(Spark自帶)Master/Slave結構
  6. Master類似於YARN的RM
  7. Worker類似於YARN的NM

Spark的任務執行流程

  1. Driver完成task的解析和生成
  2. Driver向Cluster Manager(叢集資源管理器)申請執行task需要的資源。
  3. 叢集資源管理器為task分配滿足要求的節點,並在節點按照要求建立Executor
  4. 建立的Executor向Driver註冊。
  5. Driver將spark應用程式的程式碼和檔案傳送給分配的executor
  6. executor執行task,執行完之後將結果返回給Driver或者寫入HDFS或其他介質。