Windows下使用Eclipse工具搭建Hadoop2.6.4开发环境
循序渐进解析使用Eclipse工具搭建hadoop2.6.4开发环境的步骤,理解配置的缘由。
1.下载插件包
下载插件包hadoop-eclipse-plugin-2.6.4.jar,或者自己编译hadoop插件Windows下使用Ant编译hadoop-eclipse-plugin-2.x插件。
拷贝插件到eclipse安装目录下的plugins目录
2.下载Hadoop
下载Hadoop,这里选择2.6.4版本,即搭建伪分布式环境的版本
将hadoop-2.6.4.tar.gz文件解压至本地目录下(就是为了配置eclipse用,实际联调的时候,是连接虚拟机上的hadoop2.6.4伪分布式)
注:hadoop文件存放目录不要带有空格,不然新建工程时会出现jar包找不到。
3. 启动Eclipse
菜单栏Window -> Preferences,找到Hadoop Map/Reduce选项卡,配置Hadoop installation directory目录,指向hadoop的安装目录
4.打开Map/Reduce Locations
Window -> Show View -> Other -> Map/Reduce Tools
5.新建Hadoop location
右键选择New Hadoop location或点击右边小象图标,配置连接虚拟机上Hadoop伪分布式环境
6.配置连接虚拟机上Hadoop伪分布式环境
①Location name:可以任意起名,标识一个”Map/Reduce Location”
②Map/Reduce(V2) Master
Host:192.168.1.200(虚拟机的IP地址, 与linux集群的mapred-site.xml文件中配置的一样)
注:Host若不使用IP,使用IP映射的话,那么Windows系统C:\Windows\System32\drivers\etc目录下找到配置文件hosts,编辑增加一行内容
使用IP映射的配置
Port:9001(与linux集群的mapred-site.xml文件中配置的一样)
③DFS Master
Use M/R Master host:勾上(因为我们的NameNode和JobTracker都在一个机器上)
Port:9000(与linux集群的core-site.xml文件中配置的一样)
7.Project Explorer视图显示DFS Locations
配置完成,在Project Explorer视图显示HDFS连接信息,此时显示的信息是hadoop2.6.4伪分布式运行wordcount时的信息
注:Hadoop集群启动了才能连接成功
至此,Hadoop的Eclipse插件已经配置好了。
8.创建Hadoop中的Map/Reduce工程
打开File -> New -> Other,或者右键 -> New -> Other
选择Map/Reduce Project,输入工程名Project name,点击Finish即可。
此时发现Hadoop相关联的包都引入到工程里,如果Hadoop安装目录有空格,就会出现jar包找不到的情况
9.运行Hadoop的WordCount源码
9.1src下新建包名
src下新建包名org.apache.hadoop.examples
9.2拷贝WordCount源码
在Hadoop的安装目录下..\hadoop-2.6.4\share\hadoop\mapreduce\sources,找到hadoop-mapreduce-examples-2.6.4-sources.jar,将包下的hadoop-mapreduce-examples-2.6.4-sources.jar\org\apache\hadoop\examples\WordCount.java直接拷贝到新建的包名下,因为包名起的和Hadoop的WordCount源码包名一致,所以不需要修改包名
9.3初次运行
右键Run As -> Run on Hadoop
出现log4j的警告,以及WordCount运行需要的参数配置
9.4配置参数
HDFS上导入要统计的文本,可以直接在Eclipse上DFS Locations新建文件夹,上传要统计的文本;也可使用HDFS的shell操作上传文本,生成两个文本文件,注意感叹号后面的空格
> 是定向输出到文件,如果文件不存在,就创建文件;如果文件存在,就将其清空;
上传到HDFS文件系统
Eclipse上DFS Locations右键刷新或重连可以看到上传的文件
右键Run As -> Run Configurations,配置WordCount运行的参数Arguments,分别为HDFS输入文件和输出文件
9.5再次运行
此时Run或使用Run on Hadoop,会报错
原因是,没有安装补丁。下载hadoop.dll和winutils.exe,将winutils.exe放到Windows中hadoop安装目录的bin目录下,把hadoop.dll拷贝到C:\Windows\System32下面即可。log4j的警告处理:在工程目录的src下面添加log4j.properties文件,并且在该文件中配置:
log4j.rootLogger=debug,stdout,R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p - %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=mapreduce_test.log
log4j.appender.R.MaxFileSize=1MB
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%
log4j.logger.com.codefutures=DEBUG
注:如果没有把hadoop.dll拷贝到C:\Windows\System32下面,会出现Exception in thread “main” java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z错误
9.6此时运行WordCount程序,会出现HADOOP_HOME没有设置以及权限被拒绝的错误
配置hadoop环境变量:
HADOOP_HOME=F:\data\hadoop-2.6.4
PATH=PATH;%HADOOP_HOME%\bin;
验证Hadoop是否配置成功:
注:由于Hadoop依赖于java jdk,所以jdk环境变量需要先配置;另外jdk安装目录也不能有空格,不然会出现JAVA_HOME没有正确设置的错误
此次运行除了提示HADOOP_HOME没有设置的错误,还会出现权限被拒绝。
解决:取消hadoop hdfs的用户权限检查,在集群环境中修改hdfs-site.xml文件,参见hadoop2.6.4伪分布式,增加配置
<property>
<name>dfs.permissions</name>
<value>false</value>
<description>权限关闭</description>
</property>
保存文件后重启集群。
9.7此时再次运行WordCount,会出现下面的错误
由于现在Windows下的配置以及集群的权限都配置好了,这个问题是配置好HADOOP_HOME后,需要重启Eclipse
9.8重启Eclipse后再次运行
如果出现HDFS输出目录已存在,可直接在DFS Locations里右键Delete删除
运行过后Eclipse控制台运行成功
本地查看结果正常
此时Windows下Hadoop2.6.4版本的Eclipse开发环境搭建成功。