Spark 常规性能调优-参数
作者:互联网
Spark 性能调优的第一步,就是为任务分配更多的资源,在一定范围内,增加资源的分配与性能的提升是成正比的,实现了最优的资源配置后。
bin/spark-submit \
--class com.xxx.xxx.Analysis \
--master yarn \
--deploy-mode cluster
--num-executors 50 \
--executor-cores 4 \
--executor-memory 32G \
--driver-cores 4 \
--driver-memory 16G \
/usr/xxx/xxxx/spark/jar/spark.jar
spark 参数 | 解释 | 核心 |
---|---|---|
--num-executors | 一般每个Spark作业的运行一般设置50~100个左右的Executor进程比较合适,设置太多和太少都不合适,太少的话,无法有效充分利用集群资源,太多的话,Yarn无法基于充分的资源,只能陷入等待或终止。 在资源允许的情况下,增加 Executor 的个数可以提高执行 task 的并行度。比如有 4 个Executor,每个 Executor 有 2 个 CPU core,那么可以并行执行 8 个 task,如果将 Executor 的个数增加到 8 个(资源允许的情况下),那么可以并行执行 16 个 task,此时的并行能力提升了一倍。 | 是 |
--executor-memory | 每个Executor的内存设置为4G~8G,这里给的是一个参考值,还是得具体情况具体分析,num-exeutors*executor-memory应该等于你能够调用的所有内存,如果是团队公用的内存,那么最好不要超过最大内存的1/3 - 1/2 1. 可 以 缓 存 更 多 的 数 据 ( 即 对 RDD 进 行cache),写入磁盘的数据相应减少,甚至可以不写入磁盘,减少了可能的磁盘 IO;
| 是 |
-- executor-cores | 一般每个Executor的cpu cores 数量设置2~4个较为合适,这里给的是一个参考值,还是得具体情况具体分析,num-exeutors*executor-cores应该等于你能够调用的所有核数,如果是团队公用的资源,那么最好不要超过最大核数的1/3 - 1/2 在资源允许的情况下,增加每个Executor的Cpu core 个数,可以提高执行task的并行度。比如有4个Executor,每个Executor有2个CPU core,那么可以并行执行 8 个 task,如果将每个 Executor 的 CPU core 个数增加到 4 个(资源允许的情况下),那么可以并行执行16个task,此时的并行能力提升了一倍。 | 是 |
--driver-memory | driver进程使用的总内存数。和内核数一样,建议根据你的应用及硬件情况,把这个值设置为“16g”或“32g”。默认”1g”。 | 是 |
--driver-cores | 在集群模式下管理资源时,用于driver程序的CPU内核数量。默认为1。在生产环境的硬件上,这个值可能最少要上调到8或16。默认为”1“。 | 是 |
--spark.default.parallelism | Spark官网建议的设置原则:设置参数为num-exeutors*executor-cores的2-3倍,比如Executor的总CPU cores为300(75个executor*4个executor-cores),那么设置为1000个task是可以的,可以充分利用集群资源。 | |
--spark.shuffle.memoryFraction | 默认0.2(20%),如果shuffle操作较多,可以调高该内存值。 | |
--spark.storage.memoryFraction | 默认0.6(60%),如果你的缓存的RDD比较多,可以调高该内存值。 |
标签:task,--,executor,常规,调优,内存,Executor,cores,Spark 来源: https://blog.csdn.net/lucklilili/article/details/120396213