1

Hadoop 目前在其 lib 文件夹中附带 commons-httpclient-3.0.1.jar。

如果我有一个需要 commons-httpclient-3.1.jar 的 map/reduce 任务,将这个 jar 捆绑在我的 hadoop jar 的 lib 文件夹中似乎是不够的(就像任何普通的外部 jar 依赖项一样),因为hadoop似乎是从它的lib文件夹中加载前一个jar,而不是使用我提供的那个。

不能使用hadoop也使用的不同版本的jar吗?

4

2 回答 2

0

如果所有其他方法都失败了,请使用 maven-shade-plugin 重命名 commons-httpclient 的包,以便您拥有自己的包,而 hadoop 拥有它。

于 2010-01-14T19:36:57.177 回答
0

对于 cdh4 hadoop 版本,在 hadoop 配置对象中添加以下代码应该可以解决它。

请注意,这不会解决主代码中的 jar hell(提交之前运行的代码),为了解决这个问题,我想我们应该添加 -D 或将其添加到 hadoop 配置文件中,但我没有检查一下

conf.set("mapreduce.task.classpath.user.precedence", "true");
conf.set("mapreduce.user.classpath.first", "true");
conf.set("mapreduce.job.user.classpath.first", "true");
于 2015-02-05T12:12:03.650 回答