hadoop:lzo 压缩的自动可分割输出

标签 hadoop lzo

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

我正在使用一些hadoop基准测试,我不想更改基准测试代码,只是在hadoop中使用lzo压缩来查看其对基准测试的影响。我计划使用 lzo 作为压缩 map 输出的编解码器,但如果输出不可分割,下一阶段将必须在节点中获取整个压缩输出才能工作。

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

最佳答案

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

关于hadoop:lzo 压缩的自动可分割输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16805326/

相关文章:

scala - 了解 Spark 中的闭包和并行性

hadoop - pig UDF或 pig 拉丁或两者兼而有之?

hadoop - 与表锁定相关的 Spark Hive 插入

python - 使用 mrjob 处理 LZO 序列文件

hadoop - LZO-就地在 HDFS 上压缩和索引文件?

csv - 使用spark访问放置在hdfs中的csv文件

scala - 使用 apache Ignite 共享 sparkRDD

java - Hbase 的 LZO 压缩

c# - 用于 lzo.net 的最新版本的 lzo.dll(内存压缩)