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