ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Spark 常规性能调优-参数

2021-09-21 11:00:46  阅读:247  来源: 互联网

标签:task -- executor 常规 调优 内存 Executor cores 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;


2. 可以为 shuffle 操作提供更多内存,即有更多空间来存放 reduce 端拉取的数据,写入磁盘的数据相应减少,甚至可以不写入磁盘,减少了可能的磁盘IO;


3. 可以为 task 的执行提供更多内存,在 task的执行过程中可能创建很多对象,内存较小时会引发频繁的 GC,增加内存后,可以避免频繁的 GC,提升整体性能。

-- 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.parallelismSpark官网建议的设置原则:设置参数为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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有