开发者社区> 问答> 正文

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

最近在虚拟机中安装了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

展开
收起
montos 2020-06-03 10:20:11 561 0
1 条回答
写回答
取消 提交回答
  • 根据我的理解, 你应该有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包
    2020-06-03 10:20:21
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
《构建Hadoop生态批流一体的实时数仓》 立即下载
零基础实现hadoop 迁移 MaxCompute 之 数据 立即下载
CIO 指南:如何在SAP软件架构中使用Hadoop 立即下载