大数据工程师面试题 - 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开销,提升性能。
#大数据##大数据工程师##大数据知识体系##大数据面试##大数据面经#解决职场真实面试问题,分享同学真实成功案例,欢迎订阅关注!