mapreduce任务仅在namenode上运行

时间:2015-04-20 09:11:40

标签: hadoop mapreduce

我在三台机器上构建了一个Hadoop集群;这些是特征:

  • OS:Ubuntu14.04LTS
  • 的Hadoop:2.6.0
  • NameNode和ResourceManager IP:namenode / 192.168.0.100
  • DataNode也作为NodeManger IP:data1 / 192.168.0.101,data2 / 192.168.0.102

我已将所有xml文件作为官方文档进行了识别。当我在eclipse中执行wordcount示例程序时,我想显示运行mapTask或reduceTask的机器信息,所以这是我的代码片段。

//get localhost
InetAddress mLocalHost = InetAddress.getLocalHost();
System.out.println("Task on " + mLocalHost);
片段上方的

被放入map并减少函数并在hadoop上运行它。然而,控制台始终显示:

Task on namenode/192.168.0.100

从我的角度来看,这些任务应该在data1或data2上运行。你能解释这个难题吗?我的群集有什么问题?

还有什么?

jobHistory(namenode:19888)什么都没记录。

和webAppProxy(namenode:8088)只显示活动节点:2,但没有更多关于作业的信息。

你可以帮帮我吗?真的很感激。

namenode'下面的进一步信息,

jps命令show:

12647 Jps

11426 SecondaryNameNode

11217 NameNode

11585 ResourceManager

12033 JobHistoryServe

2 个答案:

答案 0 :(得分:0)

你把代码放在哪里,是否在你的Driver类中?您需要在mapper或reducer中使用它,以便可以看到正在处理的节点。

您可以在rmipaddress:8088查看资源管理器web ui,而不是这样,它将为您提供有关哪个节点正在执行映射器和其他日志的更多详细信息。

答案 1 :(得分:0)

我发现我的问题出了什么问题。 "在hadoop"上运行在Eclipse中只是在本地启动作业,所以我应该修改Eclipse插件下的MyHadoopXML.xml文件。子目录。否则,我只是在本地开发和调试mapreduce作业并将项目导出到一个jar中,然后使用" hadoop jar"的命令运行jar。在群集中验证作业是否成功执行。