Spark-Shuffer调优

本文详细介绍了Spark Shuffle调优的五个关键步骤:1) 调整map端缓冲区大小以减少磁盘溢写;2) 增加reduce端拉取数据缓冲区,降低网络传输次数;3) 设置reduce端拉取数据的重试次数,提升稳定性;4) 调整重试等待时间间隔,改善shuffle操作的稳定性;5) 调整sort shuffle排序操作阀值,减少不必要的排序开销。
摘要由CSDN通过智能技术生成

Spark-Shuffer调优

Shuffle调优一:调节 map 端缓冲区大小

在 Spark 任务运行过程中,如果 shuffle 的 map 端处理的数据量比较大,但是map 端缓冲的大小是固定的,可能会出现 map 端缓冲数据频繁 spill 溢写到磁盘文件中的情况,使得性能非常低下,通过调节 map 端缓冲的大小,可以避免频繁的磁盘IO 操作,进而提升 Spark 任务的整体性能。
map 端缓冲的默认配置是 32KB,如果每个 task 处理 640KB 的数据,那么会发生 640/32 = 20 次溢写,如果每个 task 处理 64000KB 的数据,机会发生 64000/32=2000次溢写,这对于性能的影响是非常严重的。

Shuffle调优二:调节 reduce端拉取数据缓冲区大小

Spark Shuffle 过程中, shuffle reduce task 的 buffer 缓冲区大小决定了 reduce task每次能够缓冲的数据量,也就是每次能够拉取的数据量,如果内存资源较为充足,适当增加拉取数据缓冲区的大小,可以减少拉取数据的次数,也就可以减少网络传输的次数,进而提升性能。
reduce 端数据拉取缓冲区的大小可以通过 spark.reducer.maxSizeInFlight 参数进行设置,默认为 48MB,该参数的设置方法如下代码所示:
val conf = new SparkConf().set(“spark.reducer.maxSizeInFlight”, “96”)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Colin_lqk

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

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

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

打赏作者

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

抵扣说明:

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

余额充值