当前位置:  开发笔记 > 编程语言 > 正文

关于Hadoop和压缩输入文件的基本问题

如何解决《关于Hadoop和压缩输入文件的基本问题》经验,为你挑选了2个好方法。

我已经开始研究Hadoop了.如果我的理解是正确的,我可以处理一个非常大的文件,它会分裂到不同的节点,但是如果文件被压缩,那么文件就无法分割,而且需要由单个节点处理(有效地破坏了优势)运行mapreduce ver并行机器集群).

我的问题是,假设上述内容是正确的,是否可以手动将固定大小的块或每日块拆分大文件,压缩它们然后传递压缩输入文件列表以执行mapreduce?



1> Carlo Medas..:

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相媲美.


LZ4不能在Hadoop中拆分.4mc是使用LZ4的文件格式,很像LZ4有自己的Frame格式,4mc文件格式是可拆分的.它的重要的是使这种区别:实际.lz4文件未在Hadoop的可分裂:https://issues.apache.org/jira/browse/HADOOP-12990.

2> 小智..:

考虑使用LZO压缩.它是可分割的.这意味着许多映射器可以处理大的.lzo文件.Bzip2可以做到这一点,但它很慢.

Cloudera 介绍了它.对于MapReduce,LZO在压缩比和压缩/解压缩速度之间取得了良好的平衡.


LZO不是单独拆分的.您必须运行单独的进程来索引LZO文件,以便压缩块与输入拆分正确对齐.看看页面最后一行的小宝贝:https://github.com/kevinweil/hadoop-lzo
@Luis但请记住,LZO已获得GPL许可,因此适用常规条款和条件.另一种选择是使用谷歌的Snappy压缩.[Google Snappy](http://code.google.com/p/snappy/)它默认打包与Hadoop(我使用0.20.x)和其他生态系统框架,如Apache Flume等,默认情况下也很好理解.
推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有