【问题标题】:hadoop: automatic splittable output from lzo compressionhadoop:来自 lzo 压缩的自动可拆分输出
【发布时间】:2013-05-29 04:07:02
【问题描述】:

我正在设置 lzo 编解码器以用作我的 hadoop 作业中的压缩工具。我知道 lzo 具有创建可拆分文件的理想功能。但我还没有找到让 lzo 自动创建可拆分文件的方法。到目前为止,我阅读的博客都提到在作业之外使用索引器并将输出 lzo 文件作为 mapreduce 作业的输入。

我正在使用一些我不想更改基准代码的 hadoop 基准,只需在 hadoop 中使用 lzo 压缩来查看它对基准的影响。我打算使用 lzo 作为编解码器来压缩地图输出,但如果输出不可拆分,下一阶段将必须在节点中获取整个压缩输出才能工作。

是否有任何 hadoop 配置选项来指示 lzo 使输出文件可拆分,从而透明地完成?

【问题讨论】:

  • 它需要另一个 map-reduce 作业来构建 LZO 索引。这就是我们使用 Snappy 的原因 :)
  • 谢谢! lzo-dev 的人应该考虑创建自动索引压缩输出的选项。
  • @Klass Ivan,你确定 Snappy 会创建可拆分的输出吗?我去检查了更多细节,它与 lzo 相似,输出不可随机搜索。
  • 不,它没有。很抱歉造成混淆:\ 这是一篇比较 LZO 和 Snappy 的有用文章:blog.cloudera.com/blog/2011/09/snappy-and-hadoop

标签: hadoop lzo


【解决方案1】:

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 也支持。

【讨论】:

  • 谢谢,有这些工具比较优势的网址吗?
【解决方案2】:

这个项目提供了 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 - 根据描述,它似乎很有希望。不过还没用过。它应该是透明的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-08
    • 2013-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多