本周末在家里的两台电脑上用Vmware+Redhat As6 + hadoop-0.21.0上搭建了一个3节点的Hadoop集群,虽说是原来已经搭建过类似的集群了,也跑过JavaAPI来操作HDFS与Map/reduce,但是这一次依然是受到挑战了,好些小细节,稍有遗漏就会有如坐过山车一般大起大落。故此,记下本次的操作的几个步骤,以供后续参考。
1、建3个VM的虚拟机,保证互联互通
IP address:192.168.43.201 hostname :zhangzk01
以zhangzk01为namenode节点,zhangzk02与zhangzk03为datanode。
zhangzk01机器的/etc/hosts文件内容修改为如下形式:
127.0.0.1 localhost localhost.localdomain localhost
zhangzk02机器的/etc/hosts文件内容修改为如下形式:
127.0.0.1 localhost localhost.localdomain localhost 192.168.43.203 zhangzk03
zhangzk03机器的/etc/hosts文件内容修改为如下形式:
127.0.0.1 localhost localhost.localdomain localhost 192.168.43.202 zhangzk02
2、保证Master/Slave机器之间可以通过SSH无密钥互相访问
zhangzk01: 以用户zhangzk登录zhangzk01,在家目录下执行下述命令: ssh-keygen -t rsa 一路回车下去即可在目录/home/zhangzk/.ssh/下建立两个文件 id_rsa.pub和id_rsa。 接下来,需要进入/home/zhangzk/.ssh目录,执行如下命令: cd .ssh 再把is_rsa.pub文件复制到zhangzk02和zhangzk03机器上去。
scp -r id_rsa.pub zhangzk@zhangzk03:/home/zhangzk/.ssh/authorized_keys_zhangzk01
zhangzk02: 以用户zhangzk登录zhangzk02,在目录下执行命令: ssh-keygen -t rsa 一路回车下去即可在目录/home/zhangzk/.ssh/下建立两个文件 id_rsa.pub和id_rsa。 接下来,需要进入/home/zhangzk/.ssh目录,执行如下命令: cd .ssh 再把is_rsa.pub文件复制到zhangzk01机器上去。 scp -r id_rsa.pub zhangzk@zhangzk01:/home/zhangzk/.ssh/authorized_keys_zhangzk02
zhangzk03: 以用户zhangzk登录zhangzk03,在目录下执行命令: ssh-keygen -t rsa 一路回车下去即可在目录/home/zhangzk/.ssh/下建立两个文件 id_rsa.pub和id_rsa。 接下来,需要进入/home/zhangzk/.ssh目录,执行如下命令: cd .ssh 再把is_rsa.pub文件复制到zhangzk01机器上去。 scp -r id_rsa.pub zhangzk@zhangzk01:/home/zhangzk/.ssh/authorized_keys_zhangzk03 ******************************************************************************* 上述方式分别为zhangzk01/zhangzk02/zhangzk03机器生成了rsa密钥,并且把zhangzk01的id_rsa.pub复制到zhangzk02/zhangzk03上去了,而把zhangzk02和zhangzk03上的id_rsa.pub复制到zhangzk01上去了。 接下来还要完成如下步骤: zhangzk01: 以zhangzk用户登录zhangzk01,并且进入目录/home/zhangzk/.ssh下,执行如下命令:
cat id_rsa.pub >> authorized_keys zhangzk02: 以zhangzk用户登录zhangzk02,并且进入目录/home/zhangzk/.ssh下,执行如下命令:
cat id_rsa.pub >> authorized_keys zhangzk03:
以zhangzk用户登录zhangzk03,并且进入目录/home/zhangzk/.ssh下,执行如下命令:
cat id_rsa.pub >> authorized_keys 通过上述配置,现在以用户zhangzk登录zhangzk01即可以无密钥认证方式访问zhangzk02和zhangzk03了,同样也可以在zhangzk02和zhangzk03上以ssh zhangzk01方式连接到zhangzk01上进行访问了。
3、配置Java虚拟机 分别在3个机器节点上安装java。 我安装的是jdk-6u25-linux-x64-rpm.bin。 在/home/zhangzk/.bashrc中配置如下环境变量:
export JAVA_HOME=/usr/java/jdk1.6.0_25
执行java -version可以看到如下结果则表示成功!
[zhangzk@zhangzk01 software]$ java -version 4、配置Hadoop的配置文件 先在本地修改好hadoop的配置文件,即hadoop-0.21.0/conf下的文件core-site.xml、hdfs-site.xml、mapred-site.xml、masters、slaves内容。 core-site.xml:
hdfs-site.xml:
mapred-site.xml:
masters:
slaves:
5、设置Hadoop环境变量 将本地配置好的hadoop-0.21.0目录复制到zhangzk01、zhangzk02、zhangzk03上的目录/home/zhangzk下,保证hadoop的配置文件目录conf的物理路径为/home/zhangzk/hadoop-0.21.0/conf。 分别在上述3个节点机器上配置hadoop的环境变量。
6、启动HDFS和Mapreduce,并且查看集群状态
1)格式化文件系统
4)查看集群状态 7、遇到的问题与解决办法 遇到过两个问题: (1)zhangzk01上的防火墙没有关闭 No route to host (2)/etc/hosts中的文件被自动修改 org.apache.hadoop.ipc.RPC: Server at zhangzk01/192.168.43.201:9000 not available yet, Zzzzz. (责任编辑:IT) |