这个哥们讲解的如何连接集群步骤非常详细!:http://www.cnblogs.com/xia520pi/archive/2012/05/20/2510723.html
但是在搭建时,我的不可能和作者一样顺利遇到了各种奇葩问题,最重要是每个人的都不一样,先把我自己遇到的贴出来吧
一般情况下链接上集群很容易,可以看到并创建浏览hdfs上的文件,但是你想成功运行mapreduce很麻烦,我反正遇到了下面的一些问题
总结:1、在“C:\Windows\System32\drivers\etc\hosts”中自定义的主机名及子节点名字:
2、 下载winutil.exe和hadoop.dll,放到本地$HADOOP_HOME/bin目录下面,配置环境变量,设置PATH后加%HADOOP_HOME%\bin;
3、错误:java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
C:\Windows\System32下缺少hadoop.dll,把这个文件拷贝到C:\Windows\System32下面即可。
4、记得运行mapreduce时 记得配置下面的环境变量,虽然我自己本机的环境变量早就配置好了,但是感觉没有用,花了很长时间最后修改了这里的环境
变量后就能运行了;我的64位的系统就配置好了,但是我家里的32位的系统就是这样搞得,怎么也不行,可以连接上,但是mapreduce就是运行不了
4、
1. 首先把hadoop-eclipse-plugin-2.5.1.jar(具体版本视你的hadoop版本而定)放到eclipse安装目录的plugins文件夹中,如果重新打开eclipse后看到有如下视图,则说明你的hadoop插件已经安装成功了:
下载地址:http://dldx.csdn.net/fd.php?i=630479209731312&s=90f7a89c9bbe37a28cb423d440f99fea&bcsi_scan_f1bc5ce382b7f0db=0&bcsi_scan_filename=fd.php
其中的“hadoop installation directory”配置项用于指向你的hadoop安装目录,在windows下你只需要把下载到的hadoop-2.5.1.tar.gz包解压到某个位置,然后指向这个位置即可。
2.配置相关参数,点击 Windows-->Show View-->Other --> Map/Reduce Location,打开Hadoop的MapReduce View
点击Ok之后,出现如下图
3:上一步你不应该看到hadoopLoc,应该什么都没有,右键点击空白处-->NewHadoop Location,你会看到一个填写MapReduceLocation参数的一个界面:
其中:
Location Name:
这个不用在意,就是对这个MapReduce的标示,只要能帮你记忆即可
Map/ReduceMaster部分相关定义:
Host:上一节搭建的集群中JobTracker所在的机器的IP地址
port:JobTracker的端口
两个参数就是 mapred-site.xml中mapred.job.tracker的ip和端口
注:之前可能在配置mpared-site.xml时没有配置mapred.job.tracker的端口。可以自己配置,如图:
DFS Master部分:
Host:就是上一节集群搭建中Namenode所在机器IP
Port:就是namenode的端口
这两个参数是在 core-site.xml里fs.default.name里面的ip和端口
4: 在“C:\Windows\System32\drivers\etc\hosts”中自定义的主机名及子节点名字:
192.168.244.133hadoop.nameNode1
192.168.244.134hadoop.dataNode1
192.168.244.135hadoop.dataNode3
5:填写完以上信息以后,关闭Eclipse,然后重新启动。
这时如果在eclipse中能看到如下“DFSLocations”,就说明eclipse已经成功连上远程的hadoop了(注意,别忘了把你的视图切换到Map/Reduce视图,而不是默认的Java视图):
运行时的异常处理
1 java.lang.NullPointerException
下载winutil.exe和hadoop.dll,放到本地$HADOOP_HOME/bin目录下面,配置环境变量,设置PATH后加%HADOOP_HOME%\bin;
2 java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
C:\Windows\System32下缺少hadoop.dll,把这个文件拷贝到C:\Windows\System32下面即可。
运行如果还报同样错的话:
我们在继续分析:
我们在出现错误的的atorg.apache.hadoop.io.nativeio.NativeIO$Windows.access(NativeIO.java:557)我们来看这个类NativeIO的557行,如图所示:
Windows的唯一方法用于检查当前进程的请求,在给定的路径的访问权限,所以我们先给以能进行访问,我们自己先修改源代码,returntrue 时允许访问。我们下载对应hadoop源代码,hadoop-2.5.1-src.tar.gz解压,hadoop-2.5.1-src\hadoop-common-project\hadoop-common\src\main\java\org\apache\hadoop\io\nativeio下NativeIO.java 复制到对应的Eclipse的project,然后修改return true如图所示:
如果觉得下载jar包麻烦,可以直接将NativeIO类粘贴到工程下,并修改对应行代码就行。(注意修改包名)