VirtualBox环境下基于多台ubuntu虚拟机的Hadoop分布式计算环境搭建

VirtualBox环境下基于多台ubuntu虚拟机的Hadoop分布式计算环境搭建


作者:李磊 beginner_Lee

完成时间:2011-5-23 12:15

版本:v2.0

摘要:本文介绍了在VirtualBox下安装3台ubuntu虚拟机,并搭建Hadoop环境的基本步骤,最后运行了Hadoop自带example中的wordcount例程,可以作为初学者的入门教材。

备注:原创作品,首发blog.csdn.net/beginner_Lee,如有转载敬请注明。

环境:

主机:ubuntu11.04

VirtualBox版本:4.0.6 r71344

ubuntu虚拟机版本:ubuntu11.04

ubuntu虚拟机jdk版本:jdk-1.6.0_25

ubuntu虚拟机hadoop版本:hadoop-0.20.2


关键词:Hadoop,wordcount,ssh


总体概述要在单独的一台计算机上实现Hadoop多节点分布式计算,需要通过虚拟机建立多个主机,鉴于VirtualBox的大小只是VMware的十分之一,我选择了前者。依次完成新建虚拟机、安装ssh、配置密钥实现无密码访问、安装jdk、安装hadoop并配置后,就可以运行wordcount来见识一下了不起的东西了!

详细步骤

安装虚拟机首先要在vbox中建立ubuntu系统,无论主机的操作系统是windows还是linux都没关系,我们之后进行的所有操作都只在虚拟机的ubuntu中进行。由于是在虚拟机中安装,就没有硬盘安装ubuntu那样麻烦了。上官网把ubuntu10.04LTS.iso下好,放在本地文件夹中,启动vbox,新建一个子os,选项都很简单,网卡设置为host-only,从之前下载的iso镜像启动。启动后的安装步骤在这里不再赘述,如有疑问请参照我之前的一篇文章。当第一个虚拟机建好后,不要使用同样的方法建立第二个ubuntu系统,vbox为我们提供了简便的复制方法,在Terminal中输入sudo vboxmanage clonevdi [source.vdi] [destination.vdi];就可以完全克隆一个os,之后new一个os,在选择硬盘那里找到刚clone的destination.vdi作为硬盘即可。我们用这种方法建立3台虚拟机,分别命名为UB01,UB02和UB03,它们的用户名必须一致,这里设置为vbox,为了简单,密码也统一设定为vbox。进行到这里,可以用ifconfig查看三台虚拟机的ip地址,正常的话它们的ip各不相同,且相互之间可以ping通,到这里就完成了第一步。

安装配置ssh仅仅能ping通还是不够的,为了完成分布式计算系统,需要三台机器相互之间可以无密码访问(或者是master可以无密码访问2个slave)。首先在三台虚拟机上安装ssh-openserver

sudo apt-get install ssh rsync完成后,在个人目录/home/vbox/下新建.ssh文件夹,在.ssh中执行

ssh-keygen -t rsa系统会问你一些配置,由于是初次实验,不需要这些内容,点回车继续下去即可。完成后会在.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.pub vbox@UB03:/home/vbox/.ssh/id_isa.pub.UB01这样做的目的是把UB01的密钥交给UB02和UB03,对UB02和UB03做同样处理,完成后每一个机器的/.ssh/中应该有3个密钥,一个是自己的,另两个是别人的,把自己的密钥连同别人的两个密钥加到授权密钥中(对UB01)

cat id_isa.pub >> authorized_keys;

cat id_isa.pub.UB02 >> authorized_keys;

cat id_isa.pub.UB03 >> authorized_keys;对其它两台机器做同样处理。接下来检验相互之间是否可以通过ssh实现无密码访问,在终端输入(对UB01)

ssh UB02;

ssh UB03;访问成功会现实欢迎信息,初次访问需要yes,之后就可以不直接访问了。

安装jdk在ubuntu系统中安装jdk的方法我只简述一下,有困难者请google之,网络上资源多多。首先下载对应版本的jdk,下载完成后把.bin包移动到个人目录/home/vbox/,执行

chmod u+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

export JRE_HOME=$JAVA_HOME/jre

export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

expoet PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

安装hadoop将下载到的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

export PATH=$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

hadoop.tmp.dir

/home/vbox/tmp

As you like


fs.default.name

hdfs://UB01:9000

文件mapred-site.xml

mapred.job.tracker

UB01:9001

文件hdfs-site.xml

dfs.replication

1

文件hadoop-env.sh在末尾添加

export JAVA_HOME=/home/vbox/jdk1.6.0_25说明几个地方,以上几个文件中具体的版本号、路径与ip地址要根据各自虚拟机信息区别配置,不要把我的ip抄到你的文件里,没用的。注意hdfs-site.xml中设定为1的value是最小节点数,之前为3,会出现2个slave运行不能的情况,以上配置信息对UB01、UB02和UB03完全一致。

执行wordcount例程进入/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 -copyFormatLocal input_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输入hadoop dfsadmin -report

过程截图略

常用hadoop命令

hadoop namenode -format格式化节点

start-all.sh开启所有服务

hadoop dfsadmin -report察看报告

hadoop fs -mkdire input新建输入目录

hadoop fs -ls/列出文件系统

hadoopfs -put conf input将conf目录put到input目录

hadoop fs -rmr output删除output目录

hadoop jar hadoop-0.20.2-examples.jar wordcount input output运行wordcount

hadoop fs -get ouput /home/output拷贝到本地

home/cat otuput/*显示

hadoop fs -copyToLocal input /home/vbox拷贝,同fs -get

Some tips

Q:datanode个数为0或者小于预设值

A:删除各个/home/vbox/tmp文件夹

Q:将各个节点的id_rsa.pub相互追加后无法实现ssh无密码互访

A:先搞二个互访,再一个一个加上去

Q:3台ubuntu11.04的虚拟机慢死了

A:换成10.04


目前您尚未登录,请 登录 或 注册 后进行评论

xiaoyao3857

2012-10-25 15:291楼

回复

"有3个密钥,一个是自己的,另两个是别人的,把自己的密钥连同别人的两个密钥加到授权密钥中(对UB01)

cat id_isa.pub >> authorized_keys;

cat id_isa.pub.UB02 >> authorized_keys;

cat id_isa.pub.UB03 >> authorized_keys;

对其它两台机器做同样处理。接下来检验相互之间是否可以通过ssh实现无密码访问,在终端输入(对UB01)

ssh UB02;

ssh UB03;

访问成功会现实欢迎信息,初次访问需要yes,之后就可以不直接访问了。"看上去,上面"cat id_isa.pub.UB03 >> authorized_keys;"后面似乎有分号或冒号,但实际上应该没有吧?另外,若说安装不了openssh-server,那么,应该试图改一下软件源,然后 sudo apt-get update

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容