如何在Hadoop程序中使用外部Jar文件

时间:2014-01-24 02:08:50

标签: hadoop mapreduce

我有一个Hadoop程序,其中我使用了几个外部jar文件。当我将程序的jar文件提交到Hadoop集群时,它给出了以下错误。

Exception in thread "main" java.lang.NoClassDefFoundError: edu/uci/ics/jung/graph/Graph
 at java.lang.Class.forName0(Native Method)
 at java.lang.Class.forName(Class.java:247)
 at org.apache.hadoop.util.RunJar.main(RunJar.java:201)

我明白问题是什么,但不知道如何解决它。如何将jar文件添加到我的程序中?

3 个答案:

答案 0 :(得分:0)

我认为,您还可以通过指定JAVA_LIBRARY_PATH或LD_LIBRARY_PATH变量来显式修改作业的运行任务尝试环境:

hadoop jar [主类]       -D mapred.child.env =“LD_LIBRARY_PATH = / path / to / your / libs”...

答案 1 :(得分:0)

您可以在提交以下作业时使用LIBJARS选项:

export LIBJARS=/path/jar1,/path/jar2
hadoop jar my-example.jar com.example.MyTool -libjars ${LIBJARS} -mytoolopt value

我建议您阅读这篇文章,详细描述您正在寻找的内容: http://grepalex.com/2013/02/25/hadoop-libjars/

答案 2 :(得分:0)

将外部jar文件添加到hadoop / lib文件夹中以摆脱它......