Hbase写入数据的流程

Hbase写入数据的流程

  • 目标

    • 掌握Hbase写入数据的整体流程
  • 分析
    在这里插入图片描述

  • 目标

    • 掌握Hbase数据写入的流程

    • 当执行一条Put操作,数据是如何写入Hbase的?

      put 表名	rowkey		列族:列		值
      
  • 分析

    • step1:根据表名获取这张表对应的所有Region的信息
  • step2:根据Rowkey判断具体写入哪个Region

    • step3:将put操作提交给这个Region所在的RegionServer
  • step4:RegionServer将数据写入Region,根据列族判断写入哪个Store

    • step5:将数据写入MemStore中
  • 总结

    • 表名:决定了这条数据要写入哪些region中
    • Rowkey:决定了这条数据具体写入哪个Region中
    • 列族:决定了写入这个region哪个Store中

知识点04:Hbase读写流程:meta表

  • 目标

    • 了解hbase:meta表的存储内容及功能
    • 问题1:如何知道这张表对应的region有哪些?
    • 问题2:如何知道每个Region的范围的?
    • 问题3:如何知道Region所在的RegionServer地址的?
  • 分析

    • 肯定有个地方存储了表与Region的关系以及Region的信息
      • 存储每张表对应的所有region关系
      • 每个region的范围和RegionServer地址
  • 实现

    • Hbase自带的两张系统表

      • hbase:namespace:存储了Hbase中所有namespace的信息
      • hbase:meta:存储了表的元数据
    • hbase:meta表结构

      • Rowkey:每张表每个Region的名称

        itcast:t4,eeeeeeee,1616123941870.ba3bf6d78ce9432ea4cd42a3829142b2.
        表名,startKey,时间戳,Region的唯一id
        

在这里插入图片描述

  - Hbase中每张表的每个region对应元数据表中的一个Rowkey

- 列

  - info:regioninfo

    ```
    #Region的名称
    NAME => 'itcast:t4,eeeeeeee,1616123941870.ba3bf6d78ce9432ea4cd42a3829142b2.',
    #Region的范围
    STARTKEY => 'eeeeeeee', ENDKEY => ''
    ```

  - info:server

    ```
    #Region所在的RegionServer的地址
    value=node3:16020
    ```
  • 总结

    • 功能:存储了整个Hbase中每张表每个Region的信息
    • 名称
      • 起始范围
      • RegionServer地址
    • step1:只要知道表名,就能获取这表表对应的所有Region信息
    • step2:根据Region的范围与Rowkey做比较,就能知道要具体写入哪个region
    • step3:请求这个region对应的regionServer地址,写入Region即可
put	ns:tbname,rowkey,cf:col,value
  • step1:获取元数据

    • 表的元数据:hbase:meta表中
    • 问题:如果要往一张表写入数据,必须先读meta表,如何知道meta的地址?
    • 解决:请求zk,meta表的地址存储在zk中
  • step2:找到对应的Region

  • step3:写入数据

  • 实现

    • step1:获取元数据

    • 客户端请求Zookeeper,获取meta表所在的regionserver的地址

    • 读取meta表的数据:获取所有表的元数据

    • step2:找到对应的Region

    • 根据meta表中的元数据,找到表对应的所有的region

    • 根据region的范围和写入的Rowkey,判断需要写入具体哪一个Region

    • 根据region的Regionserver的地址,请求对应的RegionServer

  • step3:写入数据

    • 请求RegionServer写入对应Region:根据Region的名称来指定写入哪个Region
    • 根据列族判断写入哪一个具体的Store
      • 先写入WAL:Hlog预写日志中
    • 写入对应Store的MemStore中
      • MemStore
  • 总结

  • step1:先连接ZK,获取meta表的地址

  • step2:读取meta表的数据,获取表的元数据

  • step3:根据表的元数据找到对应Region的RegionServer

  • step4:

    • RegionServer
      • Region
        • WAL
        • Store
          • MemStore
          • StoreFIle

猜你喜欢

转载自blog.csdn.net/bigdatahyy/article/details/115210913
今日推荐