【问题标题】:BZip2 file read in Hadoop在 Hadoop 中读取的 BZip2 文件
【发布时间】:2013-03-09 23:15:35
【问题描述】:

我听说我们可以使用多个映射器在 Hadoop 中并行读取一个 bzip2 文件的不同部分,以提高性能。但我搜索后找不到相关样本。感谢是否有人能指出我相关的代码 sn-p。谢谢。

顺便说一句:gzip 是否具有相同的功能(多个映射器并行处理一个 gzip 文件的不同部分)。

【问题讨论】:

    标签: hadoop gzip mapper bzip2


    【解决方案1】:

    如果您查看:http://comments.gmane.org/gmane.comp.jakarta.lucene.hadoop.user/30662, 您会发现 bzip2 格式确实是可拆分的,并且多个映射器可以在一个文件上工作。补丁提交于:https://issues.apache.org/jira/browse/HADOOP-4012。但是,它似乎仅在 HADOOP 0.21.0 以上可用。

    根据个人经验,要使用这种 bzip2 技术,您无需做任何不同的事情。 hadoop 应该根据您的最小拆分大小自动选择它。

    bzip2 按块压缩数据,因此可以按块解压缩并将每个块发送到单独的映射器。但是,gzip 没有这种技术,因此无法将其发送到不同的映射器。

    【讨论】:

    • 感谢 Varun,“但是,gzip 没有这种技术,因此无法将其发送到不同的映射器。” -- 是否有任何 Hadoop 文档声称?
    • 正如我所说,不可能并行解压缩 gzip,除非您已经串行解压缩同一个文件并构建了入口点映射 gzip 文件已经为并行解压缩做了专门的准备,这需要为此目的定制软件。
    • @Varun Shingal 是否必须将 bzip2 添加到 hadoop 才能使用它,还是默认情况下它与 hadoop 一起提供?谢谢!
    • @theexplorer Hadoop 支持这一点,我认为默认情况下,自 2010 年发布 0.21.0 以来。太棒了。 issues.apache.org/jira/browse/HADOOP-4012
    【解决方案2】:

    您可以查看pbzip2 以获取并行 bz2 压缩和解压缩的示例。

    还有一个并行的 gzip,pigz。它进行并行压缩,但不进行并行解压缩。 deflate 格式不适合并行解压缩。但是,您可以 a) 准备一个带有历史重置的特殊 gzip 流,或者 b) 您可以在第一遍时将索引构建到 gzip 文件中。无论哪种方式,您都可以并行读取不同的部分,或者进行更有效的随机访问。

    【讨论】:

    • 感谢 Mark 提供详细信息。实际上我要问的是如何在 Hadoop 上使用 bzip2 和 gzip 格式。例如,如何使用多个mapper在多个mapper中并行读取一个bzip2文件。
    • 我想通了。您可以先看看它是如何在 C 中完成的。
    • 我不确定 Hadoop 是否内置了支持多个映射器并行读取一个 bzip2 或 gzip 文件的功能?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    相关资源
    最近更新 更多