HA集群搭建

来源:互联网 发布:铂金数据 启信宝 编辑:程序博客网 时间:2024/06/05 07:55

最近在做HA集群搭建的实验,虽说并不是难度很高的事情,但是也足足折腾了我两天,一点都不轻松,不停出问题的时候真的好崩溃,但是昨晚之后回头看看自己做的笔记,又觉得好幸运,毕竟我遇到了很多问题,也了解更多细节,学习到更多的东西。

前期准备:
1.修改Linux主机名
2.修改IP
3.修改主机名和IP的映射关系(etc/hosts)
4.关闭防火墙(chkconfig iptables off)
chkconfig –list iptables //查看
chkconfig iptables off //关闭防火墙
service iptales status //查看
5.ssh免登陆
6.安装JDK,配置环境变量等(profile文件)

关于集群规划:
这里写图片描述

本来应该是把namenode和resourcemanager分开的,把namenode和resourcemanager分开是因为性能问题,因为他们都要占用大量资源,所以把他们分开了,他们分开了就要分别在不同的机器上启动,但是由于我的机器的内存原因我就不分开了。

步骤:
(1)新创建一个虚拟机,为求方便,在新创建的虚拟机先关闭防火墙,安装JDK并配置好环境变量等,之后再克隆多四个虚拟机,再一一修改主机名、IP、主机名和IP的映射关系,关于ssh免登陆可以提前做也可以等到后期再配置。

(2)安装ZooKeeper集群(在zx03上)
将在03号机配置好的ZooKeeper拷贝到其他节点

(3)安装配置Hadoop集群(在zx01上操作)
记得修改slaves
PS安装配置ZooKeeper和Hadoop都不详细说,貌似照着做不会有什么问题这些。

(4)配置免密码登录
#首先要配置zx01到zx02、zx03、zx04、zx05的免密码登陆
#在01上生产一对钥匙
ssh-keygen -t rsa
#将公钥拷贝到其他节点,包括自己
ssh-copy-id zx01
ssh-copy-id zx02
ssh-copy-id zx03
ssh-copy-id zx04
ssh-copy-id zx05
#注意:两个namenode之间要配置ssh免密码登陆,别忘了配置zx02到zx01的免登陆
在zx02上生产一对钥匙
ssh-keygen -t rsa
ssh-copy-id -i zx01

这里遇到的问题就是01到02、03都很顺利,但是01复制到04、05号机就提示04、05号机并没有.ssh这个目录,by the way,我的是root下操作这一切的,在home下也做过一遍,但是不知道为什么进程都起不来,jps运行结果永远只有jps一个,所以我才完全推翻重新来一遍,天知道需要多大勇气。好了,说到没有.ssh目录,但是有一个.ssh文件这样的东西,然后我就它删了然后新创建一个.ssh 文件,看到他们说需要修改权限,然后就:
chmod 700 ~/.ssh
复制过去之后那个authorized_keys也要修改权限:
chmod 600 /root/.ssh/authorized_keys

貌似就是以下面这个方法搞好的:
1、修改ssh的相关配置,启动密钥登录及配置验证文件路径
vi /etc/ssh/sshd_config
将下面的内容前面的#去掉
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
做完这步验证一下行不行,虽然我的还是不行,我也去看了其他可以的虚拟机这个文件的对应的位置,并没有去掉注释
不行的话进行下一步

2、修改安全配置,centOS6.5对网络管理相当严格,需要在原来的基础上关闭selinux
vi /etc/selinux/config
修改内容如下:
把SELINUX=enforcing修改为SELINUX=disabled
做完之后再验证一下是否01能够免密钥登上04、05
然鹅我的当时还是不行的,然后我选择非常残暴的方式——直接重启5台虚拟机,怕什么,大不了重新来过哈哈,惊喜的是重启完之后居然神奇的什么问题都没有了。接着赶紧做下一步。

(5)将配置好的hadoop拷贝到其他节点

###注意:严格按照下面的步骤
(6)启动zookeeper集群(分别在zx03、zx04、zx05上启动zk)
cd /scau/zookeeper-3.4.5/bin/
./zkServer.sh start
#查看状态:一个leader,两个follower
./zkServer.sh status

第一遍不成功就是卡在这里,我不知道为什么做到这里jps什么进程都没有起来只有jps,zk写着启动成功了的,状态更不用说了,自然是什么都查不到。
启动journalnode(分别在在zx03、zx04、zx05上执行)
cd /scau/hadoop-2.5.2
sbin/hadoop-daemon.sh start journalnode
#运行jps命令检验,zx03、zx04、zx05上多了JournalNode进程
格式化HDFS#在zx01上执行命令:
hdfs namenode -format

#格式化后会在根据core-site.xml中的hadoop.tmp.dir配置生成个文件,这里配置的是/scau/hadoop-2.5.2/tmp,然后将/scau/hadoop-2.5.2/tmp拷贝到zx02的/scau/hadoop-2.5.2/下。scp -r tmp/ zx02:/scau/hadoop-2.5.2/
格式化ZK(在zx01上执行即可)
hdfs zkfc -formatZK
启动HDFS(在zx01上执行)
sbin/start-dfs.sh
启动YARN(在zx01上执行)
sbin/start-yarn.sh

到此,hadoop-2.5.2配置完毕,可以统计浏览器访问:
http://192.168.146.131:50070
NameNode ‘zx01:9000’ (active)
http://192.168.146.132:50070
NameNode ‘zx02:9000’ (standby)

验证HDFS HA
首先向hdfs上传一个文件
hadoop fs -put /etc/profile /profile
hadoop fs -ls /
然后再kill掉active的NameNode
kill -9
通过浏览器访问:http://192.168.146.132:50070
NameNode ‘zx02:9000’ (active)
这个时候zx02上的NameNode变成了active
在执行命令:
hadoop fs -ls /
-rw-r–r– 3 root supergroup 1926

2014-02-06 15:36 /profile
刚才上传的文件依然存在!!!
手动启动那个挂掉的NameNode
sbin/hadoop-daemon.sh start namenode
通过浏览器访问:http://192.168.146.131:50070
NameNode ‘zx01:9000’ (standby)

验证YARN:
运行一下hadoop提供的demo中的WordCount程序:
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.2.jar wordcount /profile /out

HA高可用集群安装完毕

其实有很多没有完善的,细节可能说的不太清楚,但是,看重点就好哈哈哈。