mapreduce程序本地模式调试

时间:2024-03-16 22:47:11

1.材料

无jar版windows平台hadoop-2.6.1.zip

eclipse

解压

2  .配置环境变量


mapreduce程序本地模式调试mapreduce程序本地模式调试

3.本地模式操作本地文件

conf.set("mapreduce.framework.name", "local");
conf.set("fs.defaultFS","file:///");

运行参数

mapreduce程序本地模式调试mapreduce程序本地模式调试


结果跑成功了

4.本地模式操作hdfs文件

conf.set("mapreduce.framework.name", "local");
System.setProperty("HADOOP_USER_NAME", "hadoop");
conf.set("fs.defaultFS","hdfs://hadoop01:9000");

mapreduce程序本地模式调试

结果跑成功了

4.1错误org.apache.hadoop.security.AccessControlException: Permission denied: user=admin, access=WRITE, inode="/wordcount":hadoop:supergroup:drwxr-xr-x

没加System.setProperty("HADOOP_USER_NAME", "hadoop");

4.2Exception in thread "main" java.lang.IllegalArgumentException: Pathname /c:/wordcount/output6666 from hdfs://hadoop01:9000/c:/wordcount/output6666 is not a valid DFS filename

你用的是本地HDFS文件,却写成了本地的路径,解决办法:控制台输入参数换成hdfs 文件的路径

5 .本地运行模式总结

(1)mapreduce程序是被提交给LocalJobRunner在本地以单进程的形式运行

(2)而处理的数据及输出结果可以在本地文件系统,也可以在hdfs上

(3)怎样实现本地运行?写一个程序,不要带集群的配置文件(本质是你的mr程序的conf中是否有mapreduce.framework.name=local以及yarn.resourcemanager.hostname参数)

(4)本地模式非常便于进行业务逻辑的debug,只要在eclipse中打断点即可

 

如果在windows下想运行本地模式来测试程序逻辑,需要在windows中配置环境变量:

HADOOP_HOME  =  d:/hadoop-2.6.1

%PATH% =  HADOOP_HOME\bin

并且要将d:/hadoop-2.6.1libbin目录替换成windows平台编译的版本