windows平台使用Cygwin安装hadoop遇到的问题

经过cygwin配置ssh的磨砺(参看:http://pwcrab.blog.163.com/blog/static/16990382220107267443810/)。下面就需要在cygwin下安装hadoop了,其实先前有了在linux上安装hadoop的经历,那么,在cygwin下应该比较顺利,但是,实际上之前的经验又一次在很多方面误导了自己。

  1. JDK路径包含空格的问题:需要在hadoop-env.sh中加入JAVA_HOME环境变量以供hadoop使用java。因为cygwin只是在windows平台模拟linux环境,所以,实际上使用的就是安装在windows目录下的java。在windows下安装JDK习惯性的都放入Program File目录下,但是,这是一个包含空格的路径,这在以后的使用过程中就会发生问题。有人说在路径上加上" ",或者在空格前写入\,可以解决目录中含空格问题,但是实际操作中似乎不起作用。所以,最保险的解决方法重新安装JDK到不含空格的路径中,另外官网上也有一种办法是建立链接文件,原文链接http://hbase.apache.org/docs/current/cygwin.html

    One important thing to remember in shell scripting in general (i.e. *nix and Windows) is that managing, manipulating and assembling path names that contains spaces can be very hard, due to the need to escape and quote those characters and strings. So we try to stay away from spaces in path names. *nix environments can help us out here very easily by using symbolic links.

    Create a link in /usr/local to the Java home directory by using the following command and substituting the name of your chosen Java environment:
    LN -s /cygdrive/c/Program\ Files/Java/<jre name> /usr/local/<jre name> 
    Test your java installation by changing directories to your Java folder CD /usr/local/<jre name> and issueing the command ./bin/java -version. This should output your version of the chosen JRE.
  2. cygwin下如何表示windows驱动器和其下的目录:因为JDK实际安装在windows下,所以,JAVA_HOME的内容应该是这个路径,那么这个windows路径如何在cygwin下用unix方式表示呢,就是用 cygdrive/驱动器名 来访问某个驱动器。所以hadoop-env.sh中加入:export JAVA_HOME=/cygdrive/e/Java/jdk1.6.0_21  (假设JDK安装在E盘的java目录下)(另注:而且这个环境变量只是hadoop自己用,在cygwin下用echo $JAVA_HOME是看不到的。)
  3. 用hadoop格式化hdfs文件系统的问题:在Linux中,如果在core-site.xml中设置了以下内容:
    <property>
      <name>hadoop.tmp.dir</name>
      <value>/data0/pwzfb/hadooptmp</value>
      <description>A base for other temporary directories.</description>
    </property>
    那么如果格式化成功,在相应的/data0/pwzfb/hadooptmp目录下会生成一些新的文件夹(如dfs),但是在cygwin中执行完hadoop namenode -format命令后却无法在/data0/pwzfb/hadooptmp目录下看到任何文件。其实因为hadoop和cygwin将/映射的路径是不同的:cygwin认为/对应的实际上是c:\cygwin目录(如果cygwin安装在c盘根目录);而hadoop将/映射为c:\,所以,实际上格式化成功后,应该去c:\下去确认(我被这个又害惨了,总以为没有成功格式化,折腾了很久,最后偶尔发现在c:\下的data0目录,当时还以为是配置文件写错了,又折腾半天。。)
  4. hadoop启动进程信息不全问题:格式化成功后,在.bash_profile中配置完hadoop可执行脚本的路径,直接运行start-all.sh启动Hadoop。习惯性用jps查看(也可用ps -ef),确实有五个java进程出现,但是,却显示如下:
    $ jps
    1048 NameNode
    3540 -- process information unavailable
    5344 JobTracker
    5372 Jps
    3076 -- process information unavailable
    7936 -- process information unavailable
    其中,datanode,secondarynamenode,tasktracker进程都显示process information unavailable。其实这个我想可能是Jps的bug,只要验证hadoop的wordcount程序执行正确,就可以忽略这个错误(当时,我再一次倒在这个问题上,为啥米我这么杯具呢。。。 因为我使用mkdir命令可以成功创建目录,但是使用put命令却无法成功上传一个文件,加之有process information unavailable这个问题,我就更怀疑hadoop没有启动成功。后来发现用put上传一个带文件的文件夹就可以,然后运行wordcount也成功了,这才停止纠结于process information unavailable这个提示信息。而且,第二天重开机运行后,也能上传单个文件了,再次很纠结。没法再现问题也不好跟踪源码确认问题了。。。)(另注:如果使用其他的客户端如putty连接Cygwin环境下的linux,则在putty中启动hadoop发现名称也能正常识别,所以,也可能是cygwin的问题。。忽略吧。。)
  5. cygwin无法正常logout问题:记得在exit指令之前,关闭hadoop就可以了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值