1

(已解决)我想联系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);
.....

今天搭建了一个伪分布式hadoop2 YARN集群,但是上面的代码不行。我使用资源管理器的端口(8032)。

JobClient jobClient = new JobClient(new InetSocketAddress("127.0.0.1",8032),new JobConf(config));

此行给出异常:线程“main”中的异常 java.io.IOException:无法初始化集群。请检查您的配置以获取 mapreduce.framework.name 和相应的服务器地址。

我搜索此异常,但所有解决方案均无效。我使用 eclipse,并且添加了所有 hadoop jar,包括 hadoop-mapreduce-client-xxx。此外,我可以在我的集群上成功运行示例程序。关于如何在 hadoop2 纱线上使用 JobClient 有什么建议吗?

更新:我可以通过使用与 rm 服务器相同的 hadoop lib 进行编译来解决此问题。在 Eclipse 中它仍然给出这个异常但是在我编译和部署我的项目之后它工作正常。(不知道为什么在 hadoop1 中它在 eclipse 中工作)不需要更改 api,JobClient 在 hadoop2 中仍然运行良好

4

1 回答 1

3

您是否按照以下方式配置了 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 会发生故障。

于 2014-08-01T08:11:31.163 回答