详细 完整分布模式安装hadoop VirtualBox 3虚拟机
基础设备
宿主机器:
CPU:Intel® Core™ i5-2400 CPU @ 3.10GHz
内存:4G
硬盘:500G
操作系统:Win7 32Bit
Linux 版本:
CentOS-6.2-x86_64-minimal.iso
虚拟机版本
VirtualBox 4.2.0 RC1
计划安装3个CentOS虚拟机,实现完整分布式模式。
h1,h2,h3 分别内存为512M,硬盘容量为20G。
虚拟机配置
新建虚拟机。
内存预先设置为1G,安装完成后调整为512M。1G以上内存方可使用GUI安装。
加载ISO光盘镜像。
网络方式使用 桥接网卡 最为简单。
具体介绍:http://www.douban.com/group/topic/15558388/
配置完成后,直接启动该虚拟机。
跳过光盘检测。
下面是配置键盘与语言等选项,一路next下去,注意网络配置画面。
分区配置。
然后配置管理员密码等。
完成安装,重新启动虚拟机。
正常登录后,在shell命令中,输入uname –r,查看Linux版本内核。
输入ifconfig eth0 查看是否正常获取IP地址,使用ping命令确认能否上网。
使用yum update -y命令将系统更新。(163下载的ISO自动在163的镜像上下载。)
时间较长!
使用yum install –y wget 将下载工具安装。
彻底关闭Linux中的Iptables。
命令行中:service iptables stop && chkconfig iptables off
一般linux中都已经开启了ssh功能。
下载随意windows下的ssh客户端,例如:Xshell、SecureCRT、PuTTY 、Xmanager等。
登录后,使用此命令下载JAVA JDK
[root@h1 ~]# wget http://210.75.11.10/ jdk-7u7-linux-x64.rpm
[root@h1 ~]# rpm -ivh jdk-7u7-linux-x64.rpm
安装JAVA JDK
配置系统环境变量。
[root@h1 ~]# vi /etc/profile
添加
JAVA_HOME=/usr/java/jdk1.7.0_07
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH JAVA_HOME CLASSPATH
[root@h1 ~]# java –version 测试是否成功。
新增运行的hadoop用户,并配置密码。
将grid 添加到管理员组。
接下来,关闭本虚拟机。
halt –p
复制虚拟机
复制h1
C:\Program Files\Oracle\VirtualBox>VBoxManage clonehd "D:\Linux\CentOS\h1.vdi" "D:\Linux\CentOS\h2.vdi"
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: 74a09b9d-c4d8-4689-9186-87e34e4b5265
复制h3
C:\Program Files\Oracle\VirtualBox>VBoxManage clonehd "D:\Linux\CentOS\h1.vdi" "D:\Linux\CentOS\h3.vdi"
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: 110c9759-c9c3-4867-9721-3633dfe02384
将虚拟机文件添加到VirtualBox内。命名分别为h1,h2,h3。
分别登录3台虚拟机内,将IP地址与hostname,hosts修改正确,使之能互相ping通。
192.168.3.230 h1
192.168.3.231 h2
192.168.3.232 h3
vi /etc/hosts
复制的h2 h3同样要做以下修改。
vi /etc/sysconfig/network
命令行中输入hostname=h2 立即生效。
修改IP地址。
vi /etc/sysconfig/network-scripts/ifcfg-eth0
直接修改配置文件IPADDR和 HWADDR(抄VBOX上的MAC地址)还不能使网卡变更。
最简单的解决办法是直接删除70-persistent-net.rules配置文件
rm -fr /etc/udev/rules.d/70-persistent-net.rules
reboot
重启系统就ok了,系统会自动生成一个新的。
配置ssh互信
分别启动h1,h2,h3虚拟机,互相ping确认是否能通。
然后分别使用grid用户,正常登录每台机器执行生成密钥命令。
ssh-keygen –t rsa
回到h1主机上,使用跨主机的管道和重定向将h2,h3主机上的公钥id_rsa.pub添加到h1上的authorized_keys文件中。
分别将通过
ssh h2 cat ~/.ssh/id_rsa.pub && ssh h3 cat ~/.ssh/id_rsa.pub
添加到
authorized_keys
完成后,authorized_keys文件变成了三大段。
然后分别scp 复制到h2,h3机器中。
scp authorized_keys grid@h2:~/.ssh/
验证成功。
SSH互信配置完成。
配置hadoop下载hadoop
回到h1虚拟机内,使用wget 命令下载hadoop 0.20。(如果没有安装wget可以yum install –y wget安装。)
wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-0.20.2/hadoop-0.20.2.tar.gz
使用Xshell操作会简便很多,可以在windows与linux间复制。
解压hadoop
[grid@h1 ~]$ tar zxvf hadoop-0.20.2.tar.gz
分别修改core-site.xml、hdfs-site以及mapred-site.xml
:wq保存退出。
[grid@h1 conf]$ vi mapred-site.xml
:wq保存退出。
[grid@h1 conf]$ vi hdfs-site.xml
:wq保存退出。
配置hadoop-env.sh文件
再次确认java jdk安装在/usr/java/jdk1.7.0_07目录下面。
[grid@h1 conf]$ vi hadoop-env.sh
:wq保存退出。
修改masters和slaves文件
分别存盘退出。
向各节点复制hadoop目录
[grid@h1 ~]$ scp -r hadoop-0.20.2 h2:~/
[grid@h1 ~]$ scp -r hadoop-0.20.2 h3:~/
格式化分布式文件系统
格式化成功。
启动守护进程
输入一次yes后,无需再输入。
检测守护进程启动情况
[grid@h1 hadoop-0.20.2]$ /usr/java/jdk1.7.0_07/bin/jps
jps工具查看java进程。
至此,hadoop完整分布式模式安装完成。