1.依賴:寬依賴和窄依賴,rdd具有分割槽
寬依賴:多個子rdd的分割槽依賴同乙個父rdd的分割槽,類似reducebykey;在父rdd的角度,理解為超生;
窄依賴:父rdd的每個分割槽最多被乙個子rdd使用,類似map();在父rdd的角度,理解為獨生;
2.依賴和分割槽
分割槽:rdd分割槽指分布式計算
依賴:劃分階段stage
3.wordcount說明:
1.每個stage階段中rdd的分割槽數決定task任務數,總任務數所有stage的任務數的總和;
2.劃分階段按rdd依賴關係進行區分,可參考rdd的todebugstring
如:val rdd = sc.textfile("file:///d:/測試資料/spark_wordcount.txt")
val rdd1 = rdd.flatmap(x=> x.split(" "))
val rdd2 = rdd1.map(x=>(x,1))
val rdd3 = rdd2.reducebykey((x,y)=>x+y)
println(rdd3.todebugstring);
(2) shuffledrdd[4] at reducebykey at wordcount.scala:11
| file:///d:/測試資料/spark_wordcount.txt hadooprdd[0] at textfile at wordcount.scala:8
說明:相同tree節點的等級為乙個stage
3.rdd的分割槽必須清晰。
1.構建sc物件,[rdd建立]-->[rdd轉換]-->[rdd轉換]-->......-->rdd行動==>job
說明:構建dag,將dag傳送給dagscheduler
2.dagscheduler(dag排程器)作用:
通過血統(rdd的依賴關係:寬和窄)劃分stage,並將stage組合成taskset(任務數)傳送給相對應集群伺服器的taskscheduler
3.taskschedule(任務排程器)作用:
將taskset轉化為task,並根據task排程相應worker的executor
4.exextor執行器:
執行task!!!
Spark執行機制及提交過程
依賴 寬依賴和窄依賴,rdd具有分割槽 寬依賴 多個子rdd的分割槽依賴同乙個父rdd的分割槽,類似reducebykey 在父rdd的角度,理解為超生 窄依賴 父rdd的每個分割槽最多被乙個子rdd使用,類似map 在父rdd的角度,理解為獨生 依賴和分割槽 分割槽 rdd分割槽指分布式計算 依賴...
spark執行機制
client模式提交 driver程序執行在客戶端執行流程 使用者啟動客戶端,之後客戶端執行使用者程式,啟動driver程序。在driver中啟動或例項化dagscheduler等元件。客戶端的driver向master註冊。worker向master註冊,master命令worker啟動exeuc...
spark提交過程分析(standalone模式)
2.1.所有executor都反向註冊到driver上之後,driver結束sparkcontext初始化,會繼續執行我們編寫的 2.2.每執行乙個action就會建立乙個job,job會提交給dagscheduler 2.3 dagscheduler會採用自己的stage劃分演算法將job劃分為多...