(已解决)我想联系hadoop集群并获取一些工作/任务信息。
在hadoop1中,我能够使用JobClient(本地pesudo分布式模式,使用Eclipse):
JobClient jobClient = new JobClient(new InetSocketAddress("127.0.0.1",9001),new JobConf(config));
JobID job_id = JobID.forName("job_xxxxxx");
RunningJob job = jobClient.getJob(job_id);
.....
今天我设置了一个pesudo分布式hadoop2 YARN集群,但是,上面的代码并不起作用。我使用资源管理器的端口(8032)。
JobClient jobClient = new JobClient(new InetSocketAddress("127.0.0.1",8032),new JobConf(config));
这一行给出了异常: 线程" main"中的例外情况java.io.IOException:无法初始化Cluster。请检查您的配置mapreduce.framework.name和相应的服务器地址。
我搜索此异常,但所有解决方案都无效。我使用eclipse,并且添加了所有hadoop jar,包括hadoop-mapreduce-client-xxx。此外,我可以在我的群集上成功运行示例程序。 关于如何在hadoop2纱线上使用JobClient的任何建议?
更新:我能够通过使用与rm服务器相同的hadoop lib进行编译来解决此问题。在Eclipse中,它仍然提供了这个异常但是在我编译和部署我的项目之后它运行正常。(不知道为什么在hadoop1中它在eclipse中工作)没有必要更改api,JobClient在hadoop2中仍然运行良好
答案 0 :(得分:3)
您是否配置了mapred-site.xml文件,如下所示?它位于$ HADOOP_HOME / etc / hadoop / in hadoop 2.x
中<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
编辑:还要确保您的yarn-site.xml(相同位置)包含以下属性:
<property>
<name>yarn.resourcemanager.address</name>
<value>host:port</value>
</property>
最后一件事:我强烈建议您使用主机名而不是IP。在配置文件中设置IP时,已知hadoop失败的情况。