Spark性能优化:资源调优篇

3、资源参数参考示例
以下是一份 spark-submit
命令的示例,大家可以参考一下,并根据自己的实际情况进行调节:
./bin/spark-submit \
--master yarn-cluster \
--num-executors 100 \
--executor-memory 6G \
--executor-cores 4 \
--driver-memory 1G \
--conf spark.default.parallelism=1000 \
--conf spark.storage.memoryFraction=0.5 \
--conf spark.shuffle.memoryFraction=0.3
解释
- --master yarn-cluster: 指定使用 YARN 集群作为资源管理器。
- --num-executors 100: 设置 Executor 的数量为 100。
- --executor-memory 6G: 设置每个 Executor 的内存为 6GB。
- --executor-cores 4: 设置每个 Executor 的 CPU 核心数为 4。
- --driver-memory 1G: 设置 Driver 的内存为 1GB。
- --conf spark.default.parallelism=1000: 设置默认的并行度为 1000,即
num-executors * executor-cores
的两倍。 - --conf spark.storage.memoryFraction=0.5: 设置 RDD 持久化数据在 Executor 内存中能占的比例为 50%。
- --conf spark.shuffle.memoryFraction=0.3: 设置 shuffle 过程中一个 task 拉取到上个 stage 的 task 的输出后,进行聚合操作时能够使用的 Executor 内存的比例为 30%。
注意事项
- 资源分配: 根据你的 Spark 作业的具体需求和集群的实际情况调整
--num-executors
,--executor-memory
, 和--executor-cores
。 - 并行度:
spark.default.parallelism
的设置需要根据你的 RDD 大小和操作类型来确定。通常建议设置为num-executors * executor-cores
的两倍。 - 内存分配: 根据你的作业特点调整
spark.storage.memoryFraction
和spark.shuffle.memoryFraction
,避免频繁的 GC 导致性能下降。
通过合理的资源参数配置,可以显著提升 Spark 作业的性能和效率。