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内存小的话,会频繁导致垃圾回收,影响效率。