Hbase读写数据流程

Hbase读写数据流程

前言

学习大数据过程中记下的一些笔记

以下是本篇文章正文内容,下面案例可供参考

行键 的重要性 —> 1) 唯一标识 2) 排序 3) 索引 4) 实施布隆过滤器 5) 行级事务

写数据流程

在这里插入图片描述
写数据流程(put为例)

1、客户端请求Zookeeper插入数据put ‘a’,‘rk001’,‘cf:age’,‘21’

2、zookeeper返回客户端元数据在哪个region server

3、客户端请求返回的regionserver下载元数据(为什么要下载,而不是读数据,读数据不是比下载快?因为下载后会将元数据缓存到客户端内存中,下次再有相同需求时直接用缓存的数据操作)

4、客户端下载缓存,解析下载到的元数据,得到region所在的位置(hostname,regionname)

5、请求regionserver写数据,a表->包含rk001的的region->store(cf1)->MemoryStore(128M)

6、边将数据写到内存中,一边向hdfs写日志文件(避免region server宕机,内存中的数据丢失) MemoryStore(默认内存中的数据达到128M刷新一次)->flush刷新->生成多个storefile文件(逻辑上的,不是真正的文件),一个storefile对应HDFS中一个hfile文件。storefile和hfile可以看成一个东西,storefile是逻辑上的,hfile是物理上的

flush时机:
1、一个MemoryStore达到128M

2、手动刷新

3、机器内存到达阈值,所有的MemoryStore刷新

4、写操作达到一定的次数

读数据流程

在这里插入图片描述

读数据流程(get为例)
1、客户端请求Zookeeper插入数据get ‘a’,‘rk001’

2、zookeeper返回客户端元数据的位置

3、客户端请求返回的region server下载元数据

4、客户端下载缓存,解析下载到的元数据,得到region所在的位置(hostname,regionname)

5、请求region server读数据

1)一个regionserver中只有一个BlockCache, 读取数据的时候先在BlockCache,缓存块中获取数据,找到返回;

2)如果没有在BlockCache获取到数据,再进行内存和Hfile中的检索 ,如果有数据直接返回,当获取到数据以后再将数据写入BlockCache缓存起来,方便下次读取的时候提高效率。在Hfile中查找时,会***布隆过滤器***快速找到并返回。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值