一、HBase高可用简介
HBase集群如果只有一个master,一旦master出现故障,将导致整个集群无法使用,所以在实际的生产环境中,需要搭建HBase的高可用,也就是让HMaster高可用,也就是需要再选择一个或多个节点也作为HMaster,但是只有一个是active,其他的都为backup master当active的master宕机时,从backup master中选举一个作为active。
搭建HBase的高可用
1.在HBase的conf文件夹中创建一个backup-masters的文件
2. 修改backup-masters,添加作为备份master的节点信息
3. 分发backup-masters文件到其他的服务器
4. 重新启动HBase
5. 查看web ui
三、测试高可用
1. 尝试杀掉node1的HMaster进程,模拟node1宕机
2. 查看node1的web ui
3. 再查看node2的web ui
4. 进入HBase shell,可以继续使用
5. 再次运行Java api程序,查看结果
四、高可用原理
zookeeper临时节点 + watch + select
五、HBase的高可用架构及原理
1. 系统架构
2. Client
客户端,发出HBase的操作请求,比如hbase shell,HBase Java API。
3. Master Server
作用:
l 监控RegionServer
l 处理RegionServer的故障
l 处理元数据的变更
l 处理region的分配或移除
l 处理负载均衡
l 通过zookeeper发布自己的状态信息
!](https://img-blog.csdnimg.cn/494613466c7249c39ea5edfd0c91e128.png)
4. Region Server
l 处理分配给它的region
l 负责存储HBase的实际数据
l 刷新缓存到hdfs
l 维护HLog日志
l 执行压缩
l 处理region分片
l 包含有大量的组件
n Write-Ahead logs
n HFile(StoreFile)
n Store
n MemStore
n Region
5. Region
在HBase中,表的存储被划分为很多个Region,并由RegionServer提供服务
6. Store
Region按列簇垂直划分为Store,存储在hdfs的HFile中
7. MemStore
类似于缓存
l 当往HBase中写入数据时,首先写入MemStore
l 每个列簇有一个MemStore
l 当MemStore存储快满的时候,整个数据写入hdfs的HFile中
8. StoreFile
物理上存储的是HFile**,存储整个排序的key-value****数据,操作连续速度非常快**
9. WAL
Write-AHead Logs的缩写,是HBase提供的一种高并发、持久化(写入hdfs****等永久性存储介质上)的日志系统,具有回放机制,主要的作用就是故障恢复。
比如put**、delete****、incr等业务写入操作,都会保存在wal中,一旦服务器崩溃,就可以通过wal实现恢复崩溃前的数据。物理上存储的是hdfs的SequenceFile****。**