hbase浅析

hbase内存数据存储的结构

1.列式存储

2.LSM标准实现(wal Hlog+memStore+storeFile)

3.内存中结构一般是跳表(空间换时间)

4.一般都是一个 rowKey + N个列族(每个列族里面有多个列,每个列有版本号和值)

hbase架构图
Hbase架构图

 

 

查询过程简单还原

1.client通过zk找到meta表所在的regionServer(老版本先要通过root表去查找)

2.找到meta所在的regionServer,找到rowKey对应记录所在的regionServer

meta其实就是region的描述,一条记录对应一个region。它的rowKey类似 表名+最后一条记录的rowKey,都是有序的所以扫描方便查找

3.找到rowKey所在的regionServer

先去内存中查询,内存分两块 memStore(主写)和 blockCache(主读)

先去memStore中查找(这个数据结构一般是跳表,memStore的数据不超过64M,内存查找),查不到就到blockCache中去查

如果没有就要去fileStore中找了,这个是检索磁盘的,文件也是渐进的 C1 C2 C3 每个层级的结构可以不同,C1可以是B+,查到的数据放到blockCache中

 

 

数据插入过程简单还原

1.client通过zk找到meta再找到表所在的region

2.找到store插入记录到memStore中

3.如果memStore超过64M,触发flush动作,把数据持久化到磁盘中形成一个storeFile(满足条件也会触发hfile的compact操作生成一个更大的storeFile)

4.在step3的时候,也会生成一个checkpoint,标记之后的数据都是menStore中的,如果有啥问题内存凉了 可以从Hlog中恢复数据到memStore

很多存储服务都是用的wal技术来保证数据可靠性,hbase也是wal,他的log就是记录在hlog中的

 

compact【毛刺的罪魁祸首】

why-为啥要compact,数据不停 的往memStore中写入,memStore满了就写storeFile,storeFile会越来越多 影响查询性能

when-memStore flush/周期性检查任务

how-compact会删除一些过期的记录,归并排序关联数据

 

minor compact

把相邻的小hfile合并成一个大的hfile,删除ttl到期的数据

 

major compact

把一个store下面所有的hfile合并到一个hfile,删除所有不必要的数据(ttl到期,版本号小于设定的版本号,有delete标签的)

 

珍贵实战数据-使用场景用户画像

2000qps,avg_rt在2.3ms

2000tps,avg_rt在3.2ms

使用注意rowKey一定要散,可以用原始值+md5

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值