ubuntu环境hadoop全分布式模式配置过程

来源:互联网 发布:波尔代热斯现象知乎 编辑:程序博客网 时间:2024/05/18 15:51

ubuntu环境hadoop全分布式模式配置过程

(2013-04-13 18:41:31)
转载
标签:

hadoop全分布模式

ubuntu

linux

it

分类:hadoop学习笔记
上次的笔记解释了怎么在ubuntu上配置hadoop的伪分布式模式,但是伪分布式或独立模式仅仅适合开发程序得时候使用。昨天晚上熬夜拿舍友的几台电脑进行了全分布式配置,现做笔记如下。

我的配置条件:5台笔记本电脑(分别为A,B,C,D,E;均为unbuntu操作系统),局域网(我使用的校园网),hadoop安装包,jdk安装包


第一步:
定义一个公共账号。对于hadoop,所有节点上得账号应该有相同得用户名(我们使用hadoop-user),出于安全得考虑,建议把这个账号设置为用户级别。
在A,B,C,D,E每一台电脑上新添加一个用户为hadoop-user。
命令为:adduser hadoop-user
执行命令后,按要求添加信息即可。然后要用当前用户修改/etc/sudoers文件,按下图添加hadoop-user那行,否则在切换到hadoop-user不能用sudo,联网都是问题。
ubuntu环境hadoop全分布式模式配置过程

第二步:
验证ssh安装。第一步以后切换到hadoop-user用户下。不管你是否安装了,openssh,你最好都执行一下此命令:sudoapt-get install openssh-server openssh-client

注意以上是每一台都要进行得操作。

第三步:
生成ssh密钥对。验证了ssh再集群上所有节点正确安装之后,我们使用主节点上得ssh-keygen来生成一个rsa密钥对。务必要避免输入口令,否则,主节点每次试图访问其它节点时,你都得手动地输入口令。

我们选择A为master节点,在A节点上执行命令:
ssh-keygen -t rsa
执行后一直回车即可。

下面我们把生成得公钥分布到集群中。

第四步:
把公钥分布到集群中。

尽管有些繁琐,仍需逐一将公钥复制到主节点以及每个从节点上。
(为了ssh登陆成功,要关闭ubuntu防火墙,命令为sudo ufw disable,每个节点上都要关闭)、

在主节点A上执行:scp ~/.ssh/id_rsa.pubhadoop-user@target:~/master_key

注意,这里target为目标节点的ip,可以目标节点上查询他的ip。如果觉得再主节点上每次都输入Ip繁琐,可以修改主节点的/etc/hosts文件,以这样得形式添加到该文件里:
ip+tab+名称,如图ubuntu环境hadoop全分布式模式配置过程

然后手动登陆到目标节点,假设为B,也就是上面得target(在未配置免密码登陆完成之前,都是要输入密码的),登陆以后,就能在A节点上控制B了。
执行命令:
mkdir ~/.ssh
mv ~/master_key ~/.ssh/authorized_keys
然后exit退出B节点链接,在尝试ssh连接B,如果不需要密码就能登陆,则成功。
按照上面方法在C,D,E上进行相同操作,保证A节点访问任何一个从节点都不用输入口令。

第五步:
jdk配置,要保证每台节点得jdk安装路径一致,我得为/home/hadoop-user/Program/jdk,每台节点上JAVA_HOME,PATH等都要配置好,这些就不详细说了。
在主节点上,修改hadoop安装目录下得conf/hadoop-env.sh添加JAVA_HOME路径,上篇笔记里有详细说明。

第六步:
全分布式模式的配置文件。
core-site.xml

ubuntu环境hadoop全分布式模式配置过程

mared-site.xml
ubuntu环境hadoop全分布式模式配置过程

hdfs-site.xml

ubuntu环境hadoop全分布式模式配置过程


我们还需要更新Mater和slaves文件来指定其他守护进程得位置。
master文件里写入m是ster的ip,slaves里面写入所有从节点得ip.

然后用scp命令把hadoop安装目录拷贝到集群中的所有节点,在格式化HDFS以准备好存储数据:
bin/hadoop namenode -format
现在可以启动hadoop的守护进程:
bin/start-all.sh
并jps验证节点正在运行被指派的任务。
master节点:JobTracker NameNode Jps SecondaryNameNode
slave节点:TaskTracker Jps DataNode

到此,一个可用的集群终于建成了!

下面让我们试着运行一个程序。

在任意目录下编辑一个文件input,写点单词进去。

执行命令hadoop fs -put input input(hadoop执行脚本已经在PATH路径中)

然后在hadoop目录下执行命令:hadoop jar hadoop-examples-1.0.4.jarwordcount input output

然后观察执行过程。
完毕后,hadoop fs -cat output/*,查看结果。
0 0