Hadoop SequenceFile vs splittable LZO



我们选择文件格式来存储原始日志,主要要求是压缩和可分割的。到目前为止,块压缩(无论哪种编解码器)SequenceFiles和Hadoop-LZO看起来最合适。

哪一个会更有效地由Map-Reduce处理,更容易处理?

对于原始日志,建议使用像SequenceFileFormat这样的容器文件格式,它同时支持压缩和拆分。为了使用这种格式存储日志,您必须选择时间戳作为键,并选择记录行作为值。在我们的团队中,我们广泛使用SequenceFiles。

对于可分割的LZO,您需要预处理文件以生成索引。如果没有索引,MapReduce框架将把整个文件作为单个拆分(一个映射器)来处理,处理将是低效的。

在"Hadoop权威指南"一书中(我建议你阅读"压缩"一节),有一节推荐使用的压缩格式。根据建议,以下是从最有效到最无效的选择:

  1. 容器文件格式,如SequenceFile, Avro, ORCFiles, Parquet文件与快速压缩,如LZO, LZ4或Snappy

  2. 支持拆分的压缩格式:bzip2或可拆分的LZO

  3. 将文件分割成块并使用压缩格式分别压缩每个块

相关内容

  • 没有找到相关文章

最新更新