spark中job,stage,task之間的關係

2021-09-09 05:25:52 字數 968 閱讀 6899

1. 什麼是job

job簡單講就是提交給spark的任務。

2. 什麼是stage

stage是每乙個job處理過程要分為的幾個階段。

3什麼是task

task是每乙個job處理過程要分幾為幾次任務。task是任務執行的最小單位。最終是要以task為單位執行在executor中。

3. job和stage和task之間有什麼關係

job----> 乙個或多個stage---> 乙個或多個task

下圖是乙個job分成了三個stage:

5.乙個stage的task的數量是有誰來決定的?

是由輸入檔案的切片個數來決定的。在hdfs中不大於128m的檔案算乙個切片(預設128m)。通過運算元修改了某乙個rdd的分割槽數量,task數量也會同步修改。

6.乙個job任務的task數量是由誰來決定的?

乙個job任務可以有乙個或多個stage,乙個stage又可以有乙個或多個task。所以乙個job的task數量是  (stage數量 * task數量)的總和。

上圖就是job1有3個task。

7.每乙個stage中的task最大的並行度?

並行度:是指指令並行執行的最大條數。在指令流水中,同時執行多條指令稱為指令並行。

理論上:每乙個stage下有多少的分割槽,就有多少的task,task的數量就是我們任務的最大的並行度。

(一般情況下,我們乙個task執行的時候,使用乙個cores)

如圖所示,cores為3,那麼最大的並行度就是3。

8.如果我們的task數量超過這個cores的總數怎麼辦?

先執行cores個數量的task,然後等待cpu資源空閒後,繼續執行剩下的task。

9.spark執行時讀條中的內容講解

satge11:  當前的satge編號

(5+4)/9:

9:當前stage的task的數量,5:已完成的task數量,4:等待執行的task數量。

Spark中executor memory引數詳解

我們知道,spark執行的時候,可以通過 executor memory 來設定executor執行時所需的memory。但如果設定的過大,程式是會報錯的,如下 555.png 那麼這個值最大能設定多少呢?本文來分析一下。文中安裝的是spark1.6.1,安裝在hadoop2.7上。1 相關的2個引...

Spark基礎(三)Spark中的任務執行

容錯機制 spark的架構特點 根據客戶端提交的jar包劃分出來乙個個的rdd,根據rdd之間的lineage關係劃分dag。劃分dag的目的是為了劃分stage。2 dag通過dagscheller劃分為stage 再劃分為taskset 根據劃分出來的dag,將dag送個dagscheduler...

spark更改分割槽 Spark中的分割槽方法詳解

一 spark資料分割槽方式簡要 在spark中,rdd resilient distributed dataset 是其最基本的抽象資料集,其中每個rdd是由若干個partition組成。在job執行期間,參與運算的partition資料分布在多台機器的記憶體當中。這裡可將rdd看成乙個非常大的陣...