看了hadoop个把月了,每次都在cygwin(windows)上打命令运行,很不方便,有eclipse插件一直也没用起来(报N多错误)
今天终于把hadoop在Eclipse上运行起来了
2,Eclipse版本
3.2 没安装上去,是从myeclipse6.5里面抽取出来的,可能没设置好
今天终于把hadoop在Eclipse上运行起来了
1,cygwin及hadoop安装目录
2,Eclipse版本
3.2 没安装上去,是从myeclipse6.5里面抽取出来的,可能没设置好
3.3
可以安装,右键可以运行
3.4/3.5/3.6
可以安装,右键运行没反应
将C:\cygwin\home\Administrator\hadoop-0.20.2\contrib\eclipse-plugin\hadoop-0.20.2-eclipse-plugin.jar放到eclipse\plugins下,重启eclipse
3,使用插件
3.1,新建Map/Reduce Project
3.2,配置Map/Reduce Locations
Use M/R Master host一定要选上
切换到Advanced parameters选项卡:
设置 mapred.child.tmp 为一个绝对路径,默认为./tmp
为解决这个错误:
java.io.FileNotFoundException: File C:/tmp/hadoop-SYSTEM/mapred/local/taskTracker/jobcache/job_201007171612_0006/attempt_201007171612_0006_m_000001_0/work/tmp does not exist.
at org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:361)
at org.apache.hadoop.fs.FilterFileSystem.getFileStatus(FilterFileSystem.java:245)
at org.apache.hadoop.mapred.TaskRunner.setupWorkDir(TaskRunner.java:519)
at org.apache.hadoop.mapred.Child.main(Child.java:155)
Map/Reduce Locations配置完毕,如有其它参数想修改,请在这里进行修改
在C:\cygwin\home\Administrator\hadoop-0.20.2\conf里面去改相关配置文件,只是对在cygwin中使用命令行运行有效,在Eclipse中运行的参数是以这里的Advanced parameters为准(也可以在测试代码里面去手工设置进行覆盖)
Configuration config = new Configuration();
config.set("mapred.child.tmp", "C:/temp");
前面碰到找不到文件错误,网上查下说需要修改mapred.child.tmp,我去C:\cygwin\home\Administrator\hadoop-0.20.2\conf\mapred-site.xml中修改后,cygwin运行正常,但是eclipse中运行还是不停报错,最后发现其实在eclipse中每运行一次(也就是一个job),在C:\cygwin\home\Administrator\hadoop-0.20.2\logs中就会产生一个job运行时参数配置的信息的xml文件,如:job_201007171612_0006_conf.xml,里面是当前job运行时的全部参数值,共计202个,经过检查文件,发现在C:\cygwin\home\Administrator\hadoop-0.20.2\conf\mapred-site.xml中修改的参数值没过来,也就是说其设置对当前eclipse中运行是无效的。
3.3,运行
在写好的测试类上右键 ->Run as -> Run on hadoop
3.4,运行出错:
2010-07-17 16:56:14,968 WARN org.apache.hadoop.mapred.TaskTracker: Error running child
org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security.AccessControlException: Permission denied: user=DrWho, access=WRITE, inode="Administrator":Administrator:supergroup:rwxr-xr-x
从当前错误信息可知,当前的用户是DrWho,同样检查C:\cygwin\home\Administrator\hadoop-0.20.2\logs中生成的job配置信息(如:job_201007171612_0006_conf.xml
),可看到以下设置:
<property>
<name>user.name</name>
<value>DrWho</value>
</property>
<property>
<name>hadoop.job.ugi</name>
<value>DrWho,Tardis</value>
</property>
解决办法:http://forum.hadoop.tw/viewtopic.php?f=4&t=13&view=previous
$ bin/hadoop dfs -chmod 777 /user/Administrator
3.5,运行设置参数
菜单;Run -> Open Run Dialog...
或者:右键 -> Run as -> Open Run Dialog...