Spark3.x 程序性能优化手段

Spark程序优化手段,从3方面入手:

* 资源参数调整

* 程序中资源调整

* 程序语法调整

1. 资源参数调整 一般是调整spark-submit 资源参数

记住以下1个原则:

executor-cores 每个 executor 的最大核数。根据经验实践,设定在 3~6 之间比较合理;

比如:7台机器,每台128g 32c的资源配置;

 (1) num-executors 估算

  每台机器最大可用vcores 按28算(不能32c全用,留点冗余给系统用),
  每个executor 的executor-cores 按4算(3~6 之间),

  这台机器的executor 数就是 28/4 = 7 个;

  一共有7台机器。那么这个spark集群,最多可以有num-executors 是7*7=49个

(2)executor-memory 估算

  每台机器最大可用内存按100g 算(不能128g全用,留点冗余给系统用),
  每台机器的最大executor数是7个 那么,每个executor的内存executor-memory是100/7 = 14g;

  注意这个估算的14g 不能超过 yarn 配置中每个容器允许的最大内存;超过spark任务会失败;

2.程序中资源调整,主要是调整spark 算子的并行度

记住以下一个原则:

如果想要让任务运行的最快当然是一个 task 对应一个 vcore,但 是一般不会这样设置,为了合理利用资源,一般会将并行度(task 数)设置成并发度 (vcore 数)的 2 倍到 3 倍

在代码中调整必要算子的并行度

(1) sparksql spark.sql.shuffle.partitions(默认 200)

修改参数 spark.sql.shuffle.partitions, 根据我们啥上面任务的提交参数集群有49 * 4个核,

将此参数设置为 49 * 4 * 2 ~ 49 * 4 * 3  为最优效果;

...未完待续

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值