我们选择文件格式来存储我们的原始日志,主要要求是压缩和可拆分的。到目前为止,块压缩(无论哪个编解码器)SequenceFiles和Hadoop-LZO看起来最合适。
通过Map-Reduce处理哪个更有效率,更容易处理整体?
答案 0 :(得分:0)
对于原始日志,建议使用像SequenceFileFormat这样的容器文件格式,它支持压缩和拆分。要使用此格式存储日志,您必须选择时间戳作为键,并记录行作为值。在我们的团队中,我们广泛使用SequenceFiles。
对于可拆分LZO,您需要预处理文件以生成索引。如果没有索引,MapReduce框架将整个文件作为单个拆分(一个映射器)处理,处理效率低下。
In" Hadoop The Definitive Guide"本书(我建议你阅读"压缩"),有一节建议使用压缩格式。根据建议,以下是从最有效到最不有效的选择:
容器文件格式,如SequenceFile,Avro,ORCFiles,带有快速压缩器的Parquet文件,如LZO,LZ4或Snappy
支持拆分的压缩格式:bzip2或splittable LZO
将文件拆分为块并使用压缩格式分别压缩每个块