使用两个jar的Hadoop Mapreduce(其中一个jar只需要在namenode上)



映射的任务是一个非常简单的'wordcount',由Java实现(请参阅http://wiki.apache.org/hadoop/WordCount)。

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

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

hadoop jar wordcount.jar in out

字数统计没有任何问题。

我想解决的问题是,我必须为Jython提供大量从节点(映射器和reducer)不需要的库。jar几乎是15M (Jython大于14M)。

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

没有人知道这个问题。

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

简单地,将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(新URI (Lib/jython.jar "));

相关内容

  • 没有找到相关文章

最新更新