2

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

Map-Reduce 处理哪一个效率更高,整体上更容易处理?

4

1 回答 1

0

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

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

在“Hadoop The Definitive Guide”一书中(我建议您阅读“压缩”部分),有一节推荐使用的压缩格式。根据建议,以下是从最有效到最无效的选择:

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

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

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

于 2015-10-11T02:02:52.430 回答