Hadoop开发环境 安装插件
0.20.0下原始的eclispe插件无法使用,需要下载网上改造过的:
hadoop-eclipse-plugin-0.20.3-SNAPSHOT.jar
copy到eclispe插件目录,然后重启eclispe。
PS:这里出现一个问题,发现在eclispe3.7下插件不会加载,最终删除旧的eclispe,使用新解压的文件解决,可以将旧eclispe插件目录下的文件COPY到新目录。同样可以使用之前的插件。
配置插件环境
配置Map/Reduce Master和DFS Master。里面的Host、Port分别为你在mapred-site.xml、core-site.xml中配置的地址及端口
Hadoop配置更改之前配置的伪分布模式上,采用的localhost的配置,为使eclispe可以访问,需要更改为IP的配置方式,这里需要注意的是:
需要更改以下的内容:
1、 修改 /etc/hosts,删除 127.0.0.1 ,添加本机ip的解析。
[root@localhost~]# cat /etc/hosts
# Do notremove the following line, or various programs
# thatrequire network functionality will fail.
#127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
192.168.128.133 localhost.localdomain localhost
2、 修改相关配置文件
[hadoop@localhostconf]$ cat core-site.xml
<?xmlversion="1.0"?>
<?xml-stylesheettype="text/xsl" href="https://www.linuxidc.com/configuration.xsl"?>
<!--Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.128.133:9000/</value>
</property>
</configuration>
[hadoop@localhostconf]$ cat mapred-site.xml
<?xmlversion="1.0"?>
<?xml-stylesheettype="text/xsl" href="https://www.linuxidc.com/configuration.xsl"?>
<!--Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>192.168.128.133:8021</value>
</property>
</configuration>
3、 另外SSH也需要查看Knowshosts里面是否有IP,否则会出现错误二,可以执行如下,则自动添加
ssh 192.168.128.133
4、 删除原临时目录,重新格式化
hadoop namenode –format
如果不按如上操作,可能会出现下面的错误:
错误一:
2011-08-14 09:44:28,206 INFOorg.apache.hadoop.ipc.Server: IPC Server handler 7 on 9000, calladdBlock(/user/hadoop/test.txt, DFSClient_1170937058) from192.168.128.133:37785: error: java.io.IOException: File /user/hadoop/test.txt could onlybe replicated to 0 nodes, instead of 1
java.io.IOException: File /user/hadoop/test.txt couldonly be replicated to 0 nodes, instead of 1
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1271)
atorg.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:422)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:508)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:959)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:955)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:953)
错误二:
This does not map back to the address - POSSIBLE BREAK-INATTEMPT
Eclispe调试Hadoop配置过程中问题
遇到如下问题:
Cannot run program "chmod": CreateProcess error=2
注意:需要安装Cygwin,并设置环境变量。就算不用本地的环境也必须。
安装Cygwin,并设置Cygwin_HOME/bin到windows Path变量
Cygwin下安装SSH
复制Hadoop文件
拷贝Hadoop项目中的eclipse plugin jar文件到eclipse plugin下
eclipse 在选项设置hadoop home路径,添加hadoop location(主要设置namenode 机器名端口和jobtracker端口即可)
新建map reduce project
从hadoop项目拷贝WordCount.java文件到新的项目
右键WordCount.java,设置运行参数
右键WordCount.java=> run on hadoop
注意:
windows下跑Hadoop Eclipse plugin,无论是连接本地还是远程,Cygwin是必须的安装的,调试远程不需要配置ssh。
每个hadoop版本必须和Hadoop Eclipse plugin一直否则无法进行连接和执行程序