SPARK:作业基本运行原理
Spark作業基本運行原理:
我們使用spark-submit提交一個spark作業之后,這個作業就會啟動一個對應的Driver進程。根據你使用的部署模式(deploy-mode)不同:
1)Driver進程可能在本地啟動,也可能在集群中的某個工作節點上啟動;
2)Driver進程本身會根據我們設置的參數,占有一定數量的內存和CPU core。
而Driver進程要做的第一件事情,就是向集群管理器(可以是Spark Standlone集群,也可以是其他的資源管理集群,比如:YARN作為資源管理集群。)申請運行spark作業需要使用的資源,這里的資源指的是Executor進程。YARN集群管理器會根據我們為Spark作業設置的資源參數,在各個工作節點上,啟動一定數據量的Executor進程,每個Executor進程都會占有一定數量的內存和CPU core。
? 在申請到了作業執行所需要的資源之后,Driver進程就會開始調用和執行編寫的作業代碼。Driver進程會將編寫的Spark作業代碼拆分為多個stage,每個stage執行一部分代碼片段,并為每個stage創建一批task,然后將這些task分配到各個Executor進程中執行。
task是最小的計算單元,負責執行一模一樣的計算邏輯(編寫代碼的某個片段),只是每個task處理的數據不同而已。一個stage的所有task都執行完成之后,會在各個節點本地的磁盤文件中寫入計算中間結果,然后Driver就會調度運行下一個stage。下一個stage的task的輸入數據就是上一個stage輸出的中間結果。如此循往復,直到將我們自己的編寫的代碼全部執行完成,并且計算完所有的數據,得到我們想要的結果為止。
參考《Spark性能優化:資源調優篇》
Spark不錯的文章:
《Spark技術內幕:Executor分配詳解》
《Spark運行原理》
《Spark 基礎(上篇)》
《Spark 基礎(下篇)》
總結
以上是生活随笔為你收集整理的SPARK:作业基本运行原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spark编译错误解决 Error:(5
- 下一篇: synchronized 与 Reent