使用单映射器的Hadoop流媒体

使用单映射器的Hadoop流媒体,hadoop,hadoop-streaming,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 ou

我正在使用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拆分我的输入文件并启动几个映射程序进程?

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

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

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


希望这有助于解释您看到的是什么

您的2.5 GB txt文件,它是gzip压缩的吗?您是否在hadoop的伪实例上运行(并且只有一个map和reduce插槽)?文件没有Gzip,但是的,我没有运行任何hadoop demons,也没有使用HDFS…在“real”集群上进行了尝试,只有一个节点,结果相同-单mapper processChris,问题恰恰是因为我处于伪实例模式。我已经正确配置了单节点集群,现在一切正常。请张贴答案,以便我选择;)