首页 > 代码库 > windows下eclipse调试hadoop详解

windows下eclipse调试hadoop详解

1)下载Eclipse

http://www.eclipse.org/downloads/

Eclipse Standard 4.3.2 64位

 

2) 下载hadoop版本对应的eclipse插件

我的hadoop是1.0.4,因此下载hadoop-eclipse-plugin-1.0.4.jar

下载地址:http://download.csdn.net/detail/m_star_jy_sy/7376169

 

3)安装hadoop插件

将hadoop-eclipse-plugin-1.0.4.jar拷贝到eclipse的plugins目录下即可

 

4)重启eclipse,检查hadoop插件是否加载成功

单击菜单:Window/Open Perspective/Others…弹出Open Perspective对话框,出现Map/Reduce即表示安装成功,见下图:

 

5)设置hadoop安装路径

选择菜单:Window/Preferences,弹出Preferences对话框,如下图所示:

 

选择Hadoop Map/Reduce ,设置Hadoop Install directory(Hadoop安装路径)。Hadoop的安装路径就是hadoop安装包hadoop-1.0.4.tar.gz解压缩后的路径

 

5)配置hadoop

选择菜单:Window/Show View/Other…,弹出Show View对话框。

 

在对话框中选择MapReduce Tools下的Map/Reduce Locations,打开Map/Reduce Locations视图。如下图所示:

 

在Map/Reduce Locations视图中,右键选择New Hadoop Location…菜单,弹出New Hadoop Location对话框,如下图所示:


在弹出的对话框中你需要配置Location name,如Hadoop,还有Map/Reduce Master和DFS Master。这里面的Host、Port分别为你在mapred-site.xml、core-site.xml中配置的地址及端口。UserName设置为运行hadoop的账号名,例如:hadoop。

 

配置完后退出。点击DFS Locations-->Hadoop如果能显示文件夹(2)说明配置正确,如果显示"拒绝连接",请检查你的配置。


至此,环境基本搭建好了。下面就通过经典的WordCount例子来试验下了。

 

6)准备测试数据

在本地新建word.txt,内容如下:

java c++ python c
java c++ javascript
helloworld hadoop
mapreduce java hadoop hbase

通过copyFromLocal命令把本地的word.txt复制到HDFS上,命令如下:

$:hadoop fs -copyFromLocal /usr/hadoop/word.txt word.txt

本例假设word.txt存放在/usr/hadoop/目录下

 

7)新建hadoop项目

File-->New-->Other-->Map/Reduce Project

项目名可以随便取,如WordCount。 复制 hadoop安装目录src/example/org/apache/hadoop/example/WordCount.java到刚才新建的项目下面。

 

8)运行程序

右键单击WordCount项目,选择Run As-->RunConfigurations…,弹出Run Configurations对话框。如下图所示:

右键单击左边的Java Application,选择New菜单新建一个配置项,取名为Wordcount。在Arguments选项卡中设置Program arguments:为:

hdfs://192.168.0.19:9000/user/hadoop/word.txt

hdfs://192.168.0.19:9000/user/hadoop/out

第一行为输入文件,第二行为输出结果文件。

如果运行时报java.lang.OutOfMemoryError: Java heap space 配置VM arguments参数:

-Xms512m -Xmx1024m -XX:MaxPermSize=256m

设置完后,单击Run。

 

9)错误1

现象:

ERROR security.UserGroupInformation: PriviledgedActionExceptionas:zhumingcause:java.io.IOException: Failed to set permissions of path:\tmp\hadoop-zhuming\mapred\staging\zhuming1380233490\.staging to 0700

Exceptionin thread "main" java.io.IOException: Failed toset permissions of path:\tmp\hadoop-zhuming\mapred\staging\zhuming1380233490\.staging to 0700

 

解决方案:

下载hadoop-core-1.0.4-modified.jar替换到hadoop安装目录下的hadoop-core-1.0.4.jar文件

下载地址:http://download.csdn.net/detail/m_star_jy_sy/7376283

 

10)错误2

现象:

org.apache.hadoop.security.AccessControlException:org.apache.hadoop.security.AccessControlException: Permission denied:user=zhuming, access=WRITE,inode="hadoop":hadoop:supergroup:rwxr-xr-x

atsun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)

 

原因:

因为Eclipse使用hadoop插件提交作业时,会默认以zhuming身份(windows当前用户)去将作业写入hdfs文件系统中,对应的也就是 HDFS上的/user/xxx , 我的为/user/hadoop,由于zhuming用户对user/hadoop目录并没有写入权限,所以导致异常的发生。

 

解决方法:

放开/user/hadoop目录的权限,命令如下:$ hadoop fs -chmod 777 /user/hadoop