没有合适的资源?快使用搜索试试~ 我知道了~
【Spark调优篇03】Spark之Shuffle调优1
需积分: 0 1 下载量 24 浏览量
2022-08-04
15:27:45
上传
评论
收藏 354KB PDF 举报
温馨提示
试读
2页
思考学习的深度Spark之Shuffle调优调优一:调节map端缓冲区大小在Spark任务运行过程中,如果shuffle的map端处理的数据量比较大,但是map
资源推荐
资源详情
资源评论
思考学习的深度
Spark之Shuffle调优
调优一:调节map端缓冲区大小
在Spark任务运行过程中,如果shuffle的map端处理的数据量比较大,但是map端缓冲的大小是固定
的,可能会出现map端缓冲数据频繁spill溢写到磁盘文件中的情况,使得性能非常低下,通过调节map
端缓冲的大小,可以避免频繁的磁盘IO操作,进而提升Spark任务的整体性能。
map端缓冲的默认配置是32KB,如果每个task处理640KB的数据,那么会发生640/32 = 20次溢写,
如果每个task处理64000KB的数据,机会发生64000/32=2000此溢写,这对于性能的影响是非常严重
的。
map端缓冲的配置方法如代码
调优二:调节reduce端拉取数据缓冲区大小
Spark Shuffle过程中,shuffle reduce task的buffer缓冲区大小决定了reduce task每次能够缓冲的
数据量,也就是每次能够拉取的数据量,如果内存资源较为充足,适当增加拉取数据缓冲区的大小,可
以减少拉取数据的次数,也就可以减少网络传输的次数,进而提升性能。
reduce端数据拉取缓冲区的大小可以通过spark.reducer.maxSizeInFlight参数进行设置,默认为
48MB,该参数的设置方法如代码
调优三:调节reduce端拉取数据重试次数
Spark Shuffle过程中,reduce task拉取属于自己的数据时,如果因为网络异常等原因导致失败会自
动进行重试。对于那些包含了特别耗时的shuffle操作的作业,建议增加重试最大次数(比如60次),
以避免由于JVM的full gc或者网络不稳定等因素导致的数据拉取失败。在实践中发现,对于针对超大数
据量(数十亿~上百亿)的shuffle过程,调节该参数可以大幅度提升稳定性。
reduce端拉取数据重试次数可以通过spark.shuffle.io.maxRetries参数进行设置,该参数就代表了可
以重试的最大次数。如果在指定次数之内拉取还是没有成功,就可能会导致作业执行失败,默认为3
reduce端拉取数据重试次数配置
val conf = new SparkConf()
.set("spark.shuffle.file.buffer", "64")
val conf = new SparkConf()
.set("spark.reducer.maxSizeInFlight", "96")
val conf = new SparkConf()
.set("spark.shuffle.io.maxRetries", "6")
资源评论
士多霹雳酱
- 粉丝: 22
- 资源: 299
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功