spark分配資源概述
爲啥要研究spark資源分配
spark中最基本和最有效率的優化方式就是給spark程序分配更多的資源,所以這次講如何更合適的給你的spark程序分配資源
spark分配資源主要調整哪一些資源
/home/zhou/spark/bin/spark-submit \
--class com.zhou12314.TestDemo\
--num-executors 8 \*配置executor的數量 *\
--driver-memory 200m \*配置driver的內存*\
--executor-memory 600m \*配置每個executor的內存大小 *\
--executor-cores 8 \*配置其中每個executor的cpu core數量 *\
/home/zhou/TestDemo.jar \
如何根據配置進行調節
根據公司集羣能夠分配給你的配置進行調節,例如在standalone模式下,公司spark集羣規模偉每臺16G內存,一共20臺機器,每太機器有4個cpu core。這裏我們要申請最大的資源可以 --num-executors設置爲20,executor-memory設置爲16G,--executor-cores 設置爲8。
--driver-memory 如果需要將數據拉到一臺機器上進行處理,需要設置這一個,具體根據自己的數據量大小來
爲啥調節資源性能會提升?
增加executor:
exeutor的數量,意味着你能夠並行執行task的數量, 並行task數量 = executor * cpu core
增加cpu ore
道理同上, 畢竟 並行task數量 = executor * cpu core
增加每個executor的內存量:
1.如果rdd需要緩存的話,內存大可以緩存更多的數據
2.如果執行shuffle操作的話,需要從map端拉取數據到reduce,可能還需要聚合,如果內存量不夠的話,會把數據寫入磁盤,這樣會比較慢。
3.exeutor內存小的話,會頻繁導致垃圾回收,影響效率。