如何使 'hadoop jar' 命令获取同名 jar 的新版本

How to make 'hadoop jar' command pick up new build of a same named jar

我是 hadoop 的新手,我在 hadoop 2.6.0 中尝试了它的示例作为开始。
首先,我重新编译了 hadoop-mapreduce-examples-2.6.0.jar 的源代码并构建了一个新的 jar 文件 MapReduce-0.0.1.jar

然后我用这个命令行运行了 terasort 示例

jjin:hadoop$ bin/hadoop jar ~/shared/MapReduce-0.0.1.jar terasort /input /output
15/01/07 12:27:44 INFO terasort.TeraSort: starting
15/01/07 12:27:46 INFO input.FileInputFormat: Total input paths to process : 1
...

terasort 完成后,我通过像这样修改第一行日志消息来更新 TeraSort.java 的源代码

public int run(String[] args) throws Exception {
LOG.info("starting..."); 
// Update log message by adding '...' to the end of previous one.
Job job = Job.getInstance(getConf());

但是在重新运行这个 terasort 作业后,我发现日志消息并没有变成 'starting...',所以这意味着我对 TeraSort.java 所做的更改没有生效。

问题是如何让 hadoop 接受我构建的新 MapReduce-0.0.1.jar。 谢谢

您必须重新编译并重新构建 jar,然后指定与第一个作业不同的输出目录。