整理spark中的job stage task幾個概念以及運行案例

Job :

是一個比task 和 stage 更大的邏輯概念,job 可以認爲是我們在driver 或是通過spark-submit 提交的程序中一個action ,在我們的程序中有很多action  所有也就對應很多的jobs


Stage:

 是spark 中一個非常重要的概念 ,在一個job 中劃分stage 的一個重要依據是否有shuflle 發生 ,也就是是否會發生數據的重組 (重新組織數據)。在一個stage 內部會有很多的task 被執行,在同一個stage 中 所有的task 結束後才能根據DAG 依賴執行下一個stage 中的task.


在spark streaming中,一個application可以在時間維度上劃分爲無數個job, 一個job 有很多任務組成,每組任務可以任務是一個stage , 而Task 是spark 中另一個很重要的概念 ,

task 跟 partition  block 等概念緊密相連 ,task 是執行job 的邏輯單元 ,在task 會在每個executor 中的cpu core 中執行





下面是一個基於streaming實時計算的wordcount案例:


1. 首先基於yarn-cluster的模式 提交一個wordcount  application



2.   在sparkcontext配置中  Durations.seconds(1) 設置爲1秒,因此相隔1秒的時間段內的RDD數據 作爲計算對象 來觸發一個action,也就是一個job




3.  在id 爲4988的job中,根據wordcount的邏輯主要有兩個stage 




4.   點擊id爲9977的 stage 即對應的foreach stage中,可以看到 該stage 由N個task來實際執行計算任務






版權聲明:本文爲博主原創文章,未經博主允許不得轉載。
發佈了148 篇原創文章 · 獲贊 277 · 訪問量 114萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章