Java 远程运行Hadoop应用程序

Java 远程运行Hadoop应用程序,java,hadoop,yarn,Java,Hadoop,Yarn,我想通过java运行hadoop应用程序 如果我在集群中使用commmandhaddoopjar运行我的应用程序,一切正常。但我需要远程运行作业 我为资源管理器和其他属性设置了如下配置: jobConf.set("yarn.resourcemanager.address", "192.168.111.9:8032"); jobConf.set("mapreduce.framework.name", "yarn"); jobConf.set("fs

我想通过java运行hadoop应用程序

如果我在集群中使用commmand
haddoopjar
运行我的应用程序,一切正常。但我需要远程运行作业

我为资源管理器和其他属性设置了如下配置:

        jobConf.set("yarn.resourcemanager.address", "192.168.111.9:8032");
        jobConf.set("mapreduce.framework.name", "yarn");

        jobConf.set("fs.default.name", "hdfs://192.168.111.9:8020");
        //If not set throws an error regarding to unable to write on /tmp/hadoop-yarn
        jobConf.set("yarn.app.mapreduce.am.staging-dir", "/user");
        jobConf.set("mapreduce.app-submission.cross-platform", "true");
        jobConf.set("mapreduce.application.classpath", "$HADOOP_MAPRED_HOME/*:$HADOOP_MAPRED_HOME/lib/*:$MR2_CLASSPATH:$HADOOP_CLIENT_CONF_DIR:$HADOOP_CONF_DIR:$HADOOP_COMMON_HOME/*:$HADOOP_COMMON_HOME/lib/*:$HADOOP_HDFS_HOME/*:$HADOOP_HDFS_HOME/lib/*:$HADOOP_YARN_HOME/*:$HADOOP_YARN_HOME/lib/*");
        String target = "variables-hadoop-0.0.1-SNAPSHOT.jar";
        jobConf.set("mapreduce.job.jar", target)
但每次我运行应用程序时,都无法访问资源管理器,日志上说:

2017-01-25 19:36:09,998 INFO [main] org.apache.hadoop.yarn.client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8030
2017-01-25 19:36:11,032 INFO [main] org.apache.hadoop.ipc.Client: Retrying connect to server: 0.0.0.0/0.0.0.0:8030. Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)
而且一直在努力很长时间

然后我试着设置属性

jobConf.set(“warn.resourcemanager.scheduler.address”,“192.168.111.9:8030”)

但是抛出了另一个错误

java.lang.IllegalArgumentException: Does not contain a valid host:port authority: 192.168.111.9:8030  (configuration property 'yarn.resourcemanager.scheduler.address')
有什么“简单的方法”可以做到这一点吗?很难发现每个应该设置的属性


我使用Cloudera-Hadoop 2.7在集群上运行,您在调度程序地址的末尾添加了一个空格,这就是为什么会出现
IllegalArgumentException

更改:

jobConf.set("yarn.resourcemanager.scheduler.address", "192.168.111.9:8030 ");
//                                                                       ^


对这就是问题所在。很难从日志中看出,谢谢。
jobConf.set("yarn.resourcemanager.scheduler.address", "192.168.111.9:8030");
//                                                                       ^