【问题标题】:MapReduce: Passing external jar files using libjars option does not workMapReduce:使用 libjars 选项传递外部 jar 文件不起作用
【发布时间】:2012-11-21 23:32:25
【问题描述】:

我的 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。

【问题讨论】:

  • 我在遇到同样问题时发现了这个问题。如果我知道我会发布,如果您首先找到确切的分辨率,请执行同样的操作。
  • 查看此处发布的答案:stackoverflow.com/questions/6890087/…

标签: hadoop


【解决方案1】:

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

export HADOOP_CLASSPATH="<extra_entries>:$HADOOP_CLASSPATH"

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

【讨论】:

  • 我也试过 HADOOP_CLASSPATH。它不起作用。在所有节点复制文件是不切实际的。 “-libjars”应该将这些文件复制到所有节点。 “-libjars”对你有用吗?
  • 到目前为止,我从未使用 -libjars 做过,我使用的是单个节点,所以我只是将所需的额外 jar 复制到 lib/ 文件夹(由于您的评论,这不是最好的事情)。如果您可以构建代码,另一种方法是使用所需的 lib 构建一个 fatjar:1)将文件夹 lib/ 添加到项目的根文件夹 2)文件夹 lib/ 应包含所有额外的 .jar 3)为你的项目(.jar)
  • Fatjar 是我做的第一件事。这很好用。现在我正在尝试改进和分离这些 jars 并使用 Hadoop 提供的机制并且 (libjars) 不起作用。
【解决方案2】:

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

【讨论】:

  • 我正在使用完全限定的绝对文件名和 jar 文件中的所有类。
  • 嗨,克里斯!我有一个关于 MapReduce、Hadoop 和 JAR 文件的问题,我真的希望你看看,让我知道你的想法。它在这里:stackoverflow.com/questions/20026170/…。请看一看。 OP:我真的很抱歉被劫持,但我急需帮助。我最诚挚的歉意。
猜你喜欢
  • 2012-08-20
  • 1970-01-01
  • 1970-01-01
  • 2011-03-13
  • 1970-01-01
  • 1970-01-01
  • 2018-06-15
  • 2018-01-07
  • 2012-11-04
相关资源
最近更新 更多