前面的文章介绍了如果在linux环境下搭建真分布式环境,这篇文章主要讲如何在windows下面开发hadoop程序,就是在eclipse中直接使用linux中搭建好的hdfs,其实现在已经有一个比较好的eclipse插件给我们解决了很多麻烦事:
准备:
把你linux下的hadoop安装包下载到windows : hadoop-2.7.1.tar.gz
把对应安装包的源代码也下载到windows :hadoop-2.7.1-src.tar.gz
1. 下载https://github.com/winghc/hadoop2x-eclipse-plugin/tree/master/release 本人使用的是hadoop-eclipse-plugin-2.6.0.jar
直接把jar包扔到eclipse的plugins目录下,然后重启eclipse ,接下来的配置操作可以参看http://www.cnblogs.com/huligong1234/p/4137133.html 此工具就是方便查看hdfs中的文件,可以在eclipse中上传或者下载hdfs中的文件。
说明的2点:
- Hadoop安装目录的配置需要你把linux下安装包download下来放到windows某个目录,然后配置这个目录即可,eclipse中的程序会读取此目录下的jar包。
- 其中我看到Hadoop Location的配置只需要配置一下Host就可以了,其他端口好像没撒用。
2. 创建Map/Reduce project,一样参看http://www.cnblogs.com/huligong1234/p/4137133.html
说明的几点:
- log4j的配置很重要,先配置好这个,才能看到打印出来的debug日志
- windows下开发需要winutil.exe工具 ,否则报Could not locate executable winutils.exe in the Hadoop binaries. 找不到win上的执行程序,可以去https://github.com/srccodes/hadoop-common-2.2.0-bin 下载bin包,复制到本机的hadoop根目录下的bin包即可
- HADOOP_HOME or hadoop.home.dir are not set.错误,程序写死hadoop根目录
- 权限的问题,在linux下执行 hdfs dfs -chmod -R 777 /user/szuser 赋予所有的权限。或者打开conf/hdfs-site.xml,找到dfs.permissions属性修改为false(默认为true)OK了。注意生产环境处于安全考虑不要这么搞。
- 解决java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)异常问题 ,拷贝源码文件org.apache.hadoop.io.nativeio.NativeIO到项目中
然后定位到609行,直接修改为return true;
3. Hadoop程序的基本操作,可以参考http://www.cnblogs.com/xia520pi/archive/2012/06/04/2534533.html 里面有很多例子