HBase详解

  • 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的读写
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值