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

我的环境:
Win7
Eclipse3.7
Hadoop0.20.2
Jdk1.6.10
在eclipse下安装开发hadoop程序的插件
安装这个插件很简单,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时抛出:
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)

ecilpse中也有:


有人说这是客户端与服务端的hadoop版本不一致
此时我的客户端是0.20.2,服务端是0.21.0
于是把服务端也换成0.20.0了,但
Location下面都好了,但是还是一直停留在


这个问题我一直没解决,后来试了下new一个我的虚拟机ubuntu上的hadoop伪集群,ok了,如下:

Host:
Master 10.13.13.55

选中wordcount程序,


然后,选择Run on hadoop,界面如下,选择一个locaiton


启动报错如下:
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

这个是因为Hadoop location中的 hadoop.job.uri的值没有改成hadoop,Tardis,其中hadoop是我的虚拟机的账号名.
重新启动,执行如下:


查看DFS Locations下已经有了本次job执行的结果:







猜你喜欢

转载自bingyingao.iteye.com/blog/1841015