Hadoop SequenceFile vs splittable LZO

时间:2015-10-10 22:28:56

标签: hadoop mapreduce sequencefile lzo

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

通过Map-Reduce处理哪个更有效率,更容易处理整体?

1 个答案:

答案 0 :(得分:0)

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

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

In" Hadoop The Definitive Guide"本书(我建议你阅读"压缩"),有一节建议使用压缩格式。根据建议,以下是从最有效到最不有效的选择:

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

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

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