在Hadoop生态中,常见的压缩格式包括哪些?请结合具体场景阐述不同压缩格式的适用性及其选择依据。
考察说明
考察对Hadoop压缩格式的理解及根据场景选择压缩格式的能力。
回答思路
- 【回答框架 1】Hadoop常见压缩格式包括Gzip、Bzip2、LZO、Snappy、Zstd等。Gzip压缩率高但压缩和解压速度慢且不支持切片;Bzip2压缩率最高但速度最慢;LZO和Snappy压缩速度快但压缩率较低;Zstd在压缩率和速度之间平衡较好,且支持切片。
- 【回答框架 2】选择压缩格式需考虑压缩率、压缩解压速度、是否支持切片(可分割性)、是否可分割(splittable)以及CPU资源。例如,对于需要高压缩比的归档数据,可选择Gzip或Bzip2;对于MapReduce中间数据,可使用Snappy或LZO以提升速度;对于需要支持并行处理的场景,应选择支持切片的压缩格式如LZO、Snappy(需使用可切片序列文件)或Zstd。
- 【回答框架 3】在MapReduce中,中间结果压缩通常使用Snappy或LZO,以减少磁盘IO和网络传输;最终输出压缩则根据后续使用需求选择,若需保留原始格式,可选择Gzip或Bzip2。同时,需要考虑压缩格式与数据存储格式(如SequenceFile、Parquet、ORC)的兼容性。
- 【关键点 1】Hadoop压缩格式主要有Gzip、Bzip2、LZO、Snappy、Zstd,各有优缺点。
- 【关键点 2】选择依据包括压缩率、速度、是否支持切片和CPU资源。
- 【关键点 3】中间数据推荐Snappy或LZO,最终输出可选用Gzip或Bzip2。
- 【易错点 1】错误地认为所有压缩格式都支持切片,导致MapReduce任务无法并行处理。
- 【易错点 2】忽略压缩格式与数据存储格式的兼容性,导致读取异常或性能下降。
- 【易错点 3】在CPU资源受限的集群上过度使用高压缩率的格式,导致性能瓶颈。