spark-submit 参数设置
在使用spark時,根據集群資源情況和任務數據量等,合理設置參數,包括但不限于以下:
| 參數 | 說明 |
| master | yarn? E-MapReduce 使用 Yarn 的模式 |
| yarn-client:等同于 –-master yarn —deploy-mode client, 此時不需要指定deploy-mode。? | |
| yarn-cluster:等同于 –-master yarn —deploy-mode cluster, 此時不需要指定deploy-mode。 | |
| class | 作業的主類 |
| deploy-mode | client 模式表示作業的 AM 會放在 Master 節點上運行。要注意的是,如果設置這個參數,那么需要同時指定上面 master 為 yarn。 |
| cluster 模式表示 AM 會隨機的在 worker 節點中的任意一臺上啟動運行。要注意的是,如果設置這個參數,那么需要同時指定上面 master 為yarn。 | |
| executor-cores | 每個executor使用的內核數,默認為1 |
| num-executors | 啟動executor的數量,默認為2 |
| executor-memory | executor的內存大小,默認為1G |
| driver-cores | driver使用的內核數,默認為1 |
| driver-memory | driver的內存大小,默認為1G |
| queue | 指定了放在哪個隊列里執行 |
| spark.default.parallelism | 該參數用于設置每個stage的默認task數量。這個參數極為重要,如果不設置可能會直接影響你的Spark作業性能,Spark官網建議的設置原則是,設置該參數為num-executors * executor-cores的2~3倍較為合適 |
| spark.storage.memoryFraction? ? | 該參數用于設置RDD持久化數據在Executor內存中能占的比例,默認是0.6。也就是說,默認Executor 60%的內存,可以用來保存持久化的RDD數據。根據你選擇的不同的持久化策略,如果內存不夠時,可能數據就不會持久化,或者數據會寫入磁盤。 |
| spark.shuffle.memoryFraction | ?該參數用于設置shuffle過程中一個task拉取到上個stage的task的輸出后,如果發現使用的內存超出了這個20%的限制,那么多余的數據就會溢寫到磁盤文件中去,如果發現使用的內存超出了這個20%的限制,那么多余的數據就會溢寫到磁盤文件中去,此時就會極大地降低性能。 |
| total-executor-cores | 所有executor的總核數 |
?
(1)executor_cores*num_executors?
?????表示的是能夠并行執行Task的數目不宜太小或太大!一般不超過總隊列 cores 的 25%,比如隊列總 cores ???400,最大不要超過100,最小不建議低于40,除非日志量很小。
(2)executor_cores?
?????不宜為1!否則 work 進程中線程數過少,一般 2~4 為宜。
(3)executor_memory?
?????一般 6~10g 為宜,最大不超過20G,否則會導致GC代價過高,或資源浪費嚴重。
(4)driver-memory?
?????driver 不做任何計算和存儲,只是下發任務與yarn資源管理器和task交互,除非你是 spark-shell,否則一般 1-2g
? ? ?
(5)如果需要對RDD進行cache,那么更多的內存,就可以緩存更多的數據,將更少的數據寫入磁盤,甚至不寫入磁盤。減少了磁盤IO。
(6)對于shuffle操作,reduce端,會需要內存來存放拉取的數據并進行聚合。如果內存不夠,也會寫入磁盤。
?????如果給executor分配更多內存以后,就有更少的數據,需要寫入磁盤,甚至不需要寫入磁盤。減少了磁盤IO,提升了性能。
(7)對于task的執行,可能會創建很多對象.如果內存比較小,可能會頻繁導致JVM堆內存滿了,然后頻繁GC,垃圾回收 ,minor GC和full GC.(速度很慢).內存加大以后,帶來更少的GC,垃圾回收,避免了速度變慢,性能提升。
?
?
總結
以上是生活随笔為你收集整理的spark-submit 参数设置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ReactNative环境配置
- 下一篇: 免otp动态密码登录堡垒机