我是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作业后,我发现日志消息未更改为“正在启动...”,因此这意味着我对
TeraSort.java
所做的更改未生效。问题是如何让Hadoop获取我构建的新
MapReduce-0.0.1.jar
。谢谢
最佳答案
您必须重新编译并重新构建jar,然后指定除第一个作业以外的其他输出目录。
关于java - 如何使 'hadoop jar'命令拾取相同名称的jar的新版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27812489/