Hadoop(三):eclipse hadoop 插件,和hadoop通信


干货分析
大数据进行时 http://weibo.com/u/3272022684
球球群:312647298

详细说明见附件

eclipse 3.7 (indigo)

1、下载 hadoop-eclipse-plugin-1.0.1.jar
将hadoop-eclipse-plugin-1.0.1.jar 复制到eclipse\plugins下面
重启eclipse
会发现打开open perspective选项卡,点击other,弹出窗口下会多出Map/Reduce选项


2、添加一个MapReduce环境
在eclipse下端,控制台旁边会多一个Tab,叫“Map/Reduce Locations”,在下面空白的地方点右键,选择“New Hadoop location...”,如图所示:


在弹出的对话框中填写如下内容:

Location name(取个名字)
Map/Reduce Master(Job Tracker的IP和端口,根据mapred-site.xml中配置的mapred.job.tracker来填写)
DFS Master(Name Node的IP和端口,根据core-site.xml中配置的fs.default.name来填写)

User name: 用户名(默认操作系统用户名,这个没什么用)



3、使用eclipse对HDFS内容进行修改
经过上一步骤,左侧“Project Explorer”中应该会出现配置好的HDFS,点击右键,可以进行新建文件夹、删除文件夹、上传文件、下载文件、删除文件等操作。

注意:每一次操作完在eclipse中不能马上显示变化,必须得刷新一下。





4、创建MapReduce工程

4.1配置Hadoop路径

Window -> Preferences 选择 “Hadoop Map/Reduce”,点击“Browse...”选择Hadoop文件夹的路径。



这个步骤与运行环境无关,只是在新建工程的时候能将hadoop根目录和lib目录下的所有jar包自动导入

4.2 创建工程
File -> New -> Project 选择“Map/Reduce Project”,然后输入项目名称,创建项目。插件会自动把hadoop根目录和lib目录下的所有jar包导入。


4.3 创建Mapper或者Reducer

File -> New -> Mapper 创建Mapper,自动继承mapred包里面的MapReduceBase并实现Mapper接口。
注意:这个插件自动继承的是mapred包里旧版的类和接口,新版的Mapper得自己写。

Reducer同理。

4.4 建立WordCount类
参考hadoop example

4.5运行






5 常见问题:

5.1 目录权限认证问题,问题如下:

12/04/11 11:41:46 ERROR security.UserGroupInformation: PriviledgedActionException as:lzpcause:java.io.IOException: Failed to set permissions of path: \app\hadoop\hadoop-1.0.1\hadoopdata\mapred\staging\lzp1107758487\.staging to 0700

Exception in thread "main" java.io.IOException: Failed to set permissions of path: \app\hadoop\hadoop-1.0.1\hadoopdata\mapred\staging\lzp1107758487\.staging to 0700

at org.apache.hadoop.fs.FileUtil.checkReturnValue(FileUtil.java:682)

at org.apache.hadoop.fs.FileUtil.setPermission(FileUtil.java:655)

解决方法:

这个问题用该是windows这边的问题,其中\app\hadoop\hadoop-1.0.1\hadoopdata\mapred\staging\lzp11是windows7磁盘上的一个目录

网上查到这是由于0.20.203.0以后的版本的权限认证引起的,只有去掉才行

修改hadoop源代码,去除权限认证,修改FileUtil.java的checkReturnValue方法,如下:

private static void checkReturnValue(boolean rv, File p,

FsPermission permission

) throws IOException {

// if (!rv) {

// throw new IOException("Failed to set permissions of path: " + p +

// " to " +

// String.format("%04o", permission.toShort()));

// }

}



















猜你喜欢

转载自qicong7.iteye.com/blog/1881037