我已经开始研究 Hadoop。如果我的理解是正确的,我可以处理一个非常大的文件,它会被分割到不同的节点上,但是如果文件被压缩,那么文件就无法分割,并且需要由单个节点处理(有效地破坏了运行一个mapreduce(一个并行机器集群)。
我的问题是,假设上述内容是正确的,是否可以将大文件手动分割为固定大小的块或每日块,压缩它们,然后传递压缩输入文件的列表来执行映射缩减?
BZIP2在hadoop中是可分割的——它提供了非常好的压缩比,但从CPU时间和性能来看并不能提供最佳结果,因为压缩非常消耗CPU。
LZO在hadoop中是可分割的——利用hadoop-lzo https://github.com/twitter/hadoop-lzo您有可分割的压缩 LZO 文件。您需要有外部 .lzo.index 文件才能并行处理。该库提供了以本地或分布式方式生成这些索引的所有方法。
LZ4在hadoop中是可分割的——利用hadoop-4mc https://github.com/carlomedas/4mc您有可分割的压缩 4mc 文件。您不需要任何外部索引,并且可以使用提供的命令行工具或通过 Java/C 代码在 hadoop 内部/外部生成档案。 4mc 可以在 hadoop LZ4 上以任何速度/压缩比级别使用:从达到 500 MB/s 压缩速度的快速模式到提供更高压缩比的高/超模式,几乎可与 GZIP 相媲美。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)