spark 提交参数设置

1.num-executors 50~100
2.executor-memory 4G~8G  num-executors乘以executor-memory,就代表了你的Spark作业申请到的总内存量,这个量是不能超过队列的最大内存量的
3.executor-cores 2~4   
4.spark.default.parallelism  用于设置每个stage的默认task数量,Spark作业的默认task数量为500~1000个较为合适,设置该参数为num-executors * executor-cores的2~3倍较为合适


./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 \




[root@cloud-vm1 ~]# spark-submit --class com.rexen.ComparisonOrcla --master yarn-cluster --num-executors 50 --executor-cores 4 --executor-memory 6G --conf spark.default.parallelism=500 /soft/ComparisonOrcla.jar


spark-submit --class com.rexen.ComparisonOrcla --master yarn-client --num-executors 50 --executor-cores 4 --executor-memory 6G --conf spark.default.parallelism=500 /soft/ComparisonOrcla.jar
### Spark 性能优化常用参数配置 在 Apache Spark 的性能优化中,参数配置起着至关重要的作用。通过合理设置资源分配、任务调度、内存管理等方面的参数,可以显著提升作业的执行效率和稳定性。以下是一些常见的优化参数及其配置建议。 #### 1. 资源分配相关参数 - `--num-executors`:指定执行器的数量。增加执行器数量可以提高并行度,但也会增加资源消耗。通常建议根据集群资源进行合理配置。 - `--executor-cores`:每个执行器使用的 CPU 核心数。更高的核心数可以提高单个执行器的处理能力,但需要避免过度占用资源。 - `--executor-memory`:每个执行器的内存大小。在实际工作中,通常设置为 2~4GB,具体值需根据任务需求和集群资源决定。 - `--driver-memory`:驱动程序的内存大小。如果需要执行类似 `collect` 的操作,应适当增加该值以避免内存不足。 #### 2. 内存管理相关参数 - `spark.memory.fraction`:用于缓存和执行的堆内存比例,默认为 0.6。可以通过调整该参数优化内存使用。 - `spark.memory.storageFraction`:存储内存占执行和存储总内存的比例,默认为 0.5。减少该值可以增加执行内存的可用空间。 - `spark.executor.memoryOverhead`:为执行器分配的额外内存,用于 JVM 开销、元数据存储等。通常建议设置为执行器内存的 10%~20%。 #### 3. 任务调度与并行度 - `spark.default.parallelism`:默认的并行度,通常用于 RDD 的转换操作。可以根据集群的核心数和任务规模进行调整。 - `spark.sql.shuffle.partitions`:控制 Shuffle 操作后的分区数,默认为 200。增加分区数可以提高并行度,但也会增加任务调度的开销。 - `spark.locality.wait`:任务等待本地数据的时间,默认为 3 秒。增加等待时间可以提高数据本地性的调度机会,减少数据传输开销。 #### 4. 数据本地性与存储格式 - 数据本地性对性能提升尤为重要,尽量确保数据和计算在同一节点上进行。可以通过 `spark.locality.wait` 参数控制等待时间[^1]。 - 使用高效的存储格式如 Parquet 可以显著提升数据扫描的吞吐量。Spark 1.6 版本在 Parquet 读写操作中进行了大量优化,相比 1.5 版本,性能提升约 1 倍,同时降低了 CPU 消耗[^4]。 #### 5. 其他常见优化参数 - `spark.sql.adaptive.enabled`:启用自适应查询优化功能,可以在运行时动态调整执行计划,提高性能。 - `spark.sql.adaptive.skewedJoin.enabled`:启用自适应倾斜 Join 优化,解决数据倾斜问题。 - `spark.sql.broadcastTimeout`:广播变量的超时时间,避免因网络问题导致任务失败。 #### 示例配置 以下是一个典型的 Spark 作业提交命令,包含了一些常见的优化参数设置: ```bash spark-submit \ --name mySparkJobName \ --class com.example.MySparkJob \ --master yarn \ --deploy-mode cluster \ --num-executors 4 \ --executor-cores 3 \ --executor-memory 4G \ --driver-memory 2G \ --conf "spark.default.parallelism=200" \ --conf "spark.locality.wait=5s" \ --conf "spark.sql.shuffle.partitions=300" \ --conf "spark.sql.adaptive.enabled=true" \ --conf "spark.sql.adaptive.skewedJoin.enabled=true" \ mySparkJob.jar ``` #### 6. 配置管理建议 - 在生产环境中,推荐使用 `spark-defaults.conf` 文件或集群管理器的配置来管理参数,以保持一致性并避免重复设置[^3]。 - 对于不同的作业,可以根据具体需求在代码中或使用 `spark-submit` 命令行参数动态指定参数。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

diannao720

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值