带有两个罐子的Hadoop Mapreduce(仅在namenode上需要一个罐子)

时间:2011-04-30 11:55:56

标签: hadoop mapreduce

mapred任务是一个非常简单的'wordcount',由Java实现(plz,见http://wiki.apache.org/hadoop/WordCount)。

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

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

hadoop jar wordcount.jar in out

wordcount没有任何问题。

我想要解决的问题是我必须为Jython提供重型库,这是从属节点(映射器和缩减器)不需要的。 jar几乎是15M(高于14M是Jython)。

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

1 个答案:

答案 0 :(得分:0)

没有人知道这个问题。

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

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

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

  1. 将jython.jar上传到hdfs

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

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

    DistributedCache.addFileToClassPath(新URI(“Lib / jython.jar”));

相关问题