Hadoop 安装主要分为两步:
1)安装cygwin, ssh
2)安装hadoop
《Hadoop开发者入门专刊》 的《在Windows 上安装Hadoop 教程》写得比较详细,我这里细节上就不再重复,只是把遇到的问题,以及解决方法说一下。 本人的环境是vista+cygwin1.7.1,发现环境不同,安装 步骤就有稍许不同。
问题1: 在安装ssh服务和配置登陆时遇到的问题较多,尝试了好几次,有几次需要把服务删除再重新进行,发现了几篇比较详细的文章。 如果遇到些奇怪的问题,又想偷懒,可以学我一样,把服务删除,重新再来。这里说得很准确,按着一步步来就行了。
http://chinese-watercolor.com/LRP/printsrv/vista-cygwin.txt 然后按照这里的步骤进行一次,因为网页里内容比较多,我这里摘录出有用部分: 1) With recent releases of cygwin, there are many permission problems. Add these 6 commands as work around:
chmod +r /etc/passwd chmod u+w /etc/passwd
chmod +r /etc/group
chmod u+w /etc/group chmod 755 /var touch /var/log/sshd.log
chmod 664 /var/log/sshd.log
2) ssh-host-config (manuall answerYes to questions except) If the script. says "This script. plans to use cyg_server, Do you want to use a different name? Answer no.
3)
cyglsa-config
reboot the computer.
这里我记得不重新启动也可以,可以使用net start sshd,启动服务。
4)
但这里我遇到了一个问题, 在输入ssh localhost,报错:
“Connectiion closed by remote host ”
是因为windows用户不在cygwin里,可以使用以下语句:
mkpasswd -l -c > /etc/passwd;
mkgroup -l -d > /etc/group;
然后重启服务,net stop sshd,然后net start sshd就可以了. 5)如果你不幸是domain用户,而刚好你使用 “mkgroup -l -d > /etc/group;”失败,可能你像我一样,访问那个domain很慢... 那么这里我提供一个方法,创建一个本地的同名用户就可以了,如原用户为domain/userA,那么
a)Control Panel->Administrative Tools->Computer Management
b)local users and groups -> Users.
c)Right button to new "userA".
d)re-execute
mkpasswd -l -c > /etc/passwd;
mkgroup -l > /etc/group; (there's no "-d" now 我想这基本上就能在cygwin 1.7.1和vista下成功配置ssh.
问题2:
安装Hadoop时,按照《Hadoop开发者入门专刊》 很顺利,但启动服务./start-all.sh,遇到问题,看后台log.(hadoop-0.20.2/logs),有这样的异常。 2010-10-03 16:32:36,517 ERROR org.apache.hadoop.hdfs.server.namenode.FSNamesystem: FSNamesystem initialization failed. org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory C:/tmp/hadoop-echnlee/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible. at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:290) at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:87) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:311) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.
后来发现是 《Hadoop开发者入门专刊》 里漏了一步,需要执行:
>cd hadoop/bin
>./hadoop namenode -format
>./start-all.sh
问题3:
完成安装后,很容易写出Hello程序,按照《Hadoop开发者入门专刊》 的《在Windows 上使用eclipse 编写Hadoop 应用程序》。 但是我想换个路径就遇到了问题,hadoop说file not found. 关于Hadoop路径的问题,其中这位同学说得较清楚,《windows平台使用Cygwin安装hadoop遇到的一些小问题》 ,其实因为hadoop和cygwin将/映射的路径是不同的:cygwin认为/对应的实际上是c:/cygwin目录(如果cygwin安装在c盘根目录);而hadoop将/映射为c:/ 因此如果你不想把那个hello.jar发到bin下时,传给hadoop的路径应该是以c:/为根目录的。
最后,我的那个调用大致如下,在cygwin下的格式访问到hadoop.sh,然后传给hadoop jar的路径参数为以c:/为根的路径。
例如,cygwin的安装路径c:/cygwin,可能调用脚本如下:
/cygdrive/c/hadoop/run/hadoop-0.20.2/bin/hadoop jar /cygwin/home/hello_hadoop.jar HelloHadoop
参考
特意选些好的教程,如果以下链接都解决不了你的问题,那真的比较麻烦。
How to install a ssh server
《windows平台使用Cygwin安装hadoop遇到的一些小问题》
《Hadoop开发者入门专刊》
Hadoop on windows with Eclipse (挺详细的,但有些步骤我还没用到)