ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Hapdoop试玩

Hapdoop试玩

原创 Linux操作系统 作者:cnhappier 时间:2010-10-04 00:21:18 0 删除 编辑
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 answer Yes 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.(FSNamesystem.java:292)
at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:201)
at org.apache.hadoop.hdfs.server.namenode.NameNode.(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)

2010-10-03 16:32:36,519 INFO org.apache.hadoop.ipc.Server: Stopping server on 8888
2010-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.(FSNamesystem.java:292)
at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:201)
at org.apache.hadoop.hdfs.server.namenode.NameNode.(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 (挺详细的,但有些步骤我还没用到)

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7641902/viewspace-675364/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 6月21日周计划
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2010-06-02

  • 博文量
    3
  • 访问量
    3326