当前位置: 代码迷 >> 综合 >> 0924 hbase
  详细解决方案

0924 hbase

热度:7   发布时间:2023-12-21 23:05:18.0

Master 为Region server 分配region 负责regionServer的负载均衡

 

RegionServer 维护region 切分region

Region 每个region中会保存一段连续的数据(按照行键排序)

store 一个region由多个store组成的 一个store对应一个列族  store包括内存中的memstore和磁盘上的storefile

Memstore 与 storefile  数据会先写进memstore 达到一定量时开启flashcache进程写入storefile 

Cell单元格  是未解析的字节数组

读写流程

大合并和小合并  minor  major 

minor 负责将重写最后生成的几个文件到一个更大的文件中

major 把所有文件压缩成一个单独的文件 如果删除数据 将会给数据添加墓碑标记 在大合并时将标记了墓碑标记的数据真正删除

读路径   保证了三层b+树的查找结构 第一层 查找zookeeper中包含rootregion位置信息的节点   第二层是从root表中查找对应的

meta region的位置(表的元数据在哪个regionserver上的region中)  第三层是从.meta.表中查找用户对应region位置(指定

rowkey对应的region和regionserver)

写流程 要决定数据是否需要写到由Hlog类实现的预写日志中   一旦数据被写入到wal中 数据就会放到memstore中 同时还会检查

memstore是否已经满了  如果满了 就会被刷写到磁盘中去。 同时也会保存最后写入的序号 

 

一个region 纵向切割多个 store 保存列族   先写 memstore 在内存 溢写到磁盘的 storeFile    storefile 会合并   

查找 先找memstore 再找blockcache 再找storefile  

HBase api

HBaseAdmin //hbase管理者   HTable //表管理者

conf.set("hbase.zookeeper.quorum","node2,node3,node4");

创建hbase表 

HTableDescriptor表描述对象(参数表名)  HColumnDescriptor列族描述对象(列族名) 给表设置列族 然后admin去creatTable
(表)

Scan ResultScanner 获得迭代对象  result= rs.next()  用Cell去获取每个单元格的值 

 

Put (构造中放行键)

Get(构造中放行键)

Delete