(已解决)我想联系hadoop集群并获得一些工作/任务信息。
在hadoop1中,我可以使用JobClient(本地伪分布式模式,使用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);
.....
今天我设置了一个伪分布式hadoop2 YARN集群,但是,上面的代码不起作用。我使用资源管理器的端口(8032)。
JobClient jobClient = new JobClient(new InetSocketAddress("127.0.0.1",8032),new JobConf(config));
这行给出了异常:java.io.IOException:无法初始化Cluster。请检查您的配置mapreduce.framework.name和相应的服务器地址。
我搜索了这个例外,但所有的解决方案都不起作用。我使用eclipse,并添加了所有hadoop jar,包括hadoop-mapreduce-client-xxx。此外,我可以成功地在我的集群上运行示例程序。关于如何在hadoop yarn上使用JobClient有什么建议吗?
更新:我能够通过与rm服务器相同的hadoop库编译来解决这个问题。在Eclipse中,它仍然给出这个异常,但在我编译和部署我的项目之后,它工作得很好。(不确定为什么在hadoop1中它可以在eclipse中工作)不需要更改api, JobClient在hadoop2中仍然运行良好
您是否按以下方式配置了mapred-site.xml文件?它位于hadoop 2.x中的$HADOOP_HOME/etc/hadoop/
<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失败