HBase集群搭建实验(5)_分布式高可用部署(依赖外部独立ZooKeeper集群,实现HDFS Master HA + HBase HMaster HA)

 HBase分布式高可用模式HMaster HA):
1)不同的HBase进程分别独立运行在多台硬件配置较高的服务器主机构成的集群中,适用于可靠性高的HBase运维和生产环境
2)依赖于HDFS存储数据,因此部署Hbase分布高可用之前必须有一个正常运行的HDFS集群

3)依赖于独立的外部ZooKeeper集群,不能使用内置ZooKeeper

4)依赖于Hadoop HA高可用集群,必须先部署完成并成功运行Hadoop HA高可用集群

关于HMaster高可用(HMaster HA)重要解释:

HMaster HA实现了对HMaster的容错性,一旦HMaster宕机,Zookeeper可以重新选择一个新的HMaster;但是,HBase集群即使没有了HMaster,仍然可以读取、删除、插入数据(事实上由RegionServer负责完成),只是不能再执行创建表,删除表,修改表,region的拆分、合并、移动,以及负载均衡等功能;也就是说,HBase集群中HMaster的重要性没有HDFS中的NameNode那么大,HBase的HMaser单点故障没有HDFS中的NameNode单点故障那么严重,HMaster宕机不会导致整个HBase集群的彻底失能,只是部分功能失能,仍然可以读取、插入和删除数据;

总而言之,HMaster HA没有NameNode HA和ResourceManager HA的重要性那么高!!!

 

实验前提:HBase分布式高可用(HMaster HA)部署方式依赖于Hadoop HA和外部独立ZooKeeper集群,本实验紧接Hadoop 分布式高可用集群和ZooKeeper集群部署实验,在Hadoop HA和Zookeeper实验完成并运行成功的基础上继续进行Hbase分布式高可用(HMaster  HA)的部署演示

实验目标:在4台主机组成的小型集群上部署分布式高可用数据库HBase ,用于教学演示
环境要求:虚拟机VirtualBox     操作系统 Centos7    Hadoop版本  hadoop-2.6.0-cdh5.7.0  ZooKeeper版本  zookeeper-3.4.5-cdh5.7.0.tar.gz  Hbase版本hbase-1.2.0-cdh5.7.0.tar.gz

集群规划:无需复制虚拟机,直接利用Hadoop 分布式高可用集群的4台主机standby,master,slave1,slave2完成Hbase完全分布式(非HA)部署

主机IP 主机名 集群角色
192.168.56.9 standby NameNode(Standby)   DFSZKFailoverController  HMaster(Standby) 
192.168.56.10 master NameNode(Active)  DataNode JournalNode  QuorumPeerMain DFSZKFailoverController NameNode   DataNode   HMaster(Active) HRegionServer
192.168.56.11 slave1 DataNode   JournalNode QuorumPeerMain  HRegionServer
192.168.56.12 slave2 DataNode  JournalNode  QuorumPeerMain   HRegionServer

〇 首先要部署完成并运行成功ZooKeeper集群和Hadoop HA 分布式高可用集群

一 搭建HBase完全分布式(HMaster HA)集群的实验步骤

1)启动Hadoop分布式高可用集群中的4台主机standby,master,slave1和slave2

2)在win7用XSHELL远程登录,注意VirtualBox主机网络管理器的虚拟网卡IP(192.168.56.1)地址必须和虚拟机Linux处于一个网段

3)解压缩hbase-1.2.0-cdh5.7.0.tar.gz安装包到指定目录/usr/local

在standby,master, slave1,slave2这4台主机上都要依次(不要同时)解压缩安装包:

tar -zxvf hbase-1.2.0-cdh5.7.0.tar.gz -C /usr/local/        解压缩到/usr/local目录

特别提醒:千万不同时在多台虚拟机执行解压缩命令,很有可能造成死机!!!

4)设置HBase环境变量并使之生效

依次在standby,master, slave1,slave2三台主机上设置HBase环境变量

vi /etc/profile   在配置文件profile的末尾增加蓝色字体的内容:

# hbase
export HBASE_HOME=/usr/local/hbase-1.2.0-cdh5.7.0
export PATH=$PATH:$HBASE_HOME/bin

记得要执行source /etc/profile命令使得HBase的环境变量生效

5)关闭防火墙firewall和SeLinux

在每台主机都执行关闭防火墙命令 systemctl disable firewalld      执行关闭SeLinux命令 setenforce 0 

6)检查standby, master, slave1,slave2互相之间的SSH免密登录(特别重要)

在每台主机上都要依次执行ssh standby, ssh master, ssh slave2, ssh slave2命令,检查免密登录,免密登录成功后,必须输入exit退出并返回原会话,以免搞混

7)修改配置文件(关键步骤)

