更新時(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)
云計(jì)算大數(shù)據(jù)培訓(xùn)之Hadoop組件:zookeeper(3)
2017-09-01云計(jì)算大數(shù)據(jù)培訓(xùn)之Hadoop組件:zookeeper(2)
2017-09-01云計(jì)算大數(shù)據(jù)培訓(xùn)之Hadoop組件:zookeeper(1)
2017-09-01云計(jì)算大數(shù)據(jù)培訓(xùn)之Spark-Streaming的基本原理以及預(yù)寫日志機(jī)制和checkpoint(3)
2017-09-01云計(jì)算大數(shù)據(jù)培訓(xùn)之Spark-Streaming的基本原理以及預(yù)寫日志機(jī)制和checkpoint(2)
2017-09-01云計(jì)算大數(shù)據(jù)培訓(xùn)之Spark-Streaming的基本原理以及預(yù)寫日志機(jī)制和checkpoint(1)
2017-09-01