我使用-io类型字节和设置mapred.reduce.tasks=2的Hadoop流,但最后只有一个输出文件。如果我设置了mapred.reduce.tasks=0,那么我得到了许多输出文件。我很困惑。
因此,我的问题是:如何使mapred.reduce.tasks = num (num >1)配置在流中使用-io类型字节时有效?
PS:我的映射器的输出是(键: python字符串,value:numpy数组)。我的.sh文件:
hadoop $HADOOP_HOME/contrib/streaming/hadoop-streaming-1.2.1.jar \ -D mapred.reduce.tasks=2 \ -fs局部\ -jt局部\ -io类型字节\ -inputformat、FFT_SequenceFile \ -input FFT_SequenceFile\ -output pinvoutput \ -mapper ' pinvmap.py‘\ -file pinvmap.py\
发布于 2015-01-06 15:31:25
-D mapred.reduce.tasks=2 \ -fs local \ -jt local通过检查-fs和-jt的值,我知道您正在local模式下运行它。
在local模式下,无论是零还是一个减速器都可以运行在最多的上。
因为它使用本地文件系统和一个JVM,所以在这种模式下没有Hadoop守护进程。
在psuedo distributed模式中,所有守护进程都运行在同一台机器上,属性-D mapred.reduce.tasks=n将工作并导致n减缩器。
因此,您应该使用psuedo distributed模式来处理多个减速器。
希望能帮上忙!
https://stackoverflow.com/questions/27791510
复制相似问题