我正在设置lzo编解码器,用作我的hadoop作业中的压缩工具。我知道lzo具有创建可拆分文件的理想功能。但我还没有找到一种方法让lzo自动创建可拆分文件。到目前为止我读过的博客都提到在作业之外使用索引器并输出输出lzo文件作为mapreduce作业的输入。
我正在使用一些hadoop基准测试,我不想更改基准测试代码,只需在hadoop中使用lzo压缩来查看其对基准测试的影响。我打算使用lzo作为压缩映射输出的编解码器,但如果输出不可拆分,则下一阶段必须使节点中的整个压缩输出能够工作。
任何hadoop配置选项指示lzo使输出文件可拆分,所以它是透明的吗?
答案 0 :(得分:3)
BZIP2可以在hadoop中拆分 - 它提供了非常好的压缩比,但是从CPU时间和性能来看并不能提供最佳结果,因为压缩非常耗费CPU。
LZO可以在hadoop中拆分 - 利用hadoop-lzo你可以分割压缩的LZO文件。您需要具有外部.lzo.index文件才能并行处理。该库提供了以本地或分布式方式生成这些索引的所有方法。
LZ4可以在hadoop中拆分 - 利用hadoop-4mc你可以拆分压缩的4mc文件。您不需要任何外部索引,并且您可以使用提供的命令行工具或Java / C代码(内部/外部hadoop)生成存档。 4mc可在任何速度/压缩比级别的hadoop LZ4上使用:从快速模式达到500 MB / s压缩速度到高/超模式,提供更高的压缩比,几乎可与GZIP相媲美。
ZSTD甚至是更好的压缩,也支持hadoop-4mc。
答案 1 :(得分:0)
该项目赋予LZO可分割性 - https://github.com/toddlipcon/hadoop-lzo LZO不是自然可拆分的。 如果你正在使用Cloudera,这里有一篇文章如何安装正确的LZO - http://www.cloudera.com/content/cloudera/en/documentation/core/v5-2-x/topics/cm_ig_install_gpl_extras.html 由于某些许可证问题,默认情况下未安装。
更新5/2:与Cloudera签了同样问题的票。他们告诉我它不透明,必须编入索引。所以它改变了我上面回答的内容。
你可以调查一下https://github.com/carlomedas/4mc - 基于描述它似乎非常有前途。但是Haven还没用过它。它应该透明地拆分。