1.hadoop内置jar包问题:
自己打了一个jar包exp1.jar中重写了WordCount.java和Sort.java
执行一下命令 bin/hadoop jar bin/exp1.jar org.apache.hadoop.examples.WordCount /input /output
发现每次执行的不是我的jar包,而是hadoop库中的WordCount和Sort程序.
解决方案:内置jar包的文件都在org.apache.hadoop.examples/ 下,所以改一下名字就不会读取到内置的包了,例如: 自己的jar文件的程序包结构改成org.apache.hadoop.WordCount,再执行bin/hadoop jar bin/exp1.jar org.apache.hadoop.WordCount /input /output 就不会出错了.
2.hadoop每次执行都会检查output文件夹已存在问题:
hadoop每次都会检查output文件夹是否存在,若存在则报错,特别麻烦,可以在程序中解决,比如在输出之前加上:
// 判断output文件夹是否存在,如果存在则删除
Path path = new Path(otherArgs[otherArgs.length - 1]);
FileSystem fileSystem = path.getFileSystem(conf);// 根据path找到这个文件
if (fileSystem.exists(path)) {
fileSystem.delete(path, true);// true的意思是,就算output有东西,也一带删除
}此方法参考他人,很抱歉已经忘记出处是哪了.
其他问题之后补充.