win7下Eclipse开发Hadoop应用程序环境搭建
Hadoop版本:1.0.0
安装ECLIPSE的HADOOP 1.0.0版本的插件
1) Hadoop的Eclipse插件和Eclipse的版本关联性比较大,各版本间可能不兼容。网上搜索发现提供下载的1.0.0插件都是支持Eclipse3.7的。下载安装Eclipse3.7版本(Indigo 版本)。
2) 在Hadoop 1.0.0 版本的安装目录下,系统并没有提供hadoop-eclipse-plugin-1.0.0.jar插件。可以通过别的方法获得:
a) 在安装的目录下 src/contrib/eclipse路径下相关的源码,通过编译该源码,可以得到该插件。
b) 在****上面有hadoop-eclipse-plugin-1.0.0.jar 插件下载。下载网址:http://download.****.net/download/lwj_dx/4061857
3) 如果直接将下载hadoop-eclipse-plugin-1.0.0.jar复制到eclipse的插件目录中,在连接DFS时会出现错误,提示信息为: "error: failure to login",弹出的错误提示框内容为"An internal error occurred during: "Connecting to DFS hadoop". org/apache/commons/configuration/Configuration". 经过察看Eclipse的log,发现是缺少jar包导致的。进一步查找资料后,发现直接复制hadoop-eclipse-plugin-1.0.0.jar,该包中lib目录下缺少了jar包。
4) 首先要对hadoop-eclipse-plugin-1.0.0.jar进行修改。用归档管理器打开该包,发现只有commons-cli-1.2.jar 和hadoop-core.jar两个包。将HADOOP_HOME/lib目录下的 commons-configuration-1.6.jar , commons-httpclient-3.0.1.jar , commons-lang-2.4.jar , jackson-core-asl-1.0.1.jar 和 jackson-mapper-asl-1.0.1.jar 等5个包复制到hadoop-eclipse-plugin-0.20.203.0.jar的lib目录下,如下图:
然后,修改该包META-INF目录下的MANIFEST.MF,将classpath修改为以下内容:
Bundle-ClassPath: classes/,lib/hadoop-core.jar,lib/commons-cli-1.2.jar,lib/commons-httpclient-3.0.1.jar,lib/jackson-core-asl-1.0.1.jar,lib/jackson-mapper-asl-1.0.1.jar,lib/commons-configuration-1.6.jar,lib/commons-lang-2.4.jar
5) 安装插件就很简单了,把这个文件放到 Eclipse的安装目录下的plugins,重新启动Eclipse。
Eclipse开发Hadoop项目
1) 将hadoop1.0.0解压到开发系统的某个目录,如:
2) 首先,打开Eclipse,设置好workspace
3) 打开Window-->Preferens,你会发现Hadoop Map/Reduce选项,在这个选项里你需要配置Hadoop installation directory。配置完成后退出。
4) 选择window -> open perspective -> Other... , 选择有大象图标的 Map/Reduce.
此时,就打开了Map/Reduce的开发环境。可以看到,右下角多了一个Map/Reduce Locations的框。如下图:
然后,设置Hadoop的环境参数。选择Map/Reduce Locations 标签,点击该标签最右边的大象图标,即那个齿轮状图标右侧的大象图标,打开参数设置页面,参数填写如下图:
Location Name : 此处为参数设置名称,可以任意填写
Map/Reduce Master (此处为Hadoop集群的Map/Reduce地址,应该和mapred-site.xml中的mapred.job.tracker设置相同)
Host: 10.0.0.211
port: 9001
DFS Master (此处为Hadoop的master服务器地址,应该和core-site.xml中的 fs.default.name 设置相同)
Host: 10.0.0.211
Port: 9000
设置完成后,点击Finish就应用了该设置。
此时,在最左边的Project Explorer中就能看到DFS的目录,如下图所示。
注,如果当前登录windows的用户名和hadoop集群的用户名不一致,将没有权限访问,提示错误如下:
Exception in thread "main" org.apache.hadoop.security.AccessControlException: Permission denied: user=d, access=WRITE, inode="data":zxg:supergroup:rwxr-xr-x
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:207)
管理DFS system目录。目前做法是将hadoop服务集群关闭权限认证,修改hadoop安装
集群master的hadoop/conf/mapred-site.xml,增加:
<property> <name>dfs.permissions</name> <value>false</value> </property>
正式发布时,可以在服务器创建一个和hadoop集群用户名一致的用户,即可不用修改master的permissions策略。
5) 新建项目:File-->New-->Other-->Map/Reduce Project ,项目名可以随便取,如HadoopTest
6) 将测试代码 src.zip解压到HadoopTest源码目录的src目录下,刷新项目源码目录结构如下:
Ejob.java: 一个开源库,实现自动加载hadoop配置文件并将JAVA程序打包成jar包发布到hadoop集群,其引用范例参见WordCountTest.java
有关Ejob介绍参见:http://www.cnblogs.com/spork/archive/2010/04/07/1706162.html