1. 程式人生 > >Spark 執行機制

Spark 執行機制

1. Spark執行基本流程

這裡寫圖片描述

  1. 構建Spark Application的執行環境(啟動SparkContext),SparkContext向資源管理器(可以是Standalone、Mesos或YARN)註冊並申請執行Executor資源;
  2. 資源管理器分配Executor資源並啟動Executor,Executor執行情況將隨著心跳傳送到資源管理器上;
  3. SparkContext構建成DAG圖,將DAG圖分解成Stage,並把Taskset傳送給Task Scheduler。Executor向SparkContext申請Task,Task Scheduler將Task發放給Executor運行同時SparkContext將應用程式程式碼發放給Executor。
  4. Task在Executor上執行,執行完畢釋放所有資源

2. Spark執行架構特點

  • 每個Application獲取專屬的executor程序,該程序在Application期間一直駐留,並以多執行緒方式執行tasks。
  • Spark任務與資源管理器無關,只要能夠獲取executor程序,並能保持相互通訊就可以。
  • 提交SparkContext的Client應該靠近Worker節點(執行Executor的節點),最好是在同一個Rack裡,因為Spark程式執行過程中SparkContext和Executor之間有大量的資訊交換;如果想在遠端叢集中執行,最好使用RPC將SparkContext提交給叢集,不要遠離Worker執行SparkContext。
  • Task採用了資料本地性和推測執行的優化機制。

Spark 任務排程

1. 任務排程流程圖

這裡寫圖片描述

各個RDD之間存在著依賴關係,這些依賴關係就形成有向無環圖DAG,DAGScheduler對這些依賴關係形成的DAG進行Stage劃分,劃分的規則很簡單,從後往前回溯,遇到窄依賴加入本stage,遇見寬依賴進行Stage切分。完成了Stage的劃分。DAGScheduler基於每個Stage生成TaskSet,並將TaskSet提交給TaskScheduler。TaskScheduler 負責具體的task排程,最後在Worker節點上啟動task。

2. DAGScheduler

  • DAGScheduler對DAG有向無環圖進行Stage劃分。
  • 記錄哪個RDD或者 Stage 輸出被物化(快取),通常在一個複雜的shuffle之後,通常物化一下(cache、persist),方便之後的計算。
  • 重新提交shuffle輸出丟失的stage(stage內部計算出錯)給TaskScheduler
  • 將 Taskset 傳給底層排程器 
    • – spark-cluster TaskScheduler
    • – yarn-cluster YarnClusterScheduler
    • – yarn-client YarnClientClusterScheduler

3. TaskScheduler

  • 為每一個TaskSet構建一個TaskSetManager 例項管理這個TaskSet 的生命週期
  • 資料本地性決定每個Task最佳位置
  • 提交 taskset( 一組task) 到叢集執行並監控
  • 推測執行,碰到計算緩慢任務需要放到別的節點上重試
  • 重新提交Shuffle輸出丟失的Stage給DAGScheduler

相關推薦

Spark學習筆記4——spark執行機制

Spark架構及執行機制 Spark執行架構包括叢集資源管理器(Cluster Manager)、執行作業任務的工作節點(Worker Node)、每個應用的任務控制節點(Driver)和每個工作節點上負責具體任務的執行程序(Executor)。其中,叢集資源管理器可以是S

Spark 執行機制

1. Spark執行基本流程 構建Spark Application的執行環境(啟動SparkContext),SparkContext向資源管理器(可以是Standalone、Mesos或YARN)註冊並申請執行Executor資源; 資源管理器分配Executor

理解Spark執行機制

Spark生態系統目前已經非常成熟了,有很多型別的任務都可以使用spark完成,我們先看下spark生態系統的組成: spark的核心主要由3個模組組成: (1)spark core 是spark的最底層的程式設計實現,定義了許多的函式及方法,是所有spark元件

第42課: Spark Broadcast內幕解密:Broadcast執行機制徹底解密、Broadcast原始碼解析、Broadcast最佳實踐

第42課:  Spark Broadcast內幕解密:Broadcast執行機制徹底解密、Broadcast原始碼解析、Broadcast最佳實踐Broadcast在機器學習、圖計算、構建日常的各種演算法中到處可見。 Broadcast就是將資料從一個節點發送到其它的節點上;

spark基礎之排程器執行機制簡述

一 概述 驅動程式在啟動的時候,首先會初始化SparkContext,初始化SparkContext的時候,就會建立DAGScheduler、TaskScheduler、SchedulerBacken

Spark工作機制詳解】 執行機制

