日期:2014-05-17  浏览次数:20737 次

在Windows下安装Hadoop遇到的几个问题

在Windows下安装Hadoop遇到的几个问题
2010年12月01日
  Hdoop的荐部署环境是linux,但是我们想要在windows体验一下还是可以的,尤其是对我这样不是经常使用Linux系统的人。Windows下安装配置Hadoop的教程还是挺多的,这里可以下载。
  下面我说说安装配置过程中遇到的一些问题吧,给自己以后提供借鉴。
  我的操作系统是Windows 7,使用的Cygwin版本是1.7.7-1,hadoop版本是0.20.2。 1.      SSH服务的安装 在安装SSH服务的过程中,如果按照网络教程上的步骤,在Win7下会有问题,安装完成后测试ssh localhost,遇到connection closed by ::1的问题,通过网上搜索,搜索到一片E文的解决方法,里面详细讲解了从卸载已经安装的服务到成功安装的各个步骤,比较详细,我也上传到了这里,其中的vista-cygwin.txt。有些不爽的是经过这些步骤,会给系统增加一个用户。当然SSH服务安装成功的就好啦。 2.      SSH连接REMOTE HOST IDENTIFICATION HAS CHANGED解决方法 说到SSH连接,我想到了以前使用SSH连接时候遇到的一个问题,远程一台机器被我重装了,虽然IP地址和用户名都没有变,但是用其他客户端连接就出现上述提示,这里需要将 ~/.ssh/know-hosts文件中和该机器相关的rsa信息删除,然后再添加一下。删除命令:ssh-keygen  R XXX.XXX.XXX.XXX。当然也可以手动去删除。 3.      Java SDK路径配置的问题--hadoop-env.sh配置 在Hadoop的配置文件,hadoop-env.sh中,需要添加Java SDK的路径。要知道,Cygwin中并没有安装Java,那么只能使用Windows下安装的JDK。看了网上的文章,只是提到说export后面的路径需要用双引号括起来,因为一般JDK都是安装在"Program Files"下的。但是我这么添加以后,就是不行,报错"JAVA_HOME is not set"还是"…Program cannot found"来着,不太记得了,反正就是启动Hadoop的时候报错。经过研究后知道,首先Cygwin下不能使用windows的路径直接访问,需要是Linux风格的目录,如果是访问C盘下安装的JDK的话,不能使用"C:\Program Files\Java\jdk1.6.0_22",而需要使用这样"/cygdrive/c/Program Files/Java/jdk1.6.0_22";其次是hadoop好像不能识别带空格的目录路径,那怎么办呢,想到了符号链接,通过在Cygwin下创建一个符号链接,指向我的JDK安装目录,使用这样的命令:ln "C:\Program Files\Java\jdk1.6.0_22" /usr/local/jdk1.6.0_22. 这样就在/usr/local/下创建了一个Windows下JDK目录的符号链接,如果使用:cd /usr/local/jdk1.6.0_22, 然后ls下,就会发现已经在jdk的安装目录下了。然后在hadoop-env.sh中export JAVA_HOME=/usr/local/jdk1.6.0_22,这样就OK了。 4.      hadoop-env.sh:line 2:$'\r':command not found错误 如果将hadoop-env.sh用Windows下的编辑软件编辑以后,再使用的话可能出现上述错误,使用dos2unix工具修正下,在conf/目录下执行"dos2unix hadoop-env.sh"就OK了。 5.      Hadoop启动的问题--process information unavailable 好不容易配置好了hadoop,很兴奋,于是在赶紧启动hadoop,"start-all.sh",启动好像没有什么问题。使用jps列举下本机的java进程,发现怎么有几个进程显示"process information unavailable",这是怎么回事?突然想起为什么要安装SSH呢,于是SSH连接到本机,然后再启动hadoop,在jps,OK这下所有进程信息都列举出来了。具体是什么原因,我现在还不太清楚。 6.      Hadoop启动的问题--Server at localhost/127.0.0.1:8888 not available yet 经过上面的步骤,好像Hadoop运行没有问题了,TaskTracker、JobTrack、DataNode、NameNode都启动了,好像没有问题了,但是执行"./hadoop fs  ls /"命令是,会出现"Retrying connect to server: localhost/127.0.0.1:8888. Already tried X time(s). … Server at localhost/127.0.0.1:8888 not available yet",这又是为什么呢?查找后发现原来是HDFS在第一次用的时候需要初始化,安装完后就直接启动了,使用命令:./hadoop namenode  format, 进行文件系统的格式化,然后再"./start-all.sh",再执行"./hadoop fs  ls /",看到"Found 1 items
  drwxr-xr-x   - huangzhtao-pc\cyg_server supergroup          0 2010-11-27 17:26 /tmp",总算成功了。 7.      浏览器访问的说明
  浏览器下查看Hadoop系统情况的地址。 配置hadoop真是一个充满挑战的过程,遇到了很多问题,记录下来,供以后参考。
  附件:附件是一份Windows上安装hadoop的教程和Vista/Win7上安装sshd服务的说明。