我使用的是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中我只能看到一个Map器。我尝试了-dmapred.map.tasks=10,但结果是相同的-单个Map器。
如何让hadoop拆分输入文件并启动几个Map程序进程?
1条答案
按热度按时间ruoxqz4g1#
详细说明我的评论-如果您的文件不在hdfs中,并且您使用本地运行程序运行,那么文件本身将只由单个Map程序处理。
一个大文件通常由多个Map器处理,因为它作为几个块存储在hdfs中。
一个2.5 gb的文件,其块大小为512m,将在hdfs中拆分为~5个块。如果文件是可拆分的(纯文本,或者使用可拆分的压缩编解码器,如snappy,但不是gzip),那么hadoop将启动一个mapper块来处理文件。
希望这有助于解释你所看到的