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

请阐述MapReduce框架中数据压缩机制的设计方案,并分析在哪些应用场景下启用数据压缩是有益的?

数据性能优化技术原理方案权衡Apache Hadoop

考察说明

考察对MapReduce中数据压缩机制的理解及其适用场景的把握。

回答思路

  1. 【回答框架 1】MapReduce的数据压缩机制主要在三个环节体现:输入数据压缩、中间结果压缩(map输出)和最终输出压缩。Hadoop支持多种压缩格式(如gzip、bzip2、Snappy、LZO等),每种格式在压缩比和压缩/解压速度上各有取舍。
  2. 【回答框架 2】输入压缩:通过文件扩展名识别压缩格式,使用相应的Codec自动解压,减少磁盘I/O和网络传输量,不影响Map处理逻辑。
  3. 【回答框架 3】中间结果压缩:在Map任务输出阶段启用压缩,可降低Shuffle阶段的数据传输量,显著提升作业性能。需注意选择合适的编解码器,如LZO或Snappy,以平衡压缩速度和压缩率。
  4. 【回答框架 4】输出压缩:Job输出数据时可选择压缩,用于节省存储空间。需确保下游系统能支持解压,并在某些场景下(如数据后续需要随机访问)需要权衡。
  5. 【回答框架 5】适用场景包括:大数据量的重复传输、网络带宽瓶颈、Shuffle阶段数据传输开销大、需要对作业结果进行归档存储等。在CPU资源紧张或数据本身压缩率低(如已压缩的图片、视频)时,需谨慎使用。
  6. 【关键点 1】MapReduce压缩机制分为输入、中间结果、输出三个阶段。
  7. 【关键点 2】常用压缩格式有gzip、bzip2、LZO、Snappy,各有优缺点。
  8. 【关键点 3】中间结果压缩常使用LZO或Snappy以减少网络I/O。
  9. 【关键点 4】压缩可在数据量大、网络瓶颈、存储优化时使用。
  10. 【关键点 5】在CPU瓶颈或数据已高度压缩时需权衡。
  11. 【易错点 1】不要认为所有压缩格式都适合所有场景,需根据速度、压缩比选择。
  12. 【易错点 2】中间结果压缩如果使用gzip等压缩比高但速度慢的格式,可能适得其反。
  13. 【易错点 3】压缩后的数据若需支持split,需考虑格式是否可切片,如bzip2支持,部分格式不支持。