2.8.6 hadoop体系之离线计算-HBase数据库-HBase高级-HBase写流程

目录

1.HBase的写流程图

2.流程分析

2.1 具体流程

2.2 关于Hbase:meta表

2.3 关于写入WAL和MemStore的先后问题


1.HBase的写流程图

2.流程分析

2.1 具体流程

  • 1)Client 先访问 zookeeper,获取 hbase:meta 表位于哪个 Region Server。
  • 2)访问对应的 Region Server,获取 hbase:meta 表,根据读请求的 namespace:table/rowkey, 查询出目标数据位于哪个 Region Server 中的哪个 Region 中。并将该 table 的 region 信息以 及 meta 表的位置信息缓存在客户端的 meta cache,方便下次访问。
  • 3)与目标 Region Server 进行通讯;
  • 4)将数据顺序写入(追加)到 WAL;
  • 5)将数据写入对应的 MemStore,数据会在 MemStore 进行排序;
  • 6)向客户端发送 ack;
  • 7)等达到 MemStore 的刷写时机后,将数据刷写到 HFile。

2.2 关于Hbase:meta表

        描述HBase表的表,元数据表。有了 Region 标识符,就可以唯一标识每个 Region。为了定位每个 Region 所在的位置,可以构建一张映射表。映射表的每个条目包含两项内容,一项是 Region 标识符,另一项是 Region Server服务器标识。这个条目就表示 Region 和 Region Server服务器之间的对应关系,从而就可以使用户知道某个 Region 存储在哪个 Region  Server服务器中。这个映射表包含了关于 Region 的元数据,因此也被称为“元数据表”,又名“Meta表”。使用 scan 命令可查看 Meta 表的结构,如图所示
在这里插入图片描述
        Meta 表中的每一行记录了一个 Region 的信息。RowKey 包含表名、起始行键和时间戳信息,中间用逗号隔开,第一个 Region 的起始行键为空。时间戳之后用.隔开的为分区名称的编码字符串,该信息是由前面的表名、起始行键和时间戳进行字符串编码后形成的。
Meta 表里有一个列族 info。info 包含了三个列,分别为 Regioninfo、Server 和 Serverstartcode。Regionlnfo中记录了 Region 的详细信息,包括行键范围 StartKey 和 EndKey、列族列表和属性。
        Server 记录了管理该 Region 的 Region Server服务器的地址,如 localhost:16201。Serverstartcode 记录了 Region Server服务器开始托管该 Region 的时间。当用户表特别大时,用户表的 Region 也会非常多。Meta 表存储了这些 Region 信息,也变得非常大。Meta 表也需要划分成多个 Region,每个 Meta 分区记录一部分用户表和分区管理的情况。(有了meta表,就可以得到region和HRegionServer的对应关系,可以进行Region定位。客户端通过 ZooKeeper 获取 Meta 表(分区表)存储的地址,首先在对应的 Regionserver上获取 Meta 表的信息(meta表存在Regionserver上),得到所需的Region对应的Region server的信息,然后从Region Server服务器上找到所需的数据)

2.3 关于写入WAL和MemStore的先后问题

可以通过查看put实现源码:

1)先写入WAL,但是不同步

2)再写入内存Mem Store

3)最后同步WAL,检查内存是否写入成功,如果失败回滚事务

上面的三个步骤利用了事务的原子操作,如果失败立即回滚,如果面试官问起的话,也可以说成是数据先写进WAL,后写进内存Mem Store。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值