Hapdoop试玩

来源:互联网 发布:发展下线系统源码 编辑:程序博客网 时间:2024/05/21 22:47

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/passwdchmod u+w /etc/passwd
chmod +r  /etc/group
chmod u+w /etc/groupchmod  755  /var  touch /var/log/sshd.log
chmod 664 /var/log/sshd.log

2)ssh-host-config   (manuall answerYesto 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.<init>(FSNamesystem.java:292)at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:201)at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:279)at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:956)at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:962010-10-03 16:32:36,519 INFO org.apache.hadoop.ipc.Server: Stopping server on 88882010-10-03 16:32:36,520 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: 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.<init>(FSNamesystem.java:292)at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:201)at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:279)at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:956)at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:965)

 

后来发现是《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 (挺详细的,但有些步骤我还没用到)

原创粉丝点击