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

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

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

一,分配更多的資源

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

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

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

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



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