【问题标题】:Hadoop Mapreduce with two jars (one of the jars is needed on namenode only)带有两个 jar 的 Hadoop Mapreduce(仅在 namenode 上需要一个 jar)
【发布时间】:2014-07-23 10:19:24
【问题描述】:

mapred 任务是一个由 Java 实现的非常简单的“字数统计”(请参阅​​ http://wiki.apache.org/hadoop/WordCount)。

在最后一行之后,“job.waitForCompletion(true);” 我添加了一些由 Jython 实现的代码。

这意味着 Jythoon 的库仅在 namenode 上需要。 但是,我将 Jython 的所有库添加到一个 jar 中,然后 执行它

hadoop jar wordcount.jar in out

字数统计没有任何问题。

我要解决的问题是我必须为从节点(映射器和化简器)不需要的大量 Jython 库。 jar 几乎是 15M(超过 14M 用于 Jython)。

我可以拆分它们并得到相同的结果吗?

【问题讨论】:

    标签: hadoop mapreduce


    【解决方案1】:

    没有人知道这个问题。

    我已经解决了这个问题:即使它不是最好的。

    只需将jython.jar复制到hadoop的默认类路径/usr/local/hadoop(或安装hadoop的路径),然后制作一个没有jython.jar的jar

    如果您需要非常大的库来执行 mapreduce 任务,那么

    1. 将 jython.jar 上传到 hdfs

      hadoop fs -put jython.jar Lib/jython.jar

    2. 在主代码中添加以下代码

      DistributedCache.addFileToClassPath(new URI("Lib/jython.jar"));

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-31
      • 1970-01-01
      相关资源
      最近更新 更多