带有两个 jar 的 Hadoop Mapreduce(仅在 namenode 上需要其中一个 jar)

发布于 2024-11-04 18:32:52 字数 505 浏览 1 评论 0原文

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

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

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

hadoop jar wordcount.jar in out

wordcount就完成了,没有任何问题。

我想解决的问题是我必须为 Jython 提供大量库,而从属节点(映射器和化简器)不需要这些库。 jar 几乎有 15M(Jython 超过 14M)。

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

The mapred task is a very simple 'wordcount' implemented by Java (plz, see http://wiki.apache.org/hadoop/WordCount ).

after the last line, "job.waitForCompletion(true);"
I add some code implemented by Jython.

It means the libraries for Jythoon is only needed on namenode.
However, I added all libraries for Jython to a single jar, and then
executed it

hadoop jar wordcount.jar in out

The wordcount is done without any problem.

The problem I want to solve is I have to heavy libraries for Jython that is not needed for the slave nodes(mappers and reducers). the jar is almost 15M (upper than 14M is for Jython).

Can I split them, and get the same results?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

百变从容 2024-11-11 18:32:52

没有人知道这个问题。

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

简单地说,将 jython.jar 复制到 /usr/local/hadoop (或安装 hadoop 的路径),这是 hadoop 的默认类路径,并制作一个没有 jython.jar 的 jar

如果您需要非常大的库来映射减少任务,那么

  1. 将jython.jar上传到hdfs

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

  2. 将以下行添加到您的主代码

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

Nobody knows this question.

I've solved this problem as follows: even if it's not the best.

Simply, copy jython.jar to /usr/local/hadoop (or path of hadoop installed) which is the default classpath of hadoop, and make a jar without jython.jar

If you need very big libraries to mapreduce task, then

  1. upload jython.jar to hdfs

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

  2. add the follow line to your main code

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文