首頁技術(shù)文章正文

云計算大數(shù)據(jù)培訓之Spark調(diào)優(yōu)(1)

更新時間:2017-09-01 來源:黑馬程序員云計算大數(shù)據(jù)培訓學院 瀏覽量:

一,分配更多的資源

1,在哪里分配 
在提交任務(wù)時,在這三個參數(shù)上分配(–total-executor-cores –executor-memory –driver-memory) 
2,分配那些資源 
CPU core 和 memory 
3,怎么分配

4,分配之后有什么效果 
A, 給executor分配更多的內(nèi)存,能夠減少executor頻繁的GC,因為發(fā)生頻繁的GC,會導致spark性能立馬下降 
B, 給executor分配更多的內(nèi)存,那么就會將盡量多的RDD的數(shù)據(jù)保存在內(nèi)存中,可以避免磁盤IO(頻繁的IO會使spark性能下降) 
C, 給executor分配更多的內(nèi)存,可以減少任務(wù)在拉取上一個stage數(shù)據(jù)時,將數(shù)據(jù)存入磁盤(即,減少shuffle階段數(shù)據(jù)落地) 
D, 分配更多的CPU core,意味著同一時間執(zhí)行任務(wù)的數(shù)量就會提高(即,任務(wù)的并行度提升)

二,調(diào)節(jié)任務(wù)的并行度 
我們在給任務(wù)分配更多資源的時候,就意味著任務(wù)能夠具備更多的資源來執(zhí)行,但是我們需要考慮一點,例如:給任務(wù)分配了5個executor,每個executor有10 個core,那么整個任務(wù)就會有5*10=50 個核,也就意味著同一時間能夠并行執(zhí)行的任務(wù)是50個,當我們的任務(wù)只有20個時,那么還有30個core是空閑的,浪費了,即,任務(wù)的數(shù)量不能滿足并行度,針對這種情況,我們應(yīng)該調(diào)節(jié)任務(wù)的數(shù)量,提高任務(wù)的并行度

怎么提高任務(wù)的并行度? 
1,調(diào)節(jié)shuffle階段任務(wù)的并行度,一般那些shuffle算子,有兩個參數(shù),后面一個參數(shù)就是用來調(diào)節(jié)任務(wù)的并行度的,例如:reduceByKey(+,500) 
2,調(diào)節(jié)任務(wù)的分區(qū)數(shù),可以使用這個算子,coalesce(500,true) 
3,可以通過這個參數(shù)來調(diào)節(jié)任務(wù)的并行度 spark.default.parallelism ==> sparkConf.set(“spark.default.parallelism”,5)



本文版權(quán)歸黑馬程序員云計算大數(shù)據(jù)培訓學院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明作者出處。謝謝!
作者:黑馬程序員云計算大數(shù)據(jù)培訓學院
首發(fā):http://cloud.itheima.com/ 
分享到:
在線咨詢 我要報名
和我們在線交談!