我有一个使用Hadoop API启动各种远程mapreduce作业的jar(即,我不使用命令行来启动作业)。执行各种作业的服务jar是使用maven的“jar-with-dependencies”构建的。
我的工作一切正常,除了使用commons-codec 1.7,我得到:
FATAL org.apache.hadoop.mapred.Child:运行child时出错:java.lang.NoSuchMethodError:org.apache.commons.codec.binary.Base64.encodeAsString([B] Ljava / lang / String;
我认为这是因为我的jar包含commons-codec 1.7而我的Hadoop安装的lib有commons-codec 1.4 ...
他们是否可以通过任何方式指示Hadoop使用分布式commons-codec 1.7(我假设这是作为作业依赖项分发)而不是hadoop 1.0.3核心库中的commons-codec 1.4?
非常感谢!
注意:从我的Hadoop库文件夹中删除commons-codec-1.4.jar确实解决了这个问题,但似乎并不太合理。希望有更好的选择。
答案 0 :(得分:0)
两种方法: