Java Hadoop JobClient.runJob:无法初始化群集-错误消息(?)和建议的解决方案

Java Hadoop JobClient.runJob:无法初始化群集-错误消息(?)和建议的解决方案,java,hadoop,mapreduce,cluster-computing,yarn,Java,Hadoop,Mapreduce,Cluster Computing,Yarn,(我现在通过添加本文末尾指定的依赖项解决了这个问题,但想知道是否有更好的替代方案,或者我是否错过了一些重要的东西?) 尝试运行mapreduce作业时,该行 JobClient.runJob(conf) 给出以下错误堆栈: Exception in thread "main" java.io.IOException: Cannot initialize Cluster. Please check your configuration for mapreduce.framework.na

(我现在通过添加本文末尾指定的依赖项解决了这个问题,但想知道是否有更好的替代方案,或者我是否错过了一些重要的东西?)

尝试运行mapreduce作业时,该行

JobClient.runJob(conf)
给出以下错误堆栈:

Exception in thread "main" java.io.IOException: Cannot initialize Cluster. Please check your     configuration for mapreduce.framework.name and the correspond server addresses.
    at org.apache.hadoop.mapreduce.Cluster.initialize(Cluster.java:119)
    at org.apache.hadoop.mapreduce.Cluster.<init>(Cluster.java:81)
    at org.apache.hadoop.mapreduce.Cluster.<init>(Cluster.java:74)
    at org.apache.hadoop.mapred.JobClient.init(JobClient.java:465)
    at org.apache.hadoop.mapred.JobClient.<init>(JobClient.java:444)
    at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:826)
在花费大量时间尝试检查和重新检查我的配置之后,我通过向我的项目添加以下依赖项来解决问题:

hadoop mapreduce客户端jobclient


我在这里遗漏了什么,还是错误消息只是一个特别误导性的消息?

这种类型的配置应该由您的群集管理员完成,并作为站点的一部分提供。它不需要在每个作业中添加。尽管如此,错误消息并不是特别有用,可以改进,但Hadoop中几乎所有的错误消息都是如此…

哇,这是一个非常古老的问题。不过有一个补丁:
public static void main(String[] args) throws IOException {
    JobConf conf = new JobConf(Reduce.class);          
    conf.set("mapreduce.framework.name","yarn");
    conf.set("mapreduce.jobhistory.address","s17.myserver.com:10020");
    conf.set("mapreduce.jobhistory.webapp.address","s17.myserver.com:19888");

    conf.set("yarn.resourcemanager.address","s6.myserver.com:8032");
    conf.set("yarn.resourcemanager.scheduler.address","s6.myserver.com:8030");
    conf.set("yarn.resourcemanager.resource-tracker.address","s6.myserver.com:8031");
    conf.set("yarn.resourcemanager.admin.address","s6.myserver.com:8033");
    conf.set("yarn.resourcemanager.webapp.address","s6.myserver.com:8088");

    /// error on the following line
    JobClient.runJob(conf);
}