Hbase 存储读写机制

来源:互联网 发布:仁爱路99号碧格网络 编辑:程序博客网 时间:2024/06/07 00:27
一、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类不够怎么办 猫咪耳螨传染人怎么办 ph值低了怎么办呀 水的ph值高怎么办 宝宝起热痱子了怎么办 宝宝热的起痱子怎么办 吃了有农药的菜怎么办 水银吃到肚子里怎么办 牙齿有牙结石怎么办可以去除 刷牙牙结石掉了怎么办 痘痘留下的黑印怎么办 脸上用了激素药怎么办 激素药膏用多了怎么办 8岁儿童牙齿不齐怎么办 两个牙齿之间有缝隙怎么办 蛀牙就剩牙根了怎么办 牙龈发白像烂了怎么办 3岁宝宝牙龈肿痛怎么办 1岁宝宝牙龈肿痛怎么办 牙疼引起的发烧怎么办 2岁小儿牙龈红肿怎么办 宝宝出牙牙龈红肿怎么办 3岁宝宝牙龈红肿怎么办 1岁宝宝牙龈红肿怎么办 4岁宝宝牙龈红肿怎么办 儿童牙黑了怎么办啊 牙黑了掉了一块怎么办 1岁幼儿牙齿腐蚀怎么办 我的大牙变黑了怎么办 牙齿里面黑了疼怎么办 最里面的牙黑了怎么办 牙龈的肉裂开了怎么办 有蛀牙怎么办可以变好么