hbase的读写机制详解,及flush参数的配置详解

1,HBase的的读写流程图,是一个二次寻址的过程

第一次直接到动物园管理员中找到元的元数据信息,即元对应的储存其他所有用户表的RegionServer的的位置,示意图中所给出的为regionserver1,然后第二次直接到regionserver1中的meta.region查询对应的{namespace:table,rowkey,column_family,column}的位置,这个具体的region根据start key和end key和自身的rowkey来决定,最后在Hmaster的调度下,Hregionserver(示意图中的regionserver2)执行最后的更新或插入操作

插入一个插曲,就是官方对空键的解释


翻译下来为:空键用于表示表开始和表结束。具有空开始的区域是表中的第一个区域。如果一个区域有一个空的开始键和一个空的结束键,它是表中唯一的区域,所以每一个rowkey都能找到自己唯一的区域,进行数据操作。

总结如下

1.1,读数据流程[scan get]
1)客户端访问zookeeper集群,zookeeper集群保存了meta的位置,获取meta被哪台服务器管理
2)cli​​ent向这台regionserver服务器发起访问请求(-meta-)
       3)客户端从元表的rgion获取到用户表信息(区域,所在RegionServer的,rowkey起始范围),向对应的RegionServer的服务器发起数据访问请求4)这台RegionServer的服务器接收到数据请求访问并响应数据给客户端1.2 ,写数据流程[create put delete] 1)客户端访问zookeeper集群,获取meta表位置,并确定当前写入数据属于哪个区域(rowkey),并确定regio对应的regionserver 2)cli​​ent向这台regionserver服务器发起写入数据请求3)区域服务器接收请求,并响应写入4)先写入WAL(Hlog),再写入memstore(内存)5)当memstore数据达到阀值会冲洗进磁盘形成一个storefile文件(128M) --flush 6)小文件storefile合并成为一个大的storefile文 件    --compact 7)当storefile大小超过10G(默认值)时,会进行split ---拆分   










2,HBASE的相关参数设置

##flush机制
<!--当memstore的大小超过这个值的时候,会flush到磁盘,默认为128M -->
<property>
<name>hbase.hregion.memstore.flush.size</name>
<value>134217728</value>
</property>


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


<!--当强制执行flush操作的时候,当低于这个值的时候,flush会停止。默认是堆大小的 35%  -->
<property>
<name>hbase.regionserver.global.memstore.lowerLimit</name>
<value>0.35</value>

</property>

max heap 在hbase-env.sh 中进行设置,默认为1000M


## compacion机制
<! - 当小的storefile文件达到这个值,就会合并成大的storefile,因为同一个rowkey会始终合并成一个storefile - >
<property>
<name> hbase.hstore.compactionThreshold < / name>
<value> 3 </ value>
<source> hbase-default.xml </ source>
</ property>


<! - 一个Region中的所有HStoreFile的主要压缩的时间间隔。默认是1天。设置为0就是禁用这个功能 - >
<property>
<name> hbase.hregion.majorcompaction </ name>
<value> 86400000 </ value>
<source> hbase-default.xml
</ source> </ property>


## split机制
在工具组的命令中,可以对数据进行手动的flush,compact,split操作
组名:tools
命令:assign,balance_switch,balancer,catalogjanitor_enabled,catalogjanitor_run,catalogjanitor_switch,close_region,compact,flush,hlog_roll,major_compact,merge_region,move,split,trace,unassign,zk_dump
<! - 最大HFile大小。如果一个区域的HFiles的大小并且超过此值,则该区域被分割为两个.->
<property>
<name> hbase.hregion.max.filesize </ name>
<value> 10737418240 </ value>
<source> hbase-default。 XML </源>

</属性>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值