0

我正在使用 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

“数据”是 2.5 GB 的 txt 文件。

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

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

4

1 回答 1

1

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

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

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

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

于 2012-11-29T11:15:53.050 回答