我听说我们可以使用多个Map器在hadoop中并行读取一个bzip2文件的不同部分,以提高性能。但我找不到相关的样本。如果有人能告诉我相关的代码片段,我将不胜感激。谢谢。顺便说一句:is gzip具有相同的特性(多个Map器并行处理一个gzip文件的不同部分)。
disho6za1#
您可以在pbzip2中查找并行bz2压缩和解压缩的示例。还有一个平行的gzip,pigz。它执行并行压缩,但不执行并行解压缩。deflate格式不适合并行解压缩。但是,您可以a)准备一个带有历史重置的特殊gzip流,或者b)您可以在第一次传递时将索引构建到gzip文件中。无论哪种方式,您都可以并行读取不同的部分,或者进行更有效的随机访问。
1rhkuytd2#
如果你看:http://comments.gmane.org/gmane.comp.jakarta.lucene.hadoop.user/30662,您会发现bzip2格式确实是可拆分的,多个Map器可以在一个文件上工作。此修补程序提交于:https://issues.apache.org/jira/browse/hadoop-4012. 但是,它似乎只在hadoop0.21.0之上可用。从个人经验来看,为了使用bzip2的这种技术,您需要做的事情没有什么不同。hadoop应该根据您的最小拆分大小自动选取它。bzip2按块压缩数据,因此可以按块解压缩数据,并将每个块发送到单独的Map器。但是,gzip没有这样的技术,因此不能将其发送到不同的Map器。
2条答案
按热度按时间disho6za1#
您可以在pbzip2中查找并行bz2压缩和解压缩的示例。
还有一个平行的gzip,pigz。它执行并行压缩,但不执行并行解压缩。deflate格式不适合并行解压缩。但是,您可以a)准备一个带有历史重置的特殊gzip流,或者b)您可以在第一次传递时将索引构建到gzip文件中。无论哪种方式,您都可以并行读取不同的部分,或者进行更有效的随机访问。
1rhkuytd2#
如果你看:http://comments.gmane.org/gmane.comp.jakarta.lucene.hadoop.user/30662,您会发现bzip2格式确实是可拆分的,多个Map器可以在一个文件上工作。此修补程序提交于:https://issues.apache.org/jira/browse/hadoop-4012. 但是,它似乎只在hadoop0.21.0之上可用。
从个人经验来看,为了使用bzip2的这种技术,您需要做的事情没有什么不同。hadoop应该根据您的最小拆分大小自动选取它。
bzip2按块压缩数据,因此可以按块解压缩数据,并将每个块发送到单独的Map器。但是,gzip没有这样的技术,因此不能将其发送到不同的Map器。