Eclipse下hadoop开发调试环境配置笔记

[b]我的环境:[/b]
Win7
Eclipse3.7
Hadoop0.20.2
Jdk1.6.10
[b]在eclipse下安装开发hadoop程序的插件[/b]
安装这个插件很简单,haoop-0.20.2自带一个eclipse的插件,在hadoop目录下的 contrib\eclipse-plugin\hadoop-0.20.2-eclipse-plugin.jar,把这个文件copy到 eclipse的eclipse\plugins
目录下,然后启动eclipse就算完成安装了。
这里说明一下,haoop-0.20.2自带的eclipse的插件只能安装在eclipse 3.3上才有反应,而在eclipse 3.7上运行hadoop程序是没有反应的,所以要针对eclipse 3.7重新编译插件。
另外简单的解决办法是下载第三方编译的eclipse插件,下载地址为:
http://code.google.com/p/hadoop-eclipse-plugin/downloads/list
由于我用的是Hadoop-0.20.2,所以下载hadoop-0.20.3-dev-eclipse-plugin.jar.
然后将hadoop-0.20.3-dev-eclipse-plugin.jar重命名为hadoop-0.20.2-eclipse-plugin.jar,把它copy到eclipse的eclipse\plugins目录下,然后启动eclipse完成安装
安装cygin,启动…

解决Window环境下启动Hadoop时出现的 java.lang.NoClassDefFoundError: org/apache/hadoop/util/PlatformName 异常
只需要将${HADOOP_HOME}/bin/hadoop-config.sh文件中的第190行的一下的内容
JAVA_PLATFORM=`CLASSPATH=${CLASSPATH} ${JAVA} -Xmx32m ${HADOOP_JAVA_PLATFORM_OPTS} org.apache.hadoop.util.PlatformName | sed -e "s/ /_/g"`

修改成以下的内容即可
JAVA_PLATFORM=`CLASSPATH=${CLASSPATH} ${JAVA} -Xmx32m -classpath ${HADOOP_COMMON_HOME}/hadoop-common-0.21.0.jar org.apache.hadoop.util.PlatformName | sed -e "s/ /_/g"`


在cygwin上执行hadoop命令一切正常,如下这些命令执行结果都OK,在浏览器中访问http://localhost:50030也正常,但是在eclipse中运行wordcount时抛出:
[color=red]hadoop/bin/hadoop fs -ls hdfs://localhost:9000/user/wb-gaobingying/input
Exception in thread "main" java.lang.RuntimeException: java.io.IOException: Call to localhost/127.0.0.1:9000 failed on local exception: java.io.EOFException
at org.apache.hadoop.mapred.JobConf.getWorkingDirectory(JobConf.java:371)
at org.apache.hadoop.mapred.FileInputFormat.setInputPaths(FileInputFormat.java:309)
at org.apache.hadoop.mapred.FileInputFormat.setInputPaths(FileInputFormat.java:282)
at WordCount.run(WordCount.java:117)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
at WordCount.main(WordCount.java:125)[/color]
ecilpse中也有:

[img]http://dl.iteye.com/upload/attachment/0082/5812/1ad9f049-7ae4-3311-9559-d38ab4099968.jpg[/img]
有人说这是客户端与服务端的hadoop版本不一致
此时我的客户端是0.20.2,服务端是0.21.0
于是把服务端也换成0.20.0了,但
Location下面都好了,但是还是一直停留在

[img]http://dl.iteye.com/upload/attachment/0082/5820/41ed937e-fe78-3dc3-8a7a-30e0f5fc7178.jpg[/img]
[b]这个问题我一直没解决,后来试了下new一个我的虚拟机ubuntu上的hadoop伪集群,ok了,如下:[/b]

Host:
Master 10.13.13.55

选中wordcount程序,

[img]http://dl.iteye.com/upload/attachment/0082/5824/b9d00dd4-7d9a-383b-9e47-ad1b32dc7b3c.jpg[/img]
然后,选择Run on hadoop,界面如下,选择一个locaiton

[img]http://dl.iteye.com/upload/attachment/0082/5828/eee8e4d7-c438-3e0f-95e7-66eb860168a9.jpg[/img]
启动报错如下:
[color=red]03/29 16:30:09 INFO mapred.JobClient: Task Id : attempt_201303291556_0001_m_000003_0, Status : FAILED
org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security.AccessControlException: Permission denied: user=taobao-hz\wb-gaobingying, access=WRITE, inode="hadoop":hadoop:supergroup:rwxr-xr-x
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Na[/color]
这个是因为Hadoop location中的 hadoop.job.uri的值没有改成hadoop,Tardis,其中hadoop是我的虚拟机的账号名.
重新启动,执行如下:

[img]http://dl.iteye.com/upload/attachment/0082/5832/9fadcb47-a8c2-3159-b234-745a43381761.jpg[/img]
查看DFS Locations下已经有了本次job执行的结果:

[img]http://dl.iteye.com/upload/attachment/0082/5836/2e6f1325-37eb-372b-a9ec-905caaa87aeb.jpg[/img]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值