spark原始碼解析之一 整體概述

2021-10-19 18:11:23 字數 1970 閱讀 8356

任務提交後,指令碼會啟動使用者程式;

初始化sparkcontext完成,使用者程式暫停執行,啟動driver程式;

driver向集群管理器註冊應用程式;

集群管理器根據此任務的配置檔案分配executor並啟動;

driver獲取所需資源的同時,driver繼續執行使用者main函式,spark查詢為懶執行,當執行到action運算元時開始反向推算,根據寬依賴進行stage的劃分,隨後每乙個stage對應乙個taskset,taskset中有多個task;

根據本地化原則,task會被分發到指定的executor去執行,在任務執行的過程中,executor也會不斷與driver進行通訊,報告任務運**況。

某一功能只有乙個角色,從main方法同步呼叫,一路到底,不同類或者邏輯之間的關係很容易梳理,計算邏輯和資料形影不離,複雜度是線性的,檢視和理解起來相對簡單。

是乙個分布式計算框架,有管理者和執行者等不同的角色,不同的執行者可能分布在不同的節點或者機器上,乙個節點同時可以啟動多個執行者,不角色之間的關係錯綜複雜,複雜度是網狀的,理解起來相對困難;spark處理的資料具有量大的特性,其計算思想也比較詭異,遵循移動邏輯不移動資料的原則,將邏輯打包分發到資料所在節點進行計算;鑑於其比較複雜,在檢視源時,稍不留神忽略一兩行**可能就是很重要的一環,對整體邏輯的把控就形不成閉環。

spark原始碼中大部分都是scala語言,文章提到的方法表示方法或者函式。

跟蹤原始碼需要掌握的常用快捷鍵如下:

根據類或者全類名查詢class或者object:雙擊shift或者ctrl+n

根據名稱查詢類中方法:ctrl+f12,直接輸入要查詢的方法名稱

檢視某個方法的實現類:ctrl+h

檢視某個方法被**呼叫:ctrl+f7

回退:ctrl+alt+左箭頭

前進:ctrl+alt+右箭頭

ctrl+f:不必說了

ctrl+shift+r:全域性查詢某個字元

ctrl+f4關閉當前視窗

由於對spark理解有限,中間難免會有錯誤,還請各位指正,共同討論學習。後續隨著對spark理解的深入,會繼續修改文章。

spark執行流程分為資源環境準備和任務提交執行兩個步驟,兩個步驟交叉進行,當前以任務提交為主線進行原始碼分析。

資源環境準備線,可以參考spark原始碼解析之

二、計算資源準備

關於源**的前期準備可以參考:spark原始碼解析之

一、整體概述

Spark原始碼分析 Spark整體架構

術語 描述使用者編寫的程式。driver端的sparkcontext sparkconf和執行在executors上使用者編寫的業務邏輯 即map reduce reducebykey等 driver 執行使用者編寫應用程式的main 方法並建立sparkcontext worker 具體執行應用程...

OkHttp 3 7原始碼分析(一) 整體架構

okhttp3.7原始碼分析文章列表如下 okhttp是乙個處理網路請求的開源專案,是android端最火熱的輕量級框架,由移動支付square公司貢獻用於替代httpurlconnection和apache httpclient。隨著okhttp的不斷成熟,越來越多的android開發者使用okh...

Lua原始碼解析之一 lexical

我們知道,任何高階一點的編譯器,在解析源 時,都需要進行詞法分析。而詞法分析的過程就是先識別token的乙個過程,總體來說,lua裡面的token大致分為 1.數字和字串 2.特殊字元 包括運算子和括號 對於每一類token lua都有唯一的id與之對應,此id用int來表示,對於第2種型別,直接用...