10

我最近将我的集群从 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.

但是从集群上的命令提示符运行非常好。

感谢您的及时帮助!

4

8 回答 8

22

我有一个类似的错误,并将以下 jar 添加到类路径中,它对我有用: 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

于 2014-07-30T05:58:13.780 回答
5

您的应用程序可能正在查看您的旧 Hadoop 1.x 配置文件。也许您的应用程序硬编码了一些配置?此错误往往表明您正在使用新的客户端库,但他们没有看到新样式的配置。

它必须存在,因为命令行工具可以很好地看到它们。还要检查您的HADOOP_HOMEHADOOP_CONF_DIR环境变量,尽管这是命令行工具倾向于使用的,并且它们可以工作。

请注意,您需要在 CDH 4.4 中安装“mapreduce”服务而不是“yarn”,以使其与 MR1 客户端兼容。另请参阅 Maven 中的“...-mr1-...”工件。

于 2013-09-30T10:50:48.630 回答
4

就我而言,此错误是由于 jar 的版本造成的,请确保您使用的版本与服务器中的版本相同。

于 2013-10-29T21:36:31.100 回答
2

导出 HADOOP_MAPRED_HOME=/cloudera/parcels/CDH-4.1.3-1.cdh4.1.3.p0.23/lib/hadoop-0.20-mapreduce

于 2014-05-23T06:57:25.070 回答
2

在我的情况下,我正在运行 sqoop 1.4.5 并将其指向最新的 hadoop 2.0.0-cdh4.4.0,它有纱线的东西,这也是它抱怨的原因。

当我将 sqoop 指向 hadoop-0.20/2.0.0-cdh4.4.0(我认为是 MR1)时,它起作用了。

于 2014-08-21T23:44:48.310 回答
2

与 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>
于 2019-09-07T08:54:49.063 回答
1

就我而言,奇怪的是,这个错误是因为在我的“core-site.xml”文件中,我提到了“IP 地址”而不是“主机名”。当我提到“主机名”代替 IP 地址和“core-site.xml”和“mapred.xml”并重新安装 mapreduce lib 文件时,错误得到了解决。

于 2018-02-06T10:54:00.707 回答
1

就我而言,我通过使用 hadoop jar 而不是 java -jar 解决了这个问题。它很有用,hadoop 将提供来自 hdfs-site.xml、core-site.xml 的配置上下文 ....

于 2019-10-28T15:05:24.407 回答