ITPub博客

首页 > 大数据 > Hadoop > Hadoop在windows上安装与配置(还未成功)

Hadoop在windows上安装与配置(还未成功)

Hadoop 作者:fansino 时间:2013-03-21 22:09:11 0 删除 编辑

一.    安装配置Cygwin

Cygwin可以在windows系统中模拟linux环境,可同时具备doslinuxshell的功能。

 

  1. 安装cygwin

安装时要选择安装DevelNet中的opensshopensslBase中的sedEditor里面的vim。为保险最好全部下载(All旁边的default点一下,变成install,不然下载下来的可能功能不全。

 

问题1:不知道那些选项有决定性作用,经常下载下来后不能使用。

问题2:下载需要非常长的时间,建议全部下载下来之后再到各节点机器上安装,否则下载可能出现意外中断,或者下载后没办法使用。

 

  1. ssh的配置。ssh-host-config

在第一步询问“Should privilege separation be used?(yes/no)”时,输入no;(必须选no,否则可能会出问题)

在第二步询问“(Say "no" if it is alreadyinstalled as a service) (yes/no)”时,输入yes

在第三步询问“Enter the value of CYGWIN for thedaemon: []”,直接回车。

看到“Host configuration finished. Have fun!”后此步即完成。

使用windows的管理工具中的服务管理,将“CYGWIN sshd”服务启动。

cygwin中输入ssh-keygen,一路回车即可。

然后在cygwin下依次执行如下命令:

cd ~/.ssh

cp id_rsa.pub authorized_keys

 

之后ssh localhost,若看到水牛图样,则表示成功

 

【问题1

# /usr/local/sbin/sshd
Privilege separation user sshd does not exist

【解决方案】
没有sshd用户 sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
scp  /etc/passwd root@HOST:/etc
scp  /etc/shadow root@HOST:/etc
scp  /etc/group  root@HOST:/etc

 

【问题2

windows服务管理器中启动sshd服务失败。通过win7的服务管理器查看,cygwin sshd服务确实安装上了,但是没有启动。所以,点击启动,但是启动失败。

【解决方案】

chown root empty

chown SYSTEM.None empty

启动服务

mkpasswd -l /etc/passwd
mkgroup -l /etc/group
cygrunsrv -R sshd
ssh-host-config -y
cygrunsrv -S sshd

(或者net start sshd

 

注:配置ssh中可能会出现很多问题,遇到其他问题只能继续求助搜索引擎。

二.    安装JDK

这边安装的是jdk-6u16

安装完后在环境变量中添加JAVA_HOME,值为c:/java/jdk 1.6.0(这边为安装目录)

添加变量CLASSPATH,值为%JAVA_HOME%lib;%JAVA_HOME%jrelib;%JAVA_HOME%lib ools.jar;

三.    安装配置hadoop

这边下载的是hadoop-1.0.4.tar.gz

进行项目部署

hadoop-1.0.4.tar.gz文件解压后的文件放在deploy目录下

 

hadoop-1.0.4/conf中,配置hadoop配置文件

1.      配置java环境

修改hadoop-env.sh文件,里面有个关于JAVA_HOME的配置,默认是被注释掉的(用#号放再开头),将#删掉,并修改为本地实际的JAVA_HOME即可

export JAVA_HOME=/cygdrive/c/java/jdk1.6.0

 

注:如果JAVA_HOME有空格,必须用引号把这个路径引起来。

 

2.      配置core-site.xml

拷贝hadoop-1.0.4srccorecore-default.xml文件到hadoop-1.0.4conf目录下,并重命名为core-site.xml

* 修改临时文件存放路径

  hadoop.tmp.dir

  /hadoop/sysdata/1.0.4/tmp

* 修改文件系统的默认名称

  fs.default.name

  hdfs://localhost:9000

3.      配置hdfs-site.xml

    拷贝hadoop-1.0.4srchdfshdfs-default.xml文件到hadoop-1.0.4conf目录下,并重命名为hdfs-site.xml

* 修改DFS文件系统namenode存放name表的目录

  dfs.name.dir

  /hadoop/sysdata/1.0.4/name

修改DFS文件系统datanode存放数据的目录

  dfs.data.dir

  /hadoop/sysdata/1.0.4/data

修改数据存放副本数量为1(因为我们要部署的是伪分布式单节点)

  dfs.replication

  1

 

4.      配置mapred-site.xml

拷贝hadoop-1.0.4src mapredmapred-default.xml文件到hadoop-1.0.4conf目录下,并重命名为mapred-site.xml

 

修改jobtracker运行的服务器和端口

  mapred.job.tracker

  localhost:9001

修改mepreduce运行存放的即时数据文件目录

  mapred.local.dir

  /hadoop/sysdata/1.0.4/temp

Mapreduce存放临时文件的目录

  mapred.child.tmp

  /hadoop/sysdata/1.0.4/temp

5.      格式化namenode

先进入河马图样(ssh localhost, cygwin中进入hadoop安装目录的bin目录,执行格式化指令,具体过程如下:

cd /cygdrive/d/hadoop/deploy/hadoop-1.0.4/bin

./hadoop namenode-format

 

6.       启动hadoop

执行./start-all.sh开始启动hadoop

若需要关闭hadoop了,执行./stop-all.sh即可。

 

【问题1

进入hadoopbin目录 cd/cygdrive/d/hadoop/deploy/hadoop-1.0.4/bin

执行./hadoop namenode -format namenode进行格式化时出现如下错误

Error: JAVA_HOME is not set.

【解决方案】

hadoop/conf/下有个hadoop-env.sh文件,里面有个关于JAVA_HOME的配置,默认是被注释掉的(用#号放再开头),将#删掉,并修改为本地实际的JAVA_HOME即可

export JAVA_HOME=/cygdrive/c/java/jdk1.6.0

 

注:如果JAVA_HOME有空格,必须用引号把这个路径引起来。

 

【问题2

进入hadoopbin目录 cd/cygdrive/d/hadoop/deploy/hadoop-1.0.4/bin

执行./hadoop namenode -format namenode进行格式化时出现如下错误

 

【解决方案】

1. 可能是./hadoop namenode –format中,-formatnamenode连在一起,中间隔个空格就行。因为format是一个参数

 

四.    做单机测试(wordcount

这一块问题还未解决

1.      建立本地数据文件

hadoop本地文件夹data下建立一个data_in文件夹,并在此文件夹下创建两个数据文件,分别是file1.txtfile2.txt

file1.txt中保存一个句子:hello world bye world

file2.txt中保存一个句子:hello hadoop bye hadoop

 

2.      上传本地文件到dfs文件系统

进入cygwin环境

进入hadoopbin目录:cd /cygdrive/d/hadoop/deploy/hadoop-1.0.4/bin

启动hadoop环境:./start-all.sh  (没启动环境会报错“Retrying connect to server”)

hdfs上建立input目录:./hadoop dfs –mkdir input

上传数据文件:./hadoop dfs -put /hadoop/code/data/data_in/*.txt input

查看文件是否上传成功:./hadoop dfs -ls input

(若要删除文件夹用 ./haoop dfs –rmr input)

 

3.      执行wordcount程序

hadoopbin目录下执行:

./hadoop jar ./../hadoop-examples-1.0.4.jar wordcount input output

 

【问题】

Jobtracker没启动。

【解决方案】

查看配置文件是否正确。

查看配置文件发现java.net.URISyntaxException: Relative path in absolute URI: localhost:9001即出现了不允许出现的字符,到配置文件中检查,看是否哪里有配置错误。不然就删掉配置文件重新进行配置。

 

【问题】

在运行./hadoop dfs -put /hadoop/code/data/data_in/*.txt input时运行出错

查找datanodelog 发现错误

ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in D:hadoopsysdata1.0.4data: namenode namespaceID = 680713889; datanode namespaceID = 1704827890

【解决方案】

这是由于namenode多次格式化,导致namenodedatanodeID不同,需修改ID使其一致。 修改datanodenamespaceID(位于sysdata/1.0.4/data/current/VERSION中)

 

【问题】

卡死在 map 0% reduce 0%

log发现遇到“Failed to set permissions of path”错误

【未解决】

网上说hadoop中存在bug,在windows系统中不能兼容文件权限操作。其他系统还未验证。

需要修改hadoopFileUtil类中checkReturnValue函数,把其内容全部注释掉。因为其内容为文件权限检查。修改后重新编译打包jar文件得到hadoop-core-1.0.4.jar,再覆盖掉hadoop中这个文件。

但是我用eclipse重新编译这个文件,出现很多错误,现在还未解决。

 

 

                                                                                                        

<!-- 正文结束 -->

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

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论