在eclipse中写mapreduce程序, 引用第三方jar文件, 可以利用eclipse hadoop插件直接run on hadoop提交, 很方便. 不过插件版本要和eclipse匹配, 不然总是local执行, 在50070是没有job产生的.
如果希望将程序发布成jar文件, 在namenode上通过命令行方式执行, 缺少了eclipse帮忙自动配置jar文件, 会遇到java.lang.ClassNotFoundException, 这个问题可分成两种情况讨论.
一. hadoop命令式如何执行的?
其实$HADOOP_HOME/bin/hadoop是一个脚本文件. 以下wordcount命令为例
bin/hadoop jar wordcount.jar myorg.WordCount /usr/wordcount/input /usr/wordcount/output
脚本文件解析参数, 配置类路径等, 最终执行的是如下命令:
exec java -classpath $CLASSPATH org.apache.hadoop.util.RunJar $@