hadoop2.2.0集群运行wordcount例子生成2个结果文件

asus 发布于 2014/03/18 14:01
阅读 736
收藏 0
最近在虚拟机中安装了Hadoop2.2.0的集群,nameNode是redhat的,dataNode是ubuntu的,起服务进程都是正常的,通过JPS和50070都可以正常访问,运行例子wordcount后发现在输出文件夹里生成了2个结果文件,part-r-00000,part-r-00001,这2个文件里的内容完全不一样,就是把单词统计结果分别存到了2个文件中,结果是正确的,但是分在了2个文件中。请教大神,这会是什么问题导致的?SSH方面我配置了nameNode可以免登陆到dataNode,副本那个参数我配置了2,虽然只有1台dataNode
加载中
0
j
jp029

根据我的理解, 你应该有2个reducer 这两个reducer 分别输出这两个文件。

可以参考 MultipleOutputs api文档 进行重命名 或者 其他处理:

http://hadoop.apache.org/docs/r2.3.0/api/org/apache/hadoop/mapreduce/lib/output/MultipleOutputs.html

另见解释

http://stackoverflow.com/questions/10924852/map-reduce-output-files-part-r-and-part

a
asus
怎么看是不是有2个reduce?我看了参考的网址,上面说的是用代码,可是我现在是运行例子程序,而且是直接用shell脚本运行jar
0
a
asus

我找到原因了,是因为mapred-site.xml中我配的了mapred.map.tasks和mapred.reduce.tasks。

<property>

 <name>mapred.map.tasks</name>

 <value>10</value>

 <description>As a rule of thumb, use 10x the number of slaves(i.e., number of tasktrackers).

  </description>

</property>

<property>

 <name>mapred.reduce.tasks</name>

 <value>2</value>

 <description>As a rule of thumb, use 2x the number of slaveprocessors (i.e., number of tasktrackers).

  </description>

</property>

我查了这个属性的设置是需要根据硬件环境相关的并发数,可能我设置的数量不正确导致,我把这2项属性设置去除后就正常了

0
若然的生死
若然的生死
setReduceTaskNum?
a
asus
我不是用代码去跑的,所以我也不清楚是不是你说的这个,我只是直接命令行运行jar包
返回顶部
顶部