一、在本地windows运行
1.配置hadoop环境变量
2.把winutils.exe文件放到%HADOOP_HOME%的bin目录中
3.设置HADOOP_HOME环境变量,需要根据此环境变量获取上面的文件
4.hadoop.dll文件放到c:/windows/System32目录下,否则会报错
5.hadoop-2.6.0\share\hadoop\common\sources目录下hadoop-common-2.6.0-sources.jar文件中找到org\apache\hadoop\io\nativeio下NativeIO.java文件,复制到对应的Eclipse的project, NativeIO.java文件还要在原来的包名下
public static boolean access(String path, AccessRight desiredAccess)
throws IOException {
return access0(path, desiredAccess.accessRight());
}将这里的return …改为return true;
6.以管理员身份启动eclipse
7. 在运行时添加JVM参数 -DHADOOP_USER_NAME=linux上的用户名,如-DHADOOP_USER_NAME=hadoop。否则会报权限错误,因为默认使用windows的当前用户名进行访问的。
8.conf.set(“fs.defaultFS”, “hdfs://node5:9000”);
conf.set(“yarn.resourcemanager.hostname”, “node5”);
二、在hadoop集群上运行
把MapReduce程序导出为jar文件(注意这里只需要到处你所写的.java文件,不用导出lib),在集群中执行该文件:bin/Hadoop jar wc.jar com.gbs.mr.wc.RunJob。
三、在本地直接调用,执行过程在服务器上(真正企业运行环境)
1.把项目打包为jar文件,放到项目的根目录下
2.把core-site.xml,hdfs-site.xml,mapred-site.xml,yarn-site.xml文件放到项目的src目录下
3. 在程序中添加conf.set(“mapreduce.job.jar”, “weather.jar”);目的是把此jar文件发送到其他节点执行
4.执行相应的java文件
五、注意
当出现这种提示时
log4j:WARN No appenders could be found for logger
(org.apache.Hadoop.metrics2.lib.MutableMetricsFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARNSee
http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
解决方法是在项目的src目录下新建一个文件:log4j.properties
内容为:
log4j.rootLogger=info,appender
log4j.appender.appender=org.apache.log4j.ConsoleAppender
log4j.appender.appender.layout=org.apache.log4j.TTCCLayout
刷新项目之后重新运行就可以看到调试信息,而之前的警告信息不见。