数据岗位面试题更新 2026-08-05

针对 MapReduce 作业,可以采取哪些性能调优手段?请举例说明常用的优化策略。

数据性能优化技术原理

考察说明

考查对 MapReduce 作业性能优化策略的掌握程度。

回答思路

  1. 【回答框架 1】性能调优主要从输入、映射、洗牌、归约和输出几个阶段入手。输入方面,合理设置输入分片大小,使数据均匀分布,减少小文件问题,可合并小文件或使用 CombineFileInputFormat。
  2. 【回答框架 2】映射阶段,适当增加并行度(调整 map 任务数量),减少序列化和反序列化开销,使用压缩(如 Snappy、LZO)减少 I/O 和网络传输。
  3. 【回答框架 3】洗牌阶段是重点,可通过调整缓冲区和阈值(如 io.sort.mb、mapreduce.map.sort.spill.percent)减少溢写次数,采用 Combiner 在 Map 端进行局部聚合,减少传输数据量。
  4. 【回答框架 4】归约阶段,合理设置 reduce 任务数量,避免数据倾斜,可通过自定义分区器或二次排序解决倾斜问题。输出阶段,使用合适的压缩格式和输出格式,减少写入开销。
  5. 【关键点 1】数据倾斜是常见性能瓶颈,可通过合理分区或预处理解决。
  6. 【关键点 2】使用压缩(如 Snappy、LZO)可显著减少 I/O 和网络传输。
  7. 【关键点 3】Combiner 能在 Map 端进行局部聚合,减少 Shuffle 数据量。
  8. 【关键点 4】调整 Shuffle 参数(如缓冲区大小)能减少溢写和磁盘 I/O。
  9. 【关键点 5】避免小文件,合并输入分片可减少 Map 任务启动开销。
  10. 【易错点 1】不要盲目增大并行度,需考虑资源限制和任务调度开销。
  11. 【易错点 2】压缩并非总是有利,需根据 CPU 和 I/O 权衡。
  12. 【易错点 3】Reduce 数量设置不当可能导致数据倾斜或资源浪费。