spark原始碼梳理 0 說明

2021-08-27 22:35:07 字數 667 閱讀 4798

本系列文章為對spark主要邏輯原始碼學習整理。主要參考《spark技術內幕》一書(簡稱《內幕》)。《內幕》主要以原始碼模組為主線進行橫向解析。本文則致力於由「事件」觸發的縱向邏輯為主線,例如action運算元、transform運算元、集群啟動等,這個角度基本spark執行時的呼叫棧。各主線直接沒有必然的先後聯絡

如無特別說明,本文基於spark 2.10版本原始碼,並且僅討論standalone部署模式

文章內黃底部分表示重要呼叫棧邏輯,綠底部分表示比較重要但屬其他模組邏輯,當前文章不做展開

除原始碼外,主要內容在注釋中說明。包括對原始碼注釋的翻譯以及個人說明

例如// cleanedfunc是乙個閉包的函式,用到asm來解析class。大致是去掉對閉包無影響的父類、子類、transient屬性等,確認閉包可序列化。後續文章再深入分析這個方法。最終getiteratorsize函式傳到runjob裡

def runjob[t, u: classtag]( rdd: rdd[t], func: iterator[t] => u, partitions: seq[int]): array[u] = {

val cleanedfunc = clean(func)

runjob(rdd, (ctx: taskcontext, it: iterator[t]) => cleanedfunc(it), partitions)

Spark原始碼分析 Spark整體架構

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

Spark (原始碼) 總結 雜

1.spark submit 指令碼,在指令碼裡呼叫了org.apache.spark.deloy.sparksubmit 類 2.sparksubmit.scala main方法 override def main args array string unit private def submit...

spark原始碼之TaskScheduler解讀

1 spark任務的真正的執行時由action運算元進行乙個觸發,最終呼叫sc.runjob方法,在driver端會初始化2個重要的組建dagscheduler和taskscheduler,a taskscheduler的主要職責 a.1負責將dagscheduler傳送過來的的taskset放入到...