Hadoop 序列文件中的压缩

Posted

技术标签:

【中文标题】Hadoop 序列文件中的压缩【英文标题】:Compression in Hadoop Sequence File 【发布时间】:2011-11-29 09:40:24 【问题描述】:

我有一些关于 hadoop 顺序文件的基本问题。

1) 默认压缩编解码器将文件压缩到什么程度?

2) 当我读取此文件并将其内容转储到文本文件时,我有 100 MB 的 hadoop 序列文件,我观察到的文本文件大小约为 1GB(可以吗?)

3)读取序列文件时"syncSeen()"的意义是什么? “寻求(多头头寸)” ?如果我在阅读时不使用这些调用有什么问题吗? 关于如何使用这些方法的任何示例?

【问题讨论】:

【参考方案1】:

SequenceFile.Reader#seek 会将阅读器定位在 SequenceFile 中的给定点。

根据Hadoop:The Definitive Guide

同步点是流中的一个点,可用于在读取器“丢失”时与记录边界重新同步 - 例如,在寻找流中的任意位置之后。同步点由 SequenceFile.Writer 记录,在写入序列文件时,每隔几条记录插入一个特殊条目来标记同步点。这样的条目足够小,只会产生适度的存储开销——不到 1%。同步点始终与记录边界对齐。

SequenceFile.Reader#syncseen 将在读取 SequenceFile 时判断是否已通过同步标记。

【讨论】:

读取hadoop序列文件时是否需要使用syncseen?如果我们不使用它可能会遇到什么问题? 我很好奇记录如何与块边界对齐,这对我来说是最重要的。有没有一种机制可以确保这一点?

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

hadoop文件格式和压缩

hadoop中的序列文件是啥?

Hadoop 解压缩目录中的文件并将每个文件单独移动到另一个文件夹

反序列化内存中的 Hadoop 序列文件对象

如何使用 LZO 以外的压缩处理 Hadoop Map/Reduce 中的协议缓冲区文件?

查找用于 hadoop 文件的压缩编解码器