用于测试,我用4台虚拟机搭建成了hadoop结构java
我用了两个台式机。一个xp系统,一个win7系统。每台电脑装两个虚拟机,要否则内存就满了。node
一、安装虚拟机环境linux
Vmware,收费产品,占内存较大。ubuntu
或vim
Oracle的VirtualBox,开源产品,占内存较小,但安装ubuntu过程当中,重启会出错。windows
我选Vmware。bash
二、安装操做系统服务器
Centos,红帽开源版,接近于生产环境。网络
Ubuntu,操做简单,方便,界面友好。ssh
我选Ubuntu12.10.X 32位
三、安装一些经常使用的软件
在每台linux虚拟机上,安装:vim,ssh
sudo apt-get install vim
sudo apt-get install ssh
在客户端,也就是win7上,安装SecureCRT,Winscp或putty,这几个程序,都是依靠ssh服务来操做的,因此前提必须安装ssh服务。
service ssh status 查看ssh状态。若是关闭使用service ssh start开启服务。
SecureCRT,能够经过ssh远程访问linux虚拟机。
winSCP或putty,能够从win7向linux上传文件。
四、修改主机名和网络配置
主机名分别为:master,host2,host3,host4。
sudo vim /etc/hostname
网络配置,包括ip地址,子网掩码,DNS服务器。如上图所示。
五、修改/etc/hosts文件。
修改每台电脑的hosts文件。
hosts文件和windows上的功能是同样的。存储主机名和ip地址的映射。
在每台linux上,sudo vim /etc/hosts 编写hosts文件。将主机名和ip地址的映射填写进去。编辑完后,结果以下:
六、配置ssh,实现无密码登录
无密码登录,效果也就是在master上,经过 ssh host2 或 ssh host3 或 ssh host4 就能够登录到对方计算机上。并且不用输入密码。
四台虚拟机上,使用 ssh-keygen -t rsa 一路按回车就好了。
刚才都做甚了呢?主要是设置ssh的密钥和密钥的存放路径。 路径为~/.ssh下。
打开~/.ssh 下面有三个文件
authorized_keys,已认证的keys
id_rsa,私钥
id_rsa.pub,公钥 三个文件。
下面就是关键的地方了,(咱们要作ssh认证。进行下面操做前,能够先搜关于认证和加密区别以及各自的过程。)
①在master上将公钥放到authorized_keys里。命令:sudo cat id_rsa.pub >> authorized_keys
②将master上的authorized_keys放到其余linux的~/.ssh目录下。
命令:sudo scp authorized_keys hadoop@10.10.11.192:~/.ssh
sudo scp authorized_keys 远程主机用户名@远程主机名或ip:存放路径。
③修改authorized_keys权限,命令:chmod 644 authorized_keys
④测试是否成功
ssh host2 输入用户名密码,而后退出,再次ssh host2不用密码,直接进入系统。这就表示成功了。
七、上传jdk,并配置环境变量。
经过winSCP将文件上传到linux中。将文件放到/usr/lib/java中,四个linux都要操做。
解压缩:tar -zxvf jdk1.7.0_21.tar
设置环境变量 sudo vim ~/.bashrc
在最下面添加:
export JAVA_HOME = /usr/lib/java/jdk1.7.0_21
export PATH = $JAVA_HOME/bin:$PATH
修改完后,用source ~/.bashrc让配置文件生效。
八、上传hadoop,配置hadoop
经过winSCP,上传hadoop,到/usr/local/下,解压缩tar -zxvf hadoop1.2.1.tar
再重命名一下,sudo mv hadoop1.2.1 hadoop
这样目录就变成/usr/local/hadoop
①修改环境变量,将hadoop加进去(最后四个linux都操做一次)
sudo vim ~/.bashrc
export HADOOP_HOME = /usr/local/hadoop
export PATH = $JAVA_HOme/bin:$HADOOP_HOME/bin:$PATH
修改完后,用source ~/.bashrc让配置文件生效。
②修改/usr/local/hadoop/conf下配置文件
hadoop-env.sh,
(上面这张图片,有一些问题,只export JAVA_HOME进去就能够了,不用export HADOOP_HOME和PATH了 )
core-site.xml,
hdfs-site.xml,
mapred-site.xml,
master,
slave,
上面的hadoop-env.sh,core-site.xml,mapred-site.xml,hdfs-site.xml,master,slave几个文件,在四台linux中都是同样的。
配置完一台电脑后,能够将hadoop包,直接拷贝到其余电脑上。
③最后要记得,将hadoop的用户加进去,命令为
sudo chown -R hadoop:hadoop hadoop
sudo chown -R 用户名@用户组 目录名
④让hadoop配置生效
source hadoop-env.sh
⑤格式化namenode,只格式一次
hadoop namenode -format
⑥启动hadoop
切到/usr/local/hadoop/bin目录下,执行 start-all.sh启动全部程序
⑦查看进程,是否启动
jps
master,
host2,
host3,host4,的显示结果,与host2相同。