我最近将集群从apachehadoop1.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.
但是在集群上从命令提示符运行是非常好的。
感谢您及时的帮助!
8条答案
按热度按时间cunj1qz11#
与akshay(setob\u b的评论)一样,我所需要解决的就是在我的类路径上获得hadoopmapreduce客户端shuffle-.jar。
maven如下:
cgfeq70w2#
在我的例子中,这个错误是由于jars的版本造成的,请确保您使用的是与服务器中相同的版本。
8yparm6h3#
在我的案例中,我运行了sqoop1.4.5,并将其指向最新的hadoop2.0.0-cdh4.4.0,其中包含了Yarn的内容,这也是它抱怨的原因。
当我将sqoop指向hadoop-0.20/2.0.0-cdh4.4.0(我认为是mr1)时,它起了作用。
qvtsj1bj4#
很可能您的应用程序正在查看旧的Hadoop1.x配置文件。也许你的应用程序硬编码了一些配置?此错误倾向于表明您正在使用新的客户机库,但它们没有看到新样式的配置。
它必须存在,因为命令行工具可以很好地看到它们。检查您的
HADOOP_HOME
或者HADOOP_CONF_DIR
env变量也是如此,尽管这是命令行工具倾向于使用的,而且它们可以工作。请注意,您需要安装“mapreduce”服务,而不是cdh4.4中的“yarn”,以使其与mr1客户端兼容。另请参见maven中的“…-mr1-…”工件。
jhkqcmku5#
导出hadoop\u mapred\u home=/cloudera/parcels/cdh-4.1.3-1.cdh4.1.3.p0.23/lib/hadoop-0.20-mapreduce
fcg9iug36#
在我的例子中,我通过使用HadoopJAR而不是java-jar来解决这个问题。它很有用,hadoop将提供hdfs-site.xml、core-site.xml….中的配置上下文。。。。
6psbrbz97#
在我的例子中,奇怪的是,这个错误是因为在我的“core site.xml”文件中,我提到了“ip地址”而不是“主机名”。当我在“core site.xml”和“mapred.xml”中提到用“hostname”代替ip地址并重新安装mapreduce lib文件时,错误得到了解决。
5gfr0r5j8#
我有一个类似的错误,并将以下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