2

我的 map reduce 程序需要外部 jar 文件。我正在使用“-libjars”选项来提供那些外部 jar 文件 -

我使用了 hadoop 提供的 Tool、Configured 和 ToolRunner Utilities。

  public static void main(String[] args)throws Exception {
         int res = ToolRunner.run(newConfiguration(), new MapReduce(),args);
         System.exit(res);
  }

  @Override
  public int run(String[] args) throwsException {
         // Configuration processed by ToolRunner
   Configuration conf = getConf();
   Job job = new Job (conf, "MapReduce");
   ....
   }

当我试图运行这项工作时 -

$ Hadoop jar myjob.jar jobClassName -libjars external.jar

它引发了以下异常。

21 年 12 月 11 日 16:26:02 信息 mapred.JobClient:任务 ID:尝试_201211211620_0001_m_000000_1,状态:失败错误:java.lang.ClassNotFoundException:org.joda.time.format.DateTimeFormatterBuilder

我一直在尝试解决它一段时间。到目前为止似乎没有任何效果。我正在使用 CDH 4.1.1。

4

2 回答 2

1

似乎找不到 JodaTime。打开/etc/hbase/hbase-env.sh并将您的额外 jar 添加到HADOOP_CLASSPATH.

export HADOOP_CLASSPATH="<extra_entries>:$HADOOP_CLASSPATH"

另一个效率较低且有时不可能的想法是将您需要的 jar 复制到/usr/share/hadoop/lib.

于 2012-11-23T23:38:04.453 回答
0

尝试使用 external.jar 的完全限定绝对文件名调用命令。还要确认缺少的类及其所有必备类都在 external.jar 中。

于 2012-11-22T00:06:47.607 回答