Hadoop块压缩

Posted

技术标签:

【中文标题】Hadoop块压缩【英文标题】:Hadoop block compression 【发布时间】:2017-06-29 09:11:02 【问题描述】:

我不太了解 hadoop 中块压缩的概念。假设我有一个 1Gb 的数据,我想以块压缩序列文件的形式写入,默认的 HDFS 块大小为 128Mb。

这是否意味着,我的数据在 HDFS 上被拆分为 8 个压缩块,并且这些块中的每一个都可以在以后独立解压缩?

【问题讨论】:

这个链接可能对这个***.com/questions/34953756/…有帮助 我不认为序列文件中的块压缩和 HDFS 块相关。块压缩只是 SeqFiles 提供的两种压缩类型之一,另一种是记录压缩。记录补偿。一次是一条记录,并且块压缩。一次是多条记录。它与您的块大小没有任何关系。我可能错了。 这正是我的问题,感谢您指出。有人可以给我一个参考,说明序列文件中的块压缩是否与 hdfs 块相关? 我找到了答案here。 [...]“此外,这里对块的引用与 HDFS 或文件系统块无关。块压缩中的块是指在单个 HDFS 块中一起压缩的一组记录。” 【参考方案1】:

这一切都取决于是否设置了 splittable 。 (例如,Gzip 不支持拆分。)

可拆分意味着 hdfs 块可以并行解压缩,并且 对于序列文件解压缩,块不需要位于同一位置。

此外,如果您使用块压缩,则压缩记录可能会跨越多个块,因此,再次需要在同一位置进行解压缩。

因此您的块可能会或可能不会独立解压缩。

【讨论】:

以上是关于Hadoop块压缩的主要内容,如果未能解决你的问题,请参考以下文章

为啥 hadoop 不能拆分一个大文本文件,然后使用 gzip 压缩拆分?

20180601早课记录23-Hadoop

HadoopLZO压缩配置

Hadoop 数据压缩

hadoop 数据压缩

Hadoop压缩codec