HCIE-BIG DATA/HCIA-HBase学习笔记-HBase架构与用户读写

 

HBase架构:

底层:HDFS

1、Client:发送请求、缓存已经访问过的Region的位置信息,加快后续的数据访问

2、Zookeeper:

  • 为HBase选举Master作为集群主管
  • 存储HBase的Schema,有哪些表,每个表都有哪些列族
  • 实时监控Region的位置信息,将上下线的信息实时通报给master

3、Master

  • 为RegionServer分配Region
  • 负责RegionServer的负载均衡
  • 监控失效的RegionServer并将其Region重新分配
  • 表的创建、删除、修改,列族的增加

4、RegionServer

  • 负责维护分配给自己的Region
  • 响应用户的读写请求
  • 注:Hbase将一个table分割成若干的Region进行存储,每个Region会被Master分散到不同的RegionServer上进行存储。

示意图:Hbase中的表通过行键、按照一定的范围被分成三个Region进行管理,由Master分配给各个RegionServer

默认一个Region超过256M就会被分为两个,由Master分配给RegionServer进行管理。

Region以裂变形式分割,分裂时读取原Region,分裂后读取新Region

5、Store:每个列族对应一个Stroe,每个Store有一个StoreFile与之对应,每个StoreFile对应一个File。文件实际存储在File里

  即:列族————Store————StoreFile————File

  MemStore存储在内存中,File(StoreFile)存储在HDFS上

HBase用户读写:

  1. 写入数据时,分配到RegionServer进行
  2. 数据首先被写入MemStore和Hlog张
  3. 操作写入Hlog时,调用commit()函数,返回客户端
  4. 读取数据时,先在MemStore内进行寻找,若寻找不到则去StoreFile进行查找

HBase读取(以get 'user' row1001;为例)

HBase写入:

  1. 写操作到达RegionServer后,会将修改操作写入Hlog以及MemStore中。
  2. 系统定期刷新缓存,将MemStore中的内容写入文件中,生成新的StoreFile,将缓存清空,并在Hlog中做标记表示已写入文件。

  问题:Hlog越来越大,StoreFile越来越多

  解决方法

    1. 系统定期清理Hlog,将已写入的文件的记录删除
    2. StoreFile数量超过设定阈值,则触发合并操作,自行合并,若合并的StoreFile大小超过阈值,则触发拆分操作。
    3. Region大小达到一定值时,触发分割操作,形成新的Region,由Master分配RegionServer。

 

posted @ 2021-10-17 11:52  R0undab0ut  阅读(99)  评论(0)    收藏  举报