HBase-存储原理和优化(第三天)

HBase-存储原理和优化(第三天)

一、存储原理和优化架构图

HBase存储原理和优化

  • 一个HRegionServer会负责管理多个region
  • 一个region包含多个store
  • 一个列族就划分成一个store
  • 一个store里面只有一个memstore,对数据进行缓存,最后将数据进行flush刷到磁盘
  • 一个store里面还有多个storefile,最后数据是以多个HFile数据结构的文件保存在HDFS上,storefile是HFile的抽象对象
二、数据读取流程

HBase读取数据流程
HRegionServer的内存分为两部分,一是memstore,用来写数据,二是blockcache,用来读数据。

三、数据写入流程

HBase写入数据流程

四、flush、compact机制

flush机制

  • memstore的大小超过默认的128M时
  • 数据缓存时间超过1小时
  • memstore大小为HRegionServer全局内存大小的默认40%时

compact机制
minor compact 小合并
至少满足3个条件的storefile,才会启动小合并minor compact

  1. 合并的storefile最小个数为3
  2. 一次合并最多storefile个数
  3. storefile文件大小小于128M
  4. storefile文件大于设定值,不进行小合并
    major compact 大合并
    大合并的过程会对删除标记的数据进行真正的移除操作,超过cell单元格最大maxversion版本记录也会被移除,合并的频率低(一般默认为7天,建议设为0),性能消耗大,采用手动触发。
    HBase Shell命令:major_compact tablename
五、region拆分机制
  • 等额拆分,一个region等额拆分为两个region
  • 采用n3*256M
  • flush size*2
  • 采用rowkey
  • 采用前缀
  • 采用分隔符
  • 不拆分
六、表预分区

优点

  • 增加数据读写效率
  • 负载均衡,防止数据倾斜
  • 方便集群容灾调度region
  • 优化Map数量

采用startRowkey和endRowkey进行表的预分区
手动指定
HBase Shell命令:create 't1,‘info1’,‘info2’,SPLITS=>[‘100’,‘200’]

序号startrowkeyendrowkey
1-100
2100200
3200-

指定文件
vim split.txt
aa
bb
cc
HBase Shell命令:create ‘t1,‘info1’,‘info2’,SPLITS_FILE=>’/data/split.txt’

序号startrowkeyendrowkey
1-aa
2aabb
3bbcc
4cc-
七、region合并

region合并不是为了性能,而是为了维护,减少HRegionServer中region的数量。
冷合并(离线)
HBase Shell命令:Hbase org.apache.hadoop.hbase.util.Merge 表名 region名称1 region名称2 …
热合并(在线)
merge_region region的hash值1,region的hash值2…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值