最近在虚拟机中安装了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
根据我的理解, 你应该有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
######怎么看是不是有2个reduce?我看了参考的网址,上面说的是用代码,可是我现在是运行例子程序,而且是直接用shell脚本运行jar######我找到原因了,是因为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项属性设置去除后就正常了 ######setReduceTaskNum?######我不是用代码去跑的,所以我也不清楚是不是你说的这个,我只是直接命令行运行jar包版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。