摘要:本文介绍了在VirtualBox下安装3台ubuntu虚拟机,并搭建Hadoop环境的基本步骤,最后运行了Hadoop自带example中的wordcount例程。
1 实验环境
VirtualBox版本:4.3.2 r90405
ubuntu虚拟机版本:ubuntu11.04
ubuntu虚拟机jdk版本:jdk⑴.6.0_45
ubuntu虚拟机hadoop版本:hadoop-0.20.2
2 整体概述
要在单独的1台计算机上实现Hadoop多节点散布式计算,需要通过虚拟机建立多个主机,本文使用VirtualBox虚拟机搭建多节点平台。完成新建虚拟机、安装ssh、配置密钥实现无密码访问、安装jdk、安装hadoop并配置,并运行Hadoop中自带的wordcount程序来验证环境配置。
3 详细步骤
3.1 虚拟机安装
由于要同时运行多台虚拟机,斟酌到系统负载,本次实验选择的是ubuntu的初期版本10.04,下载好系统镜像文件后,打开VirtualBox,新建1个OS,经过简单的配置后1台虚拟机便建好了,然后启动虚拟机,选择镜像文件目录,经过系统选项后,系统便建好了,然后利用相同的方法再建1台,3台虚拟机分别命名为UB01、UB02和UB03,用户名都设置为vbox,登陆密码也都为vbox,建好后用ifconfig查看3台虚拟机的ip地址,可以看出它们的ip各不相同,且相互之间可以ping通,以下图所示,到这里就完成了虚拟机安装。
能够ping通后,再配置3台机器的别名,这样就不用通过ip互访了,打开/etc/hosts,添加内容:
223.3.77.207 UB01
223.3.73.102 UB02
223.3.85.84 UB03
对UB01按如上书写,对UB02以下,UB03则可1并推出(这里的每个ip地址都应当是ifconfig后看到的,因机而异)
设置完别名后,通过ping虚拟机别名即可ping通,结果以下图:
3.2 ssh安装及配置
仅仅能ping通还不够,为了完成份布式计算系统,需要3台机器相互之间可以无密码访问(或是master可以无密码访问slave)。首先在3台虚拟机上安装ssh-openserver:
sudo apt-get install ssh rsync
完成后,在个人目录/home/vbox/下新建.ssh文件夹,在.ssh中履行:
ssh-keygen -t rsa
系统会问你1些配置,由因而初次实验,不需要这些内容,点回车继续下去便可。完成后会在.ssh/下生成id_rsa和id_rsa.pub两个文件,3台机器做一样处理。
秘钥生成好以后我们需要把3台虚拟机的密钥相互交换,如在UB01中履行
scp ~/.ssh/id_rsa.pub UB02:/home/vbox/.ssh/id_rsa.pub.UB01
scp ~/.ssh/id_rsa.pub UB03:/home/vbox/.ssh/id_rsa.pub.UB01
上述两句的作用是把本机上的id_rsa.pub文件(UB01上密钥)复制到UB02和UB03上的相同位置,并重命名为id_rsa.pub.UB01。
对UB02和UB03做一样处理,完成后每个机器的/.ssh/中应当有3个密钥,1个是自己的,另两个是他人的,把自己的密钥连同他人的两个密钥加到授权密钥中(对UB01)
cat id_rsa.pub >> authorized_keys;
cat id_rsa.pub.UB02 >> authorized_keys;
cat id_rsa.pub.UB03 >> authorized_keys;
上述3句分别将3个密钥加到同1个授权密钥authorized_keys中。
对UB02和UB03做一样处理。这样3个机子都分别有了其它两个机子的访问权利。
接下来检验相互之间是不是可以通过ssh实现无密码访问,在终端输入(对UB01):
ssh UB02;
访问成功会显示欢迎信息,初次访问需要yes,以后就能够直接访问了,实验截图以下:
3.3 jdk安装及配置
在3台虚拟机中都要安装jdk,只需要在1台机子上安装配置,同时将jdk文件夹复制给其它两台机子,可不用各自安装。
我们选择的jdk文件是jdk⑹u45-linux-i586.bin,下载完成后把.bin包移动到个人目录/home/vbox/,履行
chmod u+x jdk⑹u45-linux-i586.bin;
sudo -s ./jdk⑹u45-linux-i586.bin;
等待安装完成,会在当前路径生成jdk目录,接下来设置环境变量,在/etc/environment中添加JAVA_HOME、CLASSPATH和PATH的值,reboot后在Terminal输入java -version会看到版本信息,证明安装成功,安装结果以下图:
3.4 Hadoop安装及配置
也是在3台机子履行一样的操作,可以在1台机子上操作了,然后复制给其它机子。
将下载到的hadoop-0.20.2.tar.gz移动到个人目录/home/vbox/,履行安装操作:
tar -xzvf hadoop-0.20.2.tar.gz //解压文件
会在当前路径生成hadoop文件夹,接着修改文件夹所有者:
chown vbox:vbox hadoop-0.20.2
随后把hadoop的环境变量加入到/etc/environment文件中,添加完后文件以下图:
接下来需要修改hadoop/conf/目录下的配置文件,共有6个文件需要修改,分别是masters、slaves、core-site.xml、mapred-site.xml、hdfs-site.xml、hadoop-env.sh,修改以下图:
文件hadoop-env.sh中添加JAVA_HOME变量值,设置为:JAVA_HOME=/home/vbox/jdk1.6.0_45.以上配置信息对UB01、UB02和UB03完全1致。
3.5wordcount程序测试
本测试用的文件为file,大小分别为128M,测试时进入/home/vbox/hadoop/目录,格式化文件系统并启动所有服务
hadoop namenode-format;
start-all.sh
开启服务后可以通过jps命令和网页查看hadoop系统情况,以下图:
建立input输入并将文件写入input
hadoop fs -mkdir input;
hadoop fs -put fileinput; //file是文本文件的路径,上传到HDFS中
履行wordcount并观察计数结果
hadoop jarhadoop-0.20.2-examples.jar wordcount input output
实验进程及结果以下图: