並行度:spark 作業中,會根據 action 操作劃分成多個 job,每個 job 中會根據 shuffle 劃分成多個 stage,每個 stage 會分配多個 task 去執行,各個 stage 劃分的 task 數量就代表了 spark 作業在該 stage 的並行度。
假設 spark 作業的處理的資料量是不變的,這些資料會被分配到每個 task 中去處理,在集群配置資源分配好的情況下,提公升並行度,相當於分配越多的 task,這樣每個 task 分配的資料量就會越少,有助於提公升執行效率。
當然也不是無限提公升就有好處,這和 executor 分配的 core 的數量有關,每個 core 一次只能執行乙個 task,所以並行度的調整和 core 的數量有很大關係。
比如,我們在 spark-submit 的 shell 指令碼中配置了 50 個 executor,每個 executor 有 10g 記憶體和 3 個 core。這樣的配置已經達到了集群或者 yarn 資源佇列的上限。這時候我們來調整並行度,50 個 executor,每個 executor 有 3 個 core,那麼一共有 150 個 core,如果我們這時候設定的並行度為 100 個,那麼可以看出在每個 stage 執行任務的 task 數量只有 100 個,executor 用來執行 task 的 core 還有 50 個沒被利用。相當於資源被浪費了。
1,task 的數量至少應該設定成和集群中配置的 core 數量一致。
這是因為:實際生產情況下,有些 task 的執行會快一點,比如 50s 就結束了,有些慢一點,比如 1 分鐘,在這種情況下,避免讓 core 有空閒,造成資源浪費,可以讓 task 的數量多一點,這樣可以讓結束較快的 task 對應的 core 不會空閒下來。
3,設定方式:
sparkconf conf = new sparkconf()
.set("spark.default.parallelism", "500")
.***
複製**
spark調優,調節並行度
spark並行度指的是什麼?並行度 其實就是指的是,spark作業中,各個stage的task數量,也就代表了sprark作業的各個階段 stage 的並行度。如果不調節,那麼導致並行度過低,會怎麼樣?假設,現在已經在spark submit指令碼中給我們的spark作業分配了足夠的資源,比如50個...
效能調優之調節並行度
以 spark 中的 wordcount 作業為例,每個spark作業其實都是乙個 application,每個 application 對應多個 jobs,乙個 action 操作 比如 collect 觸發乙個 job,在wordcount程式中有乙個 job,每個 job 拆成多個 stage...
spark效能調優之提高並行度
並行度就是spark作業中,各個stage的task數量,也就代表了spark作業的在各個階段 stage 的並行度。如果不調節並行度,導致並行度過低,會怎麼樣?假設,現在已經在spark submit指令碼裡面,給我們的spark作業分配了足夠多的資源,比如50個executor,每個execut...