Hbase基础记录

基础

在这里插入图片描述
在这里插入图片描述

用户自定义的表默认情况下命名空间为default,而系统自带的元数据表的命名空间为hbase
当TimeStamp最大值的Type为Delete,且代表数据已删除,不会返回值
数据按照rowkey字典顺序存储
列族+rowkey+时间戳 来唯一确定数据 = cell 单元格

put 'stu', '1001', 'info:name', 'zhangsan' 插入操作,这里stu为表名,1001为rowkey,info 列:name列名,zhangsan 值
put 'test:stu', '1001', 'info:name', 'zhangsan' 这里test是指定插入的namespace,相当于是指定插入哪个库的stu表

在这里插入图片描述
在这里插入图片描述

外部文章
Hbase优缺点
Hadoop+HBase+ZooKeeper三者关系与安装配置
HBase数据检索流程与数据存储

写流程

在这里插入图片描述

确定 RegionServer 后
1 JUC加表级读锁和写行锁(读写分离,因为读读可以,读写不可以),保证更新的原子性,要么更新成功,要么失败
2 顺序写Write Ahead Log日志,如果wal写入失败则删除内存数据回滚 (容错,防止内存数据丢失)
3 数据存入 MemStore
4 释放锁,写hdfs前释放锁是为了减少持锁时间	
5 RegionServer 内所有 MemStore 达到阈值(百分之40)/ 达到设定时间(默认1h) / 达到HRegion内存阈值(默认128mb)/wal文件数量达到阈值 ,
数据sync flush写入HFile hdfs,如果失败则回滚并删除内存中数据	
6 结束事务,此时该线程更新操作才会对其他读请求可见

读流程

meta表信息(如在哪个节点)存在zookeeper,然后通过读取meta表信息来定位数据存在的节点。
读流程比写流程慢

1 先查写缓存,当写缓存menSotre没读取到数据后,走2 (先查因为可能数据刚写入写缓存)
2 会从读缓存中,当读缓存blockCache中没读取到数据后,走3
3 会从StoreFile的HFile读取。从HFile读取到的数据会放去读缓存blockCache中

Hbase读流程

在这里插入图片描述
在这里插入图片描述

数据删除时间点

flush阶段和Compact大合并会删除数据,写内存默认128mb
1 flush:删除当前memStore中重复的数据(timestamp较小的删除)。
	如果数据唯一则type标记为删除,但不实际删除数据。
	因为flush操作的是memstore的数据,即最新的数据。如果flush时,被memstore标记的数据删除了,StoreFile中有相同rowkey的数据,但是却无法知道该数据已删除,查询数据时会从磁盘中查到理论已删除的数据,则产生冲突
2 Compact:每次flush都会判断一次是否需要合并,有两种合并方式
	小合并:就会在该记录上打上标记,被打上标记的记录就成了墓碑记录,该记录使用get和scan查询不到。但不做任何删除数据
	大合并:小时间戳数据会被大时间戳数据覆盖,会重新新文件,删除淘汰数据。默认7天,非常消耗时间
3 split:
	当每次执行完flush或者compact操作,都会判断是否需要split。
	0.94版本之前 10G拆分
	
	0.94-2.0版本 拆分阈值公式=分区数量*分区数量*分区数量+256mb。
	初始为1*1*1*256mb触发拆分,最高拆分阈值默认10G不再变大
	
	当发生split的时候,会生成两个region A 和 region B但是parent region数据file并不会发生复制等操作,而是region A 和region B 会有这些file的引用。这些引用文件会在下次发生compact操作的时候清理掉,并且当region中有引用文件的时候是不会再进行split操作的

在这里插入图片描述

Hbase Split

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我爱肉肉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值