cd /usr/local/hbase-1.2.0-cdh5.7.0/conf 切换到hbase-env.sh配置文件所在目录

a)先在master主机上修改hbase-env.sh

vi hbase-env.sh 修改以下参数:

export JAVA_HOME=/usr/local/java/jdk1.8

export HBASE_MANAGES_ZK=false                   # 不使用HBase内置的ZooKeeper!!!

执行source hbase-env.sh命令使得HBase配置参数生效

b)在master主机上修改hbase-site.xml

vi hbase-site.xml修改以下参数:

之间增加蓝色字体配置参数



    hbase.rootdir
    hdfs://master:8020/hbase


    hbase.cluster.distributed
    true


    hbase.zookeeper.quorum
    master,slave1,slave2

参数说明:

hbase.rootdir:用于指定HBase数据在HDFS的存储路径

hbase.zookeeper.quorum:对于HBase的完全分布式模式(使用外部的独立ZooKeeper集群),应将该参数的值设为外部的独立ZooKeeper集群的完整主机列表,此时在配置文件hbase-env.sh中的HBASE_MANAGES_ZK参数必须为false

hbase.cluster.distributed:设置为true,告诉HBase按照完全分布式模式启动

c)修改regionservers文件

vi regionservers

删除原有行,新添加三行:

master
slave1
slave2

8)拷贝Hadoop的两个配置文件core-site.xml和hdfs-site.xml到HBase的配置文件目录(HBase对HDFS有依赖关系)

先在master主机依次执行命令 cp /usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop/core-site.xml /usr/local/hbase-1.2.0-cdh5.7.0/conf

cp /usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop/hdfs-site.xml /usr/local/hbase-1.2.0-cdh5.7.0/conf

再在master主机依次执行远程拷贝命令

scp hbase-env.sh hbase-site.xml core-site.xml hdfs-site.xml regionservers  root@standby:/usr/local/hbase-1.2.0-cdh5.7.0/conf/

scp hbase-env.sh hbase-site.xml core-site.xml hdfs-site.xml regionservers  root@slave1:/usr/local/hbase-1.2.0-cdh5.7.0/conf/

scp hbase-env.sh hbase-site.xml core-site.xml hdfs-site.xml regionservers  root@slave2:/usr/local/hbase-1.2.0-cdh5.7.0/conf/

别忘了要在standby,slave1,slave2依次执行source hbase-env.sh命令,使得HBase的配置参数生效

11)在master主机的conf目录下创建配置文件backup-masters

cd /usr/local/hbase-1.2.0-cdh5.7.0/conf/  切换到conf目录

vi backup-masters   在文件backup-masters里添加作为backup HMaster的节点主机名称,比如将standby主机设为备用HMaster

 standby   

10)在master,slave1,slave2三台主机依次执行zkServer.sh start命令来启动ZooKeeper(如果ZooKeeper已经启动可跳过本步骤)

11)在master主机执行start-dfs.sh命令启动HDFS HA高可用集群,确保HDFS HA启动成功

12)启动HBase集群

在master主机执行HBase启动脚本start-hbase.sh,该脚本的作用是启动HBase的所有相关进程(HMaster,HRegionServer)

14)执行java进程查看命令jps,在4台主机分别出现以下进程,说明HDFS,外部独立ZooKeeper集群HBase全部都启动成功:

[root@standby conf]# jps
2132 DFSZKFailoverController
2294 HMaster
2427 Jps
2077 NameNode

[root@master conf]# jps
2641 DFSZKFailoverController
2898 HMaster
2085 QuorumPeerMain
2327 DataNode
3033 HRegionServer
3129 Jps
2234 NameNode
2508 JournalNode

[root@slave1 local]# jps
2451 Jps
2183 JournalNode
2327 HRegionServer
2042 QuorumPeerMain
2127 DataNode

[root@slave2 local]# jps
2390 Jps
2120 DataNode
2042 QuorumPeerMain
2175 JournalNode
2319 HRegionServer

13)在win7下,用chrome浏览器访问HBase自带的web配置网站 http://192.168.56.10:60010和 http://192.168.56.9:60010,能出现如下两个页面说明HMaster HA运行成功:

此时页面中,Master显示为master主机,而Backup Masters显示standby主机

14)执行主备切换测试,执行命令hbase-daemon.sh stop master 或者 直接使用kill -9 进程号杀死master主机的Hmaster进程,查看Backup Masters显示的状态,stanby主机从Backup Masters变成了Master;master主机的HMaster执行命令hbase-daemon.sh start master重启后成为Backup Masters,而不会再次成为Master

你可能感兴趣的:(HBase集群搭建实验(5)_分布式高可用部署(依赖外部独立ZooKeeper集群,实现HDFS Master HA + HBase HMaster HA))