Hbase各组件功能、HMaster、HRegionServer、HRegion、Hbase和Zookeeper关系、HBase如何恢复宕机前数据 03

1. Hbase整体结构

在这里插入图片描述

2. Hbase文字层级结构详解

  • client
  • ZK
  • HMaster
  • HRegionServer
    • HRegion–>一个table有多个HRegion,一个HRegion默认为10g
      • HStore–>对应一个列族,一个HRegion有多个HStore
        • MemStore(内存)–>Flush到StoreFile
        • StoreFile(磁盘)
          • HFile(默认128g)–>hdfs客户端,写入到hdfs中
    • HLog(容错机制,副本机制,保证数据不丢失)

3. 详细讲解HBase结构

在这里插入图片描述

3.1 client

  • client和hmaster, client和hregionServer之间使用rpc通信
  • client和hmaster–>管理型操作
  • client和hregionserver–>读写型操作

3.2 Zookeeper

  • 保证多个hmaster启动情况下,只有一个hmaster运行。–>分布式锁功能
  • 存储 **-root-**表的location,所有hregion的入口,hmaster地址。
  • 监控hregionServer的状态,将hregionServer的上线和下线信息,实时通知给hmaster
    在这里插入图片描述
    在这里插入图片描述
  • 存储hbase的schema
    • 有哪些table,
    • 每个表中有哪些column family

3.3 hmaster

hmaster需要与zookeeper保持通信状态,通过zookeeper知道hregionServer的位置及hregionServer的存活状态(zookeeper监控hregionServer的存活),管理集群。

  • 为hregionServer分配region(默认为10G一个region)
  • 负责hregionServer的负载均衡
  • 发现失效的hregionServer,就重新分配到其他hregionServer的hregion中
  • GFS上的垃圾文件回收
  • 它会负责客户端创建表、删除表的请求。

3.4 hregionServer(Hbase最核心的模块)

  • 维护hmaster分配给它的10G的hregion
  • 负责切分过大的hregion(StoreFile触发切分机制)。
  • 它会接受到客户端的读写表的请求。

3.5 hregion

  • 一个表最开始存储的时候,只有一个hregion
  • 一个region中会有多个store,每个store用来存储一个列簇。如果只有一个column family,就只有一个store。
  • region会随着插入的数据越来越多,会进行拆分。默认大小是10G一个。

3.6 HFile

  • HFile是HBase中keyValue数据的存储格式,列名:列值
  • HFile是Hadoop的二进制格式文件,storeFile就是对Hfile进行了封装,进行数据的存储。

3.7 HStore(HBase的存储核心,memStore和storeFile组成)

在这里插入图片描述

  • client写入数据,会先连hmaster,hmaster通过zk中的**-root-.meta**得知机器的分配状态。找一台空闲的,鲜活的,离得近的hregionServer。
    • 如果是重新建表,并分配一块新的hregion和hlog给这个表。
    • 如果是往表里面写数据,会通过zk告知hregionServer往哪里写。
  • client从zk中找到hmaster告知的空闲的、鲜活的、离得近的hregionServer,开始写数据。
  • 数据会先写入到hlog和memStore中
  • memStore满了后,会flush到一个StoreFile。
  • storeFile达到一定阀值(比如64M),触发compact,会合并成一个大的storeFile,同时进行版本合并和数据删除。
  • 多个storeFile合并成一个storeFile,当这个storeFile达到一定阀值(比如256M),会触发split操作,切分为两个storeFile。
  • split操作相当于把和region切分为两个hregion,旧的hregion下线,新的storeFile分配到这两个hregion中,hmaster又把这两个hregion分配到相应的hregionServer上(有了20G的两个hregion

3.8 HLogs(副本机制,防止hbase宕机)

HBase如何恢复宕机前数据
在这里插入图片描述

  • 每个hregionServer都有一个HLog。
  • HLog是一个实现write ahead log的类,用户写入memStore的同时,也会写一份数据到HLog中,HLog文件定期会滚动出新,并删除旧的文件(已经持久化到storeFile中的数据)
  • 当HregionServer宕机后,zookeeper会先监听到,告知hmaster。
  • hmaster首先处理遗留的HLog文件,将不同hregion的HLog数据拆分,放到对应的HRegion的Hlog数据拆分,放到对应的hregion目录下。
  • hmaster将失效的hregionServer里面的数据重新分配。
  • 新hregionServer加载就hregion,发现hregion目录下有历史hlog需要处理,会复制HLog中的数据到自己的memStore中,memStore满了Flush到storeFiles。完成数据恢复。

如果喜欢本文章,请用小手点个赞~

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值