设置减速器的数量不起作用

时间:2015-01-06 03:08:15

标签: python hadoop streaming

我正在使用带有-io typedbytes的Hadoop流并设置mapred.reduce.tasks = 2,但我最终只得到一个输出文件。如果我设置mapred.reduce.tasks = 0,那么我有很多输出文件。我很困惑。

我的问题是:      当我在流媒体中使用-io typedbytes时,如何使mapred.reduce.tasks = num(num> 1)配置有效?

PS:我的映射器的输出是(键:python的字符串,值:numpy的数组)。 我的.sh文件:
hadoop jar $ HADOOP_HOME / contrib / streaming / hadoop-streaming-1.2.1.jar \ -D mapred.reduce.tasks = 2 \ -fs本地\ -jt当地 -io typedbytes \ -inputformat org.apache.hadoop.mapred.SequenceFileAsBinaryInputFormat \ - 输入FFT_SequenceFile \ - 输出pinvoutput \ -mapper'pinvmap.py'\ -file pinvmap.py \

1 个答案:

答案 0 :(得分:0)

-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模式来处理多个Reducer 希望它有所帮助!