大数据工程师面试题 - Spark 调优(九)

我是大数据欧老师,曾在互联网某大厂任大数据负责人,从业大数据领域近 10 年,全网粉丝 5000+,从很多候选人的面试和咨询中复盘了大数据工程师的面试全流程,如果你有求职大数据工程师的计划,欢迎找我聊一聊!

数据倾斜的解决方案

解决方案八:参数调优

shuffle相关参数调优

以下是Shffule过程中的一些主要参数,这里详细讲解了各个参数的功能、默认值以及基于实践经验给出的调优建议。

Spark 参数优化详解

以下列举了Spark参数调优的一些关键参数及其优化建议:

1. spark.shuffle.file.buffer (默认值:32k)

该参数用于设置 shuffle write task 的 BufferedOutputStream 的 buffer 缓冲大小。合理增大该参数的值,可以有效减少磁盘IO次数,进而提升性能。

2. spark.reducer.maxSizeInFlight (默认值:48m)

该参数用于设置 shuffle read task 的 buffer 缓冲大小。合理增加该参数的值可以减少网络传输的次数,进而提升性能。

3. spark.shuffle.io.maxRetries (默认值:3)

该参数表示 shuffle read task 从 shuffle write task 所在节点拉取属于自己的数据时,可以重试的最大次数。对于包含大量 shuffle 操作的作业,建议增加重试最大次数,以提升作业的稳定性。

4. spark.shuffle.io.retryWait (默认值:5s)

该参数代表了每次重试拉取数据的等待间隔。建议加大间隔时长(比如60s),以增加 shuffle 操作的稳定性。

5. spark.shuffle.memoryFraction (默认值:0.2)

该参数表示 Executor 内存中,分配给 shuffle read task 进行聚合操作的内存比例。如果内存充足,而且很少使用持久化操作,建议调高这个比例,以提高性能。

6. spark.shuffle.manager (默认值:sort)

对于业务逻辑不需要对数据进行排序,可以考虑使用 bypass 机制或优化的 HashShuffleManager 来提高性能。

7. spark.shuffle.sort.bypassMergeThreshold (默认值:200)

当 ShuffleManager 为 SortShuffleManager 时,如果 shuffle read task 的数量小于这个阈值(默认是200),则 shuffle write 过程中不会进行排序操作。合理调大此参数可以减少排序的性能开销。

8. spark.shuffle.consolidateFiles (默认值:false)

如果使用 HashShuffleManager,该参数有效。开启 consolidate 机制可以合并 shuffle write 的输出文件,减少磁盘IO开销,提升性能。

#大数据##大数据工程师##大数据知识体系##大数据面试##大数据面经#

解决职场真实面试问题,分享同学真实成功案例,欢迎订阅关注!

全部评论

相关推荐

投递汉得等公司10个岗位
点赞 评论 收藏
分享
点赞 7 评论
分享
牛客网
牛客企业服务