Hadoop流式传输与单映射器

时间:2012-11-28 12:28:05

标签: hadoop hadoop-streaming

我正在使用Hadoop流媒体,我启动脚本如下:

../hadoop/bin/hadoop jar ../hadoop/contrib/streaming/hadoop-streaming-1.0.4.jar \
        -mapper ../tests/mapper.php     \
        -reducer ../tests/reducer.php   \
        -input data                     \
        -output out

“data”是2.5 GB的txt文件。

然而在ps axf中,我只能看到一个映射器。我尝试使用-Dmapred.map.tasks = 10,但结果是相同的 - 单个映射器。

如何让hadoop拆分输入文件并启动多个映射器进程?

2 个答案:

答案 0 :(得分:1)

尝试查看InputFormat选项。我自己只是简单地阅读它(因为我正在为自己的工作查看OutputFormat),但我的理解是你可以将一个大的输入文件拆分成较小的任务,然后你可以单独运行映射器。

希望本文能为您提供更多见解:http://www.infoq.com/articles/HadoopInputFormat

答案 1 :(得分:1)

详细说明我的评论 - 如果您的文件不在HDFS中,并且您正在使用本地运行器运行,则文件本身将仅由单个映射器处理。

大文件通常由多个映射器处理,因为它作为几个块存储在HDFS中。

块大小为512M的2.5 GB文件将被拆分为HDFS中的~5个块。如果文件是可拆分的(纯文本,或使用可拆分压缩编解码器,如snappy,但不是gzip),那么hadoop将为每个块启动一个映射器来处理该文件。

希望这有助于解释您所看到的内容