我们正在选择存储原始日志的文件格式,主要需求是压缩和可拆分的。块压缩(无论哪个编解码器)序列文件和hadoop lzo看起来是目前为止最合适的。用map reduce处理哪一个更有效,更容易处理?
li9yvcax1#
对于原始日志,建议使用sequencefileformat之类的容器文件格式,它支持压缩和拆分。要使用这种格式存储日志,必须选择timestamp作为键,选择logged line作为值。在我们的团队中,我们广泛使用SequenceFile。对于可拆分lzo,需要对文件进行预处理以生成索引。如果没有索引,mapreduce框架会将整个文件作为一个单独的分割(一个Map器)进行处理,处理效率会很低。在“hadoop最终指南”一书中(我建议您阅读“压缩”一节),有一节建议使用压缩格式。根据建议,以下是从最有效到最不有效的选择:容器文件格式,如sequencefile、avro、orcfiles、parquet文件和快速压缩器,如lzo、lz4或snappy支持拆分的压缩格式:bzip2或可拆分lzo将文件拆分为块,并使用压缩格式分别压缩每个块
1条答案
按热度按时间li9yvcax1#
对于原始日志,建议使用sequencefileformat之类的容器文件格式,它支持压缩和拆分。要使用这种格式存储日志,必须选择timestamp作为键,选择logged line作为值。在我们的团队中,我们广泛使用SequenceFile。
对于可拆分lzo,需要对文件进行预处理以生成索引。如果没有索引,mapreduce框架会将整个文件作为一个单独的分割(一个Map器)进行处理,处理效率会很低。
在“hadoop最终指南”一书中(我建议您阅读“压缩”一节),有一节建议使用压缩格式。根据建议,以下是从最有效到最不有效的选择:
容器文件格式,如sequencefile、avro、orcfiles、parquet文件和快速压缩器,如lzo、lz4或snappy
支持拆分的压缩格式:bzip2或可拆分lzo
将文件拆分为块,并使用压缩格式分别压缩每个块