spark任务参数配置优化真实案例记录


3个案例摘选于李智慧的从零开始学习大数据课程

通常任务参数配置的不合理,往往也会浪费资源。比如在 Spark 中,Executor 内存设置的过大;CPU 设置的过多;还有 Spark 没有开启动态资源分配策略,一些已经运行完 Task 的 Executor 不能释放,持续占用资源,尤其是遇到数据倾斜的情况,资源浪费会更加明显。

1.Spark 任务调度优化

将4台Worker机器的 CPU 使用率进行对比分析,发现 CPU 使用率有些蹊跷的地方,通过观察其CPU使用率,可以发现在第一个 job 的第二个阶段,第三台机器的 CPU 使用率和其他机器明显不同,也就是说计算资源利用不均衡,这种有忙有闲的资源分配方式通常会引起性能问题。
1
2
3
4

分析 Spark 运行日志和 Spark 源代码,发现当有空闲计算资源的 Worker 节点向 Driver 注册的时候,就会触发 Spark 的任务分配,分配的时候使用轮询方式,每个 Worker 都会轮流分配任务,保证任务分配均衡,每个服务器都能领到一部分任务。但是为什么实测的结果却是在第二个 stage,只有一个 Worker 服务器领了任务,而其他服务器没有任何任务可以执行?

进一步分析日志,发现 Worker 节点向 Driver 注册有先有后,先注册的 Worker 开始领取任务,如果需要执行的任务数小于 Worker 提供的计算单元数,就会出现一个 Worker 领走所有任务的情况。

而第一个 job 的第二个 stage 刚好是这样的情况,demo 数据量不大,按照 HDFS 默认的 Block 大小(CDH默认128M),只有 17 个 Block,第二个 stage 就是加载这 17 个 Block 进行初始迭代计算,只需要 17 个计算任务就能完成,所以当第三台服务器先于其他三台服务器向 Driver 注册的时候,触发 Driver 的任务分配,领走了所有 17 个任务。同时,为了避免这种一个 Worker 先注册先领走全部任务的情况,我们考虑的一个优化策略是增加一个配置项,只有注册的计算资源数达到一定比例才开始分配任务,默认值是 0.8。

spark.scheduler.minRegisteredResourcesRatio = 0.8

为了避免注册计算资源达不到期望资源比例而无法开始分配任务,在启动任务执行时,又增加了一个配置项,也就是最小等待时间,超过最小等待时间(秒),不管是否达到注册比例,都开始分配任务。

spark.scheduler.maxRegisteredResourcesWaitingTime = 3

启用这两个配置项后,第二个 stage 的任务被均匀分配到 4 个 Worker 服务器上,执行时间缩短了 1.32 倍。而 4 台 Worker 服务器的 CPU 利用率也变得很均衡了。

扫描二维码关注公众号,回复: 11350370 查看本文章

2.Spark 应用配置优化

看案例 2 的几张 CPU 利用率的图,我们还发现所有 4 个 Worker 服务器的 CPU 利用率最大只能达到 60% 多一点。例如下图,绿色部分就是 CPU 空闲。
在这里插入图片描述
这种资源利用瓶颈的分析无需分析 Spark 日志和源代码,根据 Spark 的工作原理,稍加思考就可以发现,当时使用的这些服务器的 CPU 的核心数是 48 核,而应用配置的最大 Executor 数目是 120,每台服务器 30 个任务,虽然 30 个任务在每个 CPU 核上都 100% 运行,但是总的 CPU 使用率仍只有 60% 多。具体优化也很简单,设置应用启动参数的 Executor 数为 48×4=192 即可。

3.硬件优化

分析网卡的资源消耗,发现网络通信是性能的瓶颈,对整个应用的影响非常明显。比如在第二个、第三个 job,网络通信消耗长达 50 秒的时间,网络读写通信都达到了网卡的最大吞吐能力,整个集群都在等待网络传输。
5
我们知道千兆网卡的最大传输速率是每秒 125MB,这样的速率和 CPU 内存固然没法比,而虽然比单个磁盘快一些,但是服务器磁盘是 8 块磁盘组成的阵列,总的磁盘吞吐量依然碾压千兆网卡,因此网卡传输速率的瓶颈就成为整个系统的性能瓶颈。而优化手段其实很简单粗暴,就是是升级网卡使用万兆网卡。

4.SQL优化方法

  1. spark性能优化:https://blog.csdn.net/weixin_42526352/article/details/104981122
  2. hive数据倾斜sql方案总结:https://blog.csdn.net/weixin_42526352/article/details/104730915

猜你喜欢

转载自blog.csdn.net/weixin_42526352/article/details/105499527