-
HBase
- 高可用,高性能,面向列,可伸缩的分布式数据库
- 提供海量数据存储功能
- 一个结构化的分布式存储系统,适用于半结构化和非机构化数据
-
HBase表的特点
- 大:行,列数多
- 无模式:同一张表的不同行可以有不同的列
- 面向列:面向列存储和权限控制
- 稀疏:空列并不占用存储空间
- 数据类型单一:字符串
-
HBase架构图
-
HBase的组件
-
Client
- 是HBase的接口,维护cache加快对HBase的访问
- 与HMaster进行通信管理类操作
- 与HRegionServer进行数据读写类操作
-
HMaster
- 主节点
- 管理所有RegionServer , 包括注册新的RegionServer ,RegionServer的故障切换
- RegionServer 的负载均衡
- 发现失效的RegionServer并重新分配Region
- 管理用户对table的增删改查
-
Zookeeper
- 保证任时候集群只有一个Master
- 存储Region的寻址入口
- 监控RegionServer的上线和下线信息,实时通知给HMaster
- 存储hbase的schema和table的元数据
-
HRegionServer
- 是Hbase的从点,负责提供表数据读写服务,是数据存储和计算单元
- 一台RegionServer管理多个Region和一个Hlog
- 负责维护Master分配给它的Region,处理对这些Region的IO请求,负责切分在运行过程中变大的Region
-
Region
- 一个Region由多个或者一个Store组成
- 每个store存储该Region一个列簇的数据
- Region是将一个数据表按Key值范围横向划分成一个个子表,实现分布式存储
- Region分为元数据Region和用户Region两类
- 元数据Region也叫Meta Region 记录每个Region的路由信息,每个子表放的位置,起始Key值,元数据Region存放在Root表中,Root表放在Zookeeper中
-
读取Region 数据的路由的步骤:
- 在zk中查找Meta Region 的地址信息
- 再由Meta Region中寻找User Region 的地址
-
Zookeeper选举Master流程
- 主备Master同时向ZK 注册自己的节点信息,谁先写入,谁就是主节点(注册写入时,查询有没有相对应的节点,如果有,看一下主节点是谁,如果有并且实时更新,这个 HMaster会自动作为备节点,进入休眠状态)
- 备节点会实时监听ZK 的状态 主节点的信息
- 备节点会去查询有没有HBase这个目录和目录里面的文件的时间戳与当前的时间戳信息做对比,备节点每隔一秒去查询一下,当主节点宕机,时间戳超过五秒没有更新,备节点把自己的节点信息写入 ,变成主节点
-
数据的容错和恢复(WAL机制)
- RegionServer 故障,zookeeper感知
- 通知HMaster,HMaster处理遗留的Hlog,将不同Region的Log数据拆分
- 拆分后放到相应的Region 的目录下
- 将失效的Region重新分配到其他RegionServer
- 新的RegionServer领到这些Region,如果发现有历史Hlog会加载到MenStore,然后刷写到StoreFiles,完成数据恢复
-
HBase 的写流程
- 数据写请求发给client
- client访问zookeeper查询数据应该往哪个地方存储
- zookeeper返回hbase:meta位于哪个RegionServer
- 根据获取的结果分组
- 并行发送到各个RegionServer上
- 数据写入相应的Store里面的MemStore,同时也会在Hlog里面写一份
- 写完后HMaster做相应的更新,返回写成功
-
HBase 读流程
- Client 先访问zookeeper,获取hbase:meta表位于哪个RegionServer
- 访问对应的RegionServer ,通过RowKey查找meta表,获取所要的Region所在的RegionServer
- 会与目标RegionServer进行通讯
- 由它具体处理数据的读取
-
Memstore刷写时机
- 刷盘周期1h
- 单个Store内存达到阈值
- MemStore占用内存总量达到阈值
- MemStore占用内存总量和物理内存的比值达到阈值
- Hlog文件的数量达到阈值的时候
- 通过shell手动触发
-
compaction
- Minor :合并连续小文件,通过算法实现
- Major:多个文件合并成大文件,影响region的读写
HBase详解
最新推荐文章于 2022-05-10 15:10:31 发布