Hbase 存储读写机制

一、HBase的存储
三个机制【关键字:flush[刷新]   compaction(minor major)【合并】   split【切分】】
1.一张表被划分成很多region,交给不同的regionserver管理
2.Hbase表根据rowkey划分成多个region
  默认region大小是256M,分布式存储和负载均衡的最小单位


  =》数据增加,在超过阈值(256)
  257M(一分为二) split    =》 找到对应region上的workey的startkey和endkey,从中间值切分成两个


  3.memstrore【flush】 和 storefile【compaction】
  1)一个region由多个store组成,一个store对应一个CF(列簇)
2)store包括位于内存中的memstore和位于磁盘的storefile,写操作先写入memstore,当memstore中的数据达到某个阈值(128M),regionserver会启动flashcache进程写入storefile,每次写入形成单独的一个storefile
3)当storefile文件的数量增长到一定阈值后,系统会进行合并(minor、 major compaction) ,在合并过程中会进行版本合并和删除工作,形成更大的storefile。
4)当一个region所有storefile的大小和超过一定阈值(256M)后,会把当前的region分割为两个,并由hmaster分配到相应的regionserver服务器,实现负载均衡
5)storefile实际存储在hdfs上,又叫做hfile

【Flush基准参数】
基于memstore级别
基于单个region级别
基于regionserver级别
基于时间 默认是一个小时一次
手动flush


<property>
<name>hbase.hregion.memstore.flush.size</name>
<value>134217728</value>
</property>


<!--一台服务器regionserver所有memstore总容量(eg:100个region)达到40%就flush -->
<name>hbase.regionserver.global.memstore.upperLimit</name>
<value>0.4</value>
</property>


<!--一台服务器gionserver所有memstore总容量达到38%就会先flush一部分较大的memstore -->
<property>
<name>hbase.regionserver.global.memstore.lowerLimit</name>
<value>0.38</value>
</property>




##compacion机制
把小的storefile文件合并成大的storefile,因为同一个rowkey会始终合并成一个storefile。
默认小文件个数达到3个,或某个regionServer的mem总和达到128M就会执行合并操作.

##split机制



HBase的读写流程
Hbase:Meta  =》The hbase:meta table holds references to all User Table regions


** Meta用户表的region信息(属于哪张用户表,这张表里包含了 哪些region,这些region交给了哪些regionserverg管理)
** 每个region的rowkey范围

(一)读数据流程   [scan   get]
1)client访问zookeeper集群,zookeeper集群保存了meta的位置,获取meta被哪台regionserver服务器管理(老版本  -root-  -meta-)
2)client向这台regionserver服务器发起访问请求(-meta-)
3)cliente从meta表的rgion获取到用户表信息(region、  rowkey起始范围),向对应的regionserver服务器发起数据访问请求
4)这台regionserver服务器接收到数据请求访问并响应数据给客户端
5)先扫描memstore,再扫描blockcache,再去扫描storefile


(二)写数据流程   [create   put  delete]
1)client访问zookeeper集群,获取meta表位置,并确定当前写入数据属于哪个region(rowkey),并确定regio对应的regionserver
2)client向这台regionserver服务器发起写入数据请求
3)regionserver服务器接收请求,并响应写入
4)写入WAL(Hlog)和memstore(内存)
5)当memstore数据达到阀值会flush进磁盘形成一个storefile文件(128M) --flush
6)小文件storefile合并成为一个大的storefile文件   --compact
7) 当storefile大小超过10G(默认值),会进行split    --- split   


** HLog
** WAL(write-ahead-log) 模仿oracle
** 防止意外断电数据丢失


** 整个读写流程,没有经过Master


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值