windows eclipse本地运行hadoop-2.7.1并调用集群HDFS

【环境说明】windows10上用WMWare12安装了4台Centos7虚拟机,一台做NN,一台SN,两台DN。

方法主要来自网上(他使用的是win7+hadoop-2.6.0,和win10+hadoop-2.7.1是一样的):

一、准备工作

1.1 在win7中,找一个目录,解压hadoop-2.6.0,本文中是D:\yangjm\Code\study\hadoop\hadoop-2.6.0 (以下用$HADOOP_HOME表示)

1.2 在win7中添加几个环境变量

HADOOP_HOME=D:\yangjm\Code\study\hadoop\hadoop-2.6.0

HADOOP_BIN_PATH=%HADOOP_HOME%\bin

HADOOP_PREFIX=D:\yangjm\Code\study\hadoop\hadoop-2.6.0

另外,PATH变量在最后追加;%HADOOP_HOME%\bin

二、eclipse远程调试

1.1 下载hadoop-eclipse-plugin插件

hadoop-eclipse-plugin是一个专门用于eclipse的hadoop插件,可以直接在IDE环境中查看hdfs的目录和文件内容。其源代码托管于github上,官网地址是 https://github.com/winghc/hadoop2x-eclipse-plugin

有兴趣的可以自己下载源码编译,百度一下N多文章,但如果只是使用 https://github.com/winghc/hadoop2x-eclipse-plugin/tree/master/release%20 这里已经提供了各种编译好的版本,直接用就行,将下载后的hadoop-eclipse-plugin-2.6.0.jar复制到eclipse/plugins目录下,然后重启eclipse就完事了

1.2 下载windows64位平台的hadoop2.6插件包(hadoop.dll,winutils.exe)

在hadoop2.6.0源码的hadoop-common-project\hadoop-common\src\main\winutils下,有一个vs.net工程,编译这个工程可以得到这一堆文件,输出的文件中,

hadoop.dll、winutils.exe 这二个最有用,将winutils.exe复制到$HADOOP_HOME\bin目录,将hadoop.dll复制到%windir%\system32目录 (主要是防止插件报各种莫名错误,比如空对象引用啥的)

注:如果不想编译,可直接下载编译好的文件 hadoop2.6(x64)V0.2.zip

1.3 配置hadoop-eclipse-plugin插件

启动eclipse,windows->show view->other

window->preferences->hadoop map/reduce 指定win7上的hadoop根目录(即:$HADOOP_HOME)

点击查看原图

然后在Map/Reduce Locations 面板中,点击小象图标

点击查看原图

添加一个Location

这个界面灰常重要,解释一下几个参数:

Location name 这里就是起个名字,随便起

Map/Reduce(V2) Master Host 这里就是虚拟机里hadoop master对应的IP地址,下面的端口对应 hdfs-site.xml里dfs.datanode.ipc.address属性所指定的端口(默认是50020)

DFS Master Port: 这里的端口,对应core-site.xml里fs.defaultFS所指定的端口

最后的user name要跟虚拟机里运行hadoop的用户名一致,我是用hadoop身份安装运行hadoop 2.6.0的,所以这里填写hadoop,如果你是用root安装的,相应的改成root

这些参数指定好以后,点击Finish,eclipse就知道如何去连接hadoop了,一切顺利的话,在Project Explorer面板中,就能看到hdfs里的目录和文件了

然后运行MR程序在控制台没有任何调试信息输出,出现如下警告:

解决方法:复制$HADOOP_HOME/etc/hadoop/目录下的log4j.properties文件到MapReduce项目 src文件夹下。

这样就OK了

这样提交的MR是在本地运行的,如果需要用eclipse提交到yarn运行的话需要在src目录把配置文件core-site.xml,hdfs-site.xml,mapreduce-site.xml和yarn-site.xml复制进去,然后conf中添加 conf.set(“mapreduce.job.jar”, “wc.jar”); (以wc.jar为例)还需要把项目打包jar放在项目主目录下。但这样只能在linux下正常运行,在windows下会出错的,如果要在windows下正常运行需要修改源码,有点烦,感觉直接linux提交就好了,windows下本地DEBUG就可以了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

请输入正确的验证码