bash - Gzip:将一组小文件(<64mb)合并为几个大文件(64mb或128mb)

标签 bash hadoop gzip hdfs

我大约有14000个.gz小文件(从90kb到4mb),这些文件都被加载到HDFS中的同一目录中。

因此,每个文件的大小都与HDFS的标准64mb或128mb块大小相差甚远,这在运行处理这些文件的MR作业时会导致严重的麻烦(“小文件问题”,请参阅cloudera的this博客文章)。 。

前面提到的博客文章包含许多针对此问题的解决方案,主要涉及编写MapReduce作业或使用Hadoop存档(HAR)。

但是,我想从源头上解决问题,并将小文件合并为64mb或128mb .gz文件,然后将其直接馈入HDFS。

最简单的方法是什么?

最佳答案

cat small-*.gz > large.gz

应该足够了。假设您不需要从那里提取单独的文件,那么数据就足够了。

如果您想要单独的文件,只需对其tar:
tar cf large.tar small-*.gz

关于bash - Gzip:将一组小文件(<64mb)合并为几个大文件(64mb或128mb),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17175875/

相关文章:

hadoop - 如何从其他计算机的配置单元远程/连接hbase表

python - 使用 gzip 压缩图像文件

http - 使用 gzip 编码数据时应该发送多长的内容?

bash : Remove deleted command entry for ranger

git - 如何为 bash 脚本编写基于 Web 的 GUI?

hadoop - 如何在Hadoop中缩小HDFS的大小

postgresql - 恢复 Windows 7 32 位操作系统上安装的 postgresql 9.1 中的 .gz 备份文件

regex - 正则表达式末尾的 "\2"是什么意思

linux - 在 Linux 上使用列名 = 文件名将多个文件中的列添加到新文件

hadoop - 一台机器上的 pig