我正在使用hadoop streaming和-io typedbytes,并设置mapred.reduce.tasks=2,但最终只得到一个输出文件。如果我设置mapred.reduce.tasks=0,那么我会得到很多输出文件。我很困惑。
所以我的问题是:在流媒体中使用-io typedbytes时,如何使mapred.reduce.tasks=num(num>1)config有效?
ps:我的Map器的输出是(key:string of Python,value:array of 努比)。以及我的.sh文件:
hadoop jar$hadoop\u home/contrib/streaming/hadoop-streaming-1.2.1.jar -d mapred.reduce.tasks=2 -fs local -jt local -io typedbytes -inputformat org.apache.hadoop.mapred.sequencefileasbinaryinputformat -input fft\u sequencefile -output pinvoutput -mapper'pinvmap.py'-file pinvmap.py\
1条答案
按热度按时间e3bfsja21#
通过检查
-fs
以及-jt
我才知道你在试local
模式。在
local
模式下,零或一个减速机可以运行atmost。因为它使用本地文件系统和单个jvm,所以在这种模式下没有hadoop守护进程。
在
psuedo distributed
所有守护程序在同一台计算机上运行的模式,属性-D mapred.reduce.tasks=n
将工作和结果n
异径管。所以你应该用
psuedo distributed
使用多个减速器的模式。希望有帮助!