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 |
通过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:zhuming cause: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