如何在hadoop2(yarn)中使用JobClient



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

相关内容

  • 没有找到相关文章

最新更新