Spark主要包括  排程與任務分配、I/O模組、通訊控制模組、容錯模組  、 Shuffle模組。 Spark 按照   ①應用  application  ②作業 job   ③ stage  ④ task   四個層次進行排程,採用經典的FIFO和FAIR等排程演

spark:架構+執行機制的一些總結--50

Hadoop中包含計算框架MapReduce和分散式檔案系統HDFS,spark是一個計算框架 // 中間結果:spark儲存到記憶體、Hadoop儲存到磁碟,spark將執行模型抽象為通用的有向無環圖通用計劃(DAG) //////////////////////////

Spark 中 RDD的執行機制

1. RDD 的設計與執行原理 Spark 的核心是建立在統一的抽象 RDD 之上,基於 RDD 的轉換和行動操作使得 Spark 的各個元件可以無縫進行整合,從而在同一個應用程式中完成大資料計算任務。 在實際應用中,存在許多迭代式演算法和互動式資料探勘工具,這些應用場景的共同之處在於不同計算階段之間會重用中

深入理解JVM_java代碼的執行機制01

功能 存在 oot 對象實例 符號 token 類型 格式 找對象 本章學習重點: 1、Jvm: 如何將java代碼編譯為class文件。 如何裝載class文件及如何執行class文件。 jvm如何進行內存分配和回收。 jvm多線程

【JS】JavaScript引擎的內部執行機制

under scrip str tro blog rip 回調函數 ron span  近期在復習JavaScript,看到setTimeout函數時。想起曾經剛學時,在一本書上看過setTimeout()裏的回調函數執行的間隔時間

【java】之java代碼的執行機制

() alt 分享 str clas not roc 成員 輸入 要在JVM中執行java代碼必須要編譯為class文件,JDK是如何將Java代碼編譯為class文件,這種機制通常被稱為Java源碼編譯機制。 1、JVM定義了class文件的格式,但是並沒有定義如何將ja

python裝飾器執行機制

abc print 前沿 spl ini self. color ret instance 前沿: 首先是看到了單例模型,想不明白 outer中的參數 為什麽能像 global的參數 一樣屹立不倒。 #單例模型 def single_model(cls): in

徹底弄懂 JavaScript 執行機制

函數 大名 定時 意思 技術 渲染 文字 根據 java 本文的目的就是要保證你徹底弄懂javascript的執行機制,如果讀完本文還不懂,可以揍我。 不論你是javascript新手還是老鳥,不論是面試求職,還是日常開發工作,我們經常會遇到這樣的情況:給定的幾行

js --- 執行機制

循環 gpo 可執行 pad loop 同步任務 16px 觸發 pos 1. JS為什麽是單線程的?  JS最初被設計用在瀏覽器中,那麽想象一下,如果瀏覽器中的JS是多線程的。 那麽現在有2個進程,process1 process2,由於是多進程的JS,所以他們對同一個

[轉]JS 引擎的執行機制

wan queue 多線程 .html 單擊事件 語句 eve resolve title ------------------------------------------------------ JS 引擎的執行機制 關於JS引擎的執行機制,首先牢記2點:

js為什麽是單線程的?10分鐘了解js引擎的執行機制

容易 等於 bsp -m 深入理解 block 順序 dom 依次 深入理解JS引擎的執行機制 1.JS為什麽是單線程的? 為什麽需要異步? 單線程又是如何實現異步的呢? 2.JS中的event loop(1) 3.JS中的event loop(2) 4.說說s

js執行機制

分發 sleep 代碼執行 過程 rom spa set 是否 引擎 1. 關於javascript js是一門單線程語言,一切js版的‘多線程’都是用單線程模擬起來的。 2. js事件循環 將任務分為2類:同步任務、異步任務 同步任務進入主線程,異步任務

深入理解Dalvik虛擬機- 解釋器的執行機制

util dlink stat counter before expose 加鎖 enter 機制 Dalvik的指令運行是解釋器+JIT的方式,解釋器就

Spark執行流程(轉)

dep 相關 集群管理 十個 多個 運行原理 啟動 因此 分享圖片   原文地址:http://blog.jobbole.com/102645/    我們使用spark-submit提交一個Spark作業之後,這個作業就會啟動一個對應的Driver進程。

淺析JS異步執行機制

一個隊列 http請求 調度 等待 __name__ 服務端 nco sta req 前言 JS異步執行機制具有非常重要的地位,尤其體現在回調函數和事件等方面。本文將針對JS異步執行機制進行一個簡單的分析。 從一份代碼講起 下面是兩個經典的JS定時執行函數,這兩個函數的區別