我最近将我的群集从Apache Hadoop1.0升级到CDH4.4.0。我在另一台机器上有一个weblogic服务器,我通过mapreduce客户端将作业提交到这个远程集群。我仍然想使用MR1而不是Yarn。我已经在CDH安装中针对客户端jar编译了我的客户端代码(/ usr / lib / hadoop / client / *)
创建JobClient实例时出现以下错误。 有很多与同一问题相关的帖子,但所有解决方案都指的是将作业提交到本地群集而不是远程的情况,特别是在我的情况下从wls容器。
JobClient jc = new JobClient(conf);
Cannot initialize Cluster. Please check your configuration for mapreduce.framework.name and the correspond server addresses.
但是从群集上的命令提示符运行完全正常。
感谢您的及时帮助!
答案 0 :(得分:17)
我遇到了类似的错误,并将以下jar添加到classpath中,它对我有用:
hadoop-mapreduce-client-jobclient-2.2.0.2.0.6.0-76:hadoop-mapreduce-client-shuffle-2.3.0.jar:hadoop-mapreduce-client-common-2.3.0.jar
答案 1 :(得分:4)
您的应用可能正在查看旧的Hadoop 1.x配置文件。也许你的应用硬编码一些配置?此错误往往表明您正在使用新的客户端库,但他们没有看到新式配置。
它必须存在,因为命令行工具看得很好。检查您的HADOOP_HOME
或HADOOP_CONF_DIR
env变量,尽管命令行工具往往会采用这些变量,但它们可以正常工作。
请注意,您需要在CDH 4.4中安装'mapreduce'服务而不是'yarn',以使其与MR1客户端兼容。另请参阅Maven中的'...- mr1 -...'工件。
答案 2 :(得分:3)
就我而言,此错误是由于版本的jar,请确保您使用的是与服务器版本相同的版本。
答案 3 :(得分:2)
export HADOOP_MAPRED_HOME = / cloudera / parcels / CDH-4.1.3-1.cdh4.1.3.p0.23 / lib / hadoop-0.20-mapreduce
答案 4 :(得分:2)
我是我的情况我正在运行sqoop 1.4.5并将其指向最新的hadoop 2.0.0-cdh4.4.0,其中有纱线的东西也就是为什么它抱怨。
当我将sqoop指向hadoop-0.20 / 2.0.0-cdh4.4.0(我认为是MR1)时,它有效。
答案 5 :(得分:1)
就我而言,奇怪的是这个错误是因为在我的'core-site.xml'文件中,我提到了“IP-address”而不是“hostname”。 我提到“hostname”代替IP地址并在“core-site.xml”和“mapred.xml”中重新安装mapreduce lib文件的那一刻,错误得到了解决。
答案 6 :(得分:0)
与Akshay(由Setob_b评论)一样,我需要修复的就是在类路径上获取hadoop-mapreduce-client-shuffle-.jar。
对于Maven如下:
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-mapreduce-client-shuffle</artifactId>
<version>${hadoop.version}</version>
</dependency>
答案 7 :(得分:0)
就我而言,我通过使用hadoop jar而不是java -jar解决了这个问题。 很有用,hadoop将提供hdfs-site.xml,core-site.xml ...的配置上下文。