溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

spark調(diào)優(yōu)(二):調(diào)節(jié)并行度

發(fā)布時間:2020-07-06 12:48:55 來源:網(wǎng)絡(luò) 閱讀:6937 作者:jackeychen100 欄目:大數(shù)據(jù)

并行度:其實就是指的是,Spark作業(yè)中,各個stage的task數(shù)量,也就代表了Spark作業(yè)的在各個階段(stage)的并行度。

如果不調(diào)節(jié)并行度,導(dǎo)致并行度過低,會怎么樣?

假設(shè),現(xiàn)在已經(jīng)在spark-submit腳本里面,給我們的spark作業(yè)分配了足夠多的資源,比如50個executor,每個executor有10G內(nèi)存,每個executor有3個cpu core?;疽呀?jīng)達到了集群或者yarn隊列的資源上限。

task沒有設(shè)置,或者設(shè)置的很少,比如就設(shè)置了,100個task。50個executor,每個executor有3個cpu core,也就是說,你的Application任何一個stage運行的時候,都有總數(shù)在150個cpu core,可以并行運行。但是你現(xiàn)在,只有100個task,平均分配一下,每個executor分配到2個task,ok,那么同時在運行的task,只有100個,每個executor只會并行運行2個task。每個executor剩下的一個cpu core,就浪費掉了。

你的資源雖然分配足夠了,但是問題是,并行度沒有與資源相匹配,導(dǎo)致你分配下去的資源都浪費掉了。

合理的并行度的設(shè)置,應(yīng)該是要設(shè)置的足夠大,大到可以完全合理的利用你的集群資源;比如上面的例子,總共集群有150個cpu core,可以并行運行150個task。那么就應(yīng)該將你的Application的并行度,至少設(shè)置成150,才能完全有效的利用你的集群資源,讓150個task,并行執(zhí)行;而且task增加到150個以后,即可以同時并行運行,還可以讓每個task要處理的數(shù)據(jù)量變少;比如總共150G的數(shù)據(jù)要處理,如果是100個task,每個task計算1.5G的數(shù)據(jù);現(xiàn)在增加到150個task,可以并行運行,而且每個task主要處理1G的數(shù)據(jù)就可以。

很簡單的道理,只要合理設(shè)置并行度,就可以完全充分利用你的集群計算資源,并且減少每個task要處理的數(shù)據(jù)量,最終,就是提升你的整個Spark作業(yè)的性能和運行速度。

1、task數(shù)量,至少設(shè)置成與Spark application的總cpu core數(shù)量相同(最理想情況,比如總共150個cpu core,分配了150個task,一起運行,差不多同一時間運行完畢)

2、官方是推薦,task數(shù)量,設(shè)置成spark application總cpu core數(shù)量的2~3倍,比如150個cpu core,基本要設(shè)置task數(shù)量為300~500;

實際情況,與理想情況不同的,有些task會運行的快一點,比如50s就完了,有些task,可能會慢一點,要1分半才運行完,所以如果你的task數(shù)量,剛好設(shè)置的跟cpu core數(shù)量相同,可能還是會導(dǎo)致資源的浪費,因為,比如150個task,10個先運行完了,剩余140個還在運行,但是這個時候,有10個cpu core就空閑出來了,就導(dǎo)致了浪費。那如果task數(shù)量設(shè)置成cpu core總數(shù)的2~3倍,那么一個task運行完了以后,另一個task馬上可以補上來,就盡量讓cpu core不要空閑,同時也是盡量提升spark作業(yè)運行的效率和速度,提升性能。

3、如何設(shè)置一個Spark Application的并行度?
spark.default.parallelism
SparkConf conf = new SparkConf()
  .set("spark.default.parallelism", "500")

“重劍無鋒”:真正有分量的一些技術(shù)和點,其實都是看起來比較平凡,看起來沒有那么“炫酷”,但是其實是你每次寫完一個spark作業(yè),進入性能調(diào)優(yōu)階段的時候,應(yīng)該優(yōu)先調(diào)節(jié)的事情,就是這些(大部分時候,可能資源和并行度到位了,spark作業(yè)就很快了,幾分鐘就跑完了)

“炫酷”:數(shù)據(jù)傾斜(100個spark作業(yè),最多10個會出現(xiàn)真正嚴重的數(shù)據(jù)傾斜問題),感冒和發(fā)燒,你不能上來就用一些偏方(×××,用癩蛤蟆熬煮湯藥);JVM調(diào)優(yōu);

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI