1、MapReduce程序要在主函数中加入如下代码,才可以真正地实现分布式的运行,不然是本地的伪分布式运行:
Searchconf.set("hadoop.job.user","cy"); //设置用户
Searchconf.set("mapred.job.tracker", "localhost:9001"); //jobtracker所在的主机名和端口
这时在hadoop集群上运行的时候可以看到:16/06/16 21:05:36 INFO mapred.JobClient: Running job: job_201606112006_0006(真正分布式运行时)
不然显示的是:16/06/17 10:29:02 INFO mapred.JobClient: Running job: job_local_0001(伪分布式运行时)
2、每次运行完MapReduce程序后,都会生成输出文件夹,再次运行该MapReduce程序时,要手动去删掉该输出文件夹,这样子很麻烦,在MapReduce程序的主函数中加入如下代码就可以实现每次运行的时候自动删除上次生成的输出文件夹:
/*此块用于处理hdfs中输出文件已存在的问题。判断是否存在,存在则删除。引入import org.apache.hadoop.fs.FileSystem;*/
FileSystem fs = FileSystem.get(conf);
if(fs.exists(new Path(args[1]))){
System.out.println(args[1]+" exist!!!");
//System.exit(1);
if(fs.delete(new Path(args[1]))) System.out.println("deleted "+args[1]+"!!!");
}
3、在MapReduce项目中引入jar包的时候,不要引入不相关的一些jar包,可能会发生jar包冲突