Hbase结构和读写过程

15 篇文章 0 订阅
6 篇文章 0 订阅
1、Hbase写如过程图(图片来源于网络)


2、Hbase的结构
Master: HBase Master用于协调多个Region Server,侦测各个RegionServer之间的状态,并平衡RegionServer之间的负载,并且分配Region给RegionServer。

Region Server:一个RegionServer包含了多个Region(10-1000),每个Region大小为 256MB -20G(默认10G)。RegionServer管理Region,以及实现读写操作。Client直接连接RegionServer,并通信获取HBase中的数据或者进行写入。(通过ZK连接,Master挂了都没关系)可以看出,一个RegionServer(一个DataNode节点)最多可以管理最大20T的数据

Region:真实存放HBase数据的地方,也就说Region是HBase可用性和分布式的基本单位。默认一个表创建一个Region。Region是Hbase的最小逻辑单元。

Store:一个列族对应一个Store,也就是一个Region对应一个或多个Store,一个Store包含一个或多个StoreFile,StoreFile包含一个或多个Hfile,Hfile才是真实的存储文件,StoreFile只是Hfile上做了轻量的封装。

3、LSM-tree和HLog提升写入速度和确保数据的高可用
为了提升Hbase的写入速度,Hbase采用了LSM-tree( Log-Structure Merge-Tree快速地建立索引。B-tree是建立索引的通用技术,但是,在大并发插入数据的情况下,B-tree需要大量的磁盘随机IO,很显然,大量的磁盘随机IO会严重影响索引建立的速度。
LSM-tree 要思想是划分不同等级的树。以两级树为例,可以想象一份索引数据由两棵树组成,一棵树存在于内存(实际上内存中有N棵树),一棵树存在于磁盘。Hbase写入的过程其实就是写入到内存中,在内存中创建N棵小树。
小树先写到内存中,为了防止内存数据丢失,写内存的同时需要暂时持久化到磁盘,对应了HBase的MemStore和HLog(Hlog的存在就是确保内存中的数据丢失)。
MemStore上的树达到一定大小之后,需要flush到HRegion磁盘中(一般是Hadoop DataNode),这样MemStore就变成了Store上的磁盘文件StoreFile,定期HRegionServer对DataNode的数据做merge操作,彻底删除无效空间,多棵小树在这个时机合并成大树,来增强读性能。
为什么LSM-tree的插入很快
1. 首先,插入操作首先会作用于内存,并且,内存中的树不会很大,这会很快。
2. 合并操作会顺序写入一个或多个磁盘页,这比随机写快得多。

4、LSM-tree是否影响读取数据的速度
Hbase读取数据的过程:
最先读取内存中的小树(N棵),如果内存中没有找到,就会查询磁盘(B+树)
可以看出,答案是会影响的,增加了遍历内存中N棵小树的遍历,当然,内存操作会很快。

5、LSM Tree优化方式:
a、Bloom filter: 就是个带随即概率的bitmap,可以快速的告诉你,某一个小的有序结构里有没有指定的那个数据的。于是就可以不用二分查找,而只需简单的计算几次就能知道数据是否在某个小集合里啦。效率得到了提升,但付出的是空间代价。
b、compact:小树合并为大树:因为小树他性能有问题,所以要有个进程不断地将小树合并到大树上,这样大部分的 老数据 查询也可以直接使用log2N的方式找到.




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值