VirtualBox环境下基于多台ubuntu虚拟机的Hadoop分布式计算环境搭建
来源:互联网 发布:java有没有链表 编辑:程序博客网 时间:2024/06/18 03:52
<!--@page { margin: 2cm }P { margin-bottom: 0.21cm }A:link { so-language: zxx }--> VirtualBox环境下基于多台ubuntu虚拟机的Hadoop分布式计算环境搭建 作者:李磊beginner_Lee 完成时间:2011-5-2312:15 版本:v2.0 摘要:本文介绍了在VirtualBox下安装3台ubuntu虚拟机,并搭建Hadoop环境的基本步骤,最后运行了Hadoop自带example中的wordcount例程,可以作为初学者的入门教材。 备注:原创作品,首发blog.csdn.net/beginner_Lee,如有转载敬请注明。 环境: 主机:ubuntu11.04 VirtualBox版本:4.0.6r71344 ubuntu虚拟机版本:ubuntu11.04 ubuntu虚拟机jdk版本:jdk-1.6.0_25 ubuntu虚拟机hadoop版本:hadoop-0.20.2 关键词:Hadoop,wordcount,ssh 总体概述 详细步骤 安装虚拟机 安装配置ssh 安装jdk 安装hadoop 执行wordcount例程 观察运行结果,有三种方式 过程截图 常用hadoop命令 Sometips Q:datanode个数为0或者小于预设值 A:删除各个/home/vbox/tmp文件夹 Q:将各个节点的id_rsa.pub相互追加后无法实现ssh无密码互访 A:先搞二个互访,再一个一个加上去 Q:3台ubuntu11.04的虚拟机慢死了
要在单独的一台计算机上实现Hadoop多节点分布式计算,需要通过虚拟机建立多个主机,鉴于VirtualBox的大小只是VMware的十分之一,我选择了前者。依次完成新建虚拟机、安装ssh、配置密钥实现无密码访问、安装jdk、安装hadoop并配置后,就可以运行wordcount来见识一下了不起的东西了!
首先要在vbox中建立ubuntu系统,无论主机的操作系统是windows还是linux都没关系,我们之后进行的所有操作都只在虚拟机的ubuntu中进行。由于是在虚拟机中安装,就没有硬盘安装ubuntu那样麻烦了。上官网把ubuntu10.04LTS.iso下好,放在本地文件夹中,启动vbox,新建一个子os,选项都很简单,网卡设置为host-only,从之前下载的iso镜像启动。启动后的安装步骤在这里不再赘述,如有疑问请参照我之前的一篇文章。当第一个虚拟机建好后,不要使用同样的方法建立第二个ubuntu系统,vbox为我们提供了简便的复制方法,在Terminal中输入
sudovboxmanage clonevdi [source.vdi][destination.vdi];
就可以完全克隆一个os,之后new一个os,在选择硬盘那里找到刚clone的destination.vdi作为硬盘即可。我们用这种方法建立3台虚拟机,分别命名为UB01,UB02和UB03,它们的用户名必须一致,这里设置为vbox,为了简单,密码也统一设定为vbox。进行到这里,可以用ifconfig查看三台虚拟机的ip地址,正常的话它们的ip各不相同,且相互之间可以ping通,到这里就完成了第一步。
仅仅能ping通还是不够的,为了完成分布式计算系统,需要三台机器相互之间可以无密码访问(或者是master可以无密码访问2个slave)。首先在三台虚拟机上安装ssh-openserver
sudoapt-get install sshrsync
完成后,在个人目录/home/vbox/下新建.ssh文件夹,在.ssh中执行
ssh-keygen-trsa
系统会问你一些配置,由于是初次实验,不需要这些内容,点回车继续下去即可。完成后会在.ssh/下生成id_rsa和id_isa.pub两个文件,三台机器做同样处理。忘了一件事,需要配置三台机器的别名,这样就不用通过ip互访了,打开/etc/hosts,清空里面的内容,写入
127.0.0.1localhostlocalhost.localdomainlocalhost
192.168.56.101UB01UB01.localdomainUB01
192.168.56.102UB02
192.168.56.103UB03
对于UB01按如上书写,对于UB02如下,UB03则可一并推出(这里的每一个ip地址都应该是ifconfig后看到的,因机而异)
127.0.0.1localhostlocalhost.localdomainlocalhost
192.168.56.101UB01
192.168.56.102UB02UB02.localdomainUB02
192.168.56.103UB03
设置完别名,可以相互ping一下看看是否生效,这里ping的对象就不是ip地址而是别名了。接下来把它们的密钥相互交换,如在UB01中执行
scp~/.ssh/id_isa.pub vbox@UB02:/home/vbox/.ssh/id_isa.pub.UB01
scp~/.ssh/id_isa.pubvbox@UB03:/home/vbox/.ssh/id_isa.pub.UB01
这样做的目的是把UB01的密钥交给UB02和UB03,对UB02和UB03做同样处理,完成后每一个机器的/.ssh/中应该有3个密钥,一个是自己的,另两个是别人的,把自己的密钥连同别人的两个密钥加到授权密钥中(对UB01)
catid_isa.pub >> authorized_keys;
cat id_isa.pub.UB02 >>authorized_keys;
cat id_isa.pub.UB03 >>authorized_keys;
对其它两台机器做同样处理。接下来检验相互之间是否可以通过ssh实现无密码访问,在终端输入(对UB01)
sshUB02;
ssh UB03;
访问成功会现实欢迎信息,初次访问需要yes,之后就可以不直接访问了。
在ubuntu系统中安装jdk的方法我只简述一下,有困难者请google之,网络上资源多多。首先下载对应版本的jdk,下载完成后把.bin包移动到个人目录/home/vbox/,执行
chmodu+x jdk-a.b.c.bin;
sudo -s ./jdk-a.b.c.bin;
等待安装完成,会在当前路径生成jdk目录,接下来设置环境变量,在/etc/profile/中添加JAVA_HOME、JRE_HOME、CLASSPATH和PATH的值,reboot后在Terminal输入java-version会看到版本信息,证明安装成功。
为了备忘,环境变量的配置还是写在下边吧
JAVA_HOME=/home/vbox/jdk1.6.0_25
exportJRE_HOME=$JAVA_HOME/jre
exportCLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
expoetPATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
将下载到的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/profile中,添加如下内容
export HADOOP_HOME=/home/vbox/hadoop-0.20.2
exportPATH=$HADOOP_HOME/bin:$PATH
接下来需要修改hadoop/conf/目录下的配置文件,共有6个文件需要修改,分别是masters、slaves、core-site.xml、mapred-site.xml、hdfs-site.xml、hadoop-env.sh,修改如下
文件masters
UB01
文件slaves
UB02
UB03
文件core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/vbox/tmp</value>
<description>Asyou like</description>
</property>
<!--filesystem properties-->
<property>
<name>fs.default.name</name>
<value>hdfs://UB01:9000</value>
</property>
</configuration>
文件mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>UB01:9001</value>
</property>
</configuration>
文件hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
文件hadoop-env.sh在末尾添加
exportJAVA_HOME=/home/vbox/jdk1.6.0_25
说明几个地方,以上几个文件中具体的版本号、路径与ip地址要根据各自虚拟机信息区别配置,不要把我的ip抄到你的文件里,没用的。注意hdfs-site.xml中设定为1的value是最小节点数,之前为3,会出现2个slave运行不能的情况,以上配置信息对UB01、UB02和UB03完全一致。
进入/home/vbox/hadoop/目录,格式化文件系统并启动所有服务
hadoop namenode -format;
start-all.sh
编写输入文件,建立input输入并将文件写入input
echo “It is such a boring thing” > input_test_01;
echo“But I like it” > input_test_02;
hadoop fs -mkdir input;
hadoop fs -copyFormatLocalinput_test_0* input;
执行wordcount并察看计数结果
hadoop jar hadoop-0.20.2-examples.jar wordcount input output;
hadoop fs -cat output/part-r-00000;
会在Terminal中看到如下wordcount信息
51
Damn!1
NAT1
...
注意,在第一次执行wordcount后,input和output文件依旧存在,若再次执行wordcount会出现无法响应的错误,需要通过以下的命令删除input与output,系统才会正常工作。使用xxxxxx命令关闭防火墙。
hadoop dfs -rmr input output
通过web方式http://UB01:50070
通过java方式Terminal输入jps
监测HDFS方式Terminal输入hadoopdfsadmin -report
略
hadoop namenode -format格式化节点
start-all.sh开启所有服务
hadoop dfsadmin -report察看报告
hadoop fs -mkdire input新建输入目录
hadoop fs -ls/列出文件系统
hadoopfs-put conf input将conf目录put到input目录
hadoopfs -rmr output删除output目录
hadoopjar hadoop-0.20.2-examples.jar wordcount inputoutput运行wordcount
hadoopfs -get ouput /home/output拷贝到本地
home/catotuput/*显示
hadoopfs -copyToLocal input /home/vbox拷贝,同fs-get
A:换成10.04
- VirtualBox环境下基于多台ubuntu虚拟机的Hadoop分布式计算环境搭建
- VirtualBox环境下基于多台ubuntu虚拟机的Hadoop分布式计算环境搭建
- VirtualBox环境下基于多台ubuntu虚拟机的Hadoop分布式计算环境搭建
- VirtualBox下安装3台Ubuntu虚拟机,并搭建Hadoop
- ubuntu环境下virtualbox 搭建安卓虚拟机
- 基于WindowsXP环境的Hadoop伪分布式环境的搭建
- 基于WindowsXP环境的Hadoop完全分布式环境的搭建
- CentOS6.5虚拟机下搭建Hadoop伪分布式环境
- 虚拟机中Hadoop分布式环境搭建
- centos/ubuntu环境下hadoop伪分布式搭建
- 本地搭建Hadoop伪分布式环境之一:虚拟机的安装
- ubuntu环境下搭建Hadoop伪分布式环境和Eclipse开发环境
- 【环境搭建】hadoop分布式计算开发环境搭建
- 基于AWS搭建分布式计算环境
- Ubuntu上搭建Hadoop环境(伪分布式)
- ubuntu 12.10 hadoop全分布式环境搭建
- Ubuntu hadoop 伪分布式环境搭建步骤
- ubuntu 13.04 hadoop伪分布式环境的搭建
- 时间格式 年月日时分秒毫秒
- "CLR Via C#" -- Read Note Part 01
- 搭建基于xwiki的知识管理平台
- How Many Fibs?
- oracle的rank,over partition 使用
- VirtualBox环境下基于多台ubuntu虚拟机的Hadoop分布式计算环境搭建
- 存储过程 游标
- Python与网页相关的操作集锦
- 怎么根据linux c/c++ 开发的d-bus服务生成java 的调用接口文件
- shunlian
- datagridview 分页查询
- 一种求和的创新思维的应用
- [Squid] CDN应用常识
- ajax