hadoop主要解决大规模数据离线批量处理,但无法满足大规模实时数据的处理,所以诞生了hbase。

hbase是一个分布式数据库,它必须通过行键、列族、列限定符、时间戳来定位数据。

Hbase的功能组件:
HBase由库函数,Master和RegionServer组成

Hbase入门简单学习

表和region:
一个HBase表最初只有一个region,当数据存满时,它会进行分裂
Hbase入门简单学习

HBase三级寻址:
HBase查询数据过程
第一层 zookeeper文件:记录了root表的位置
第二层 root表(根数据表): 记录了META表(元数据表)的Region的位置信息,root表只能有一个region
第三层 META表:记录了用户数据表的region的位置信息,META表可以有多个region,保存了Hbase所有用户数据表的region的位置信息

Hbase入门简单学习
Hbase的存储容量:
一个root表只能有一个region,若一个region的存储大小为128MB,按照每行占用1KB计算,128MB可以存储128MB/1KB = 2¹⁷个META表,同理一个META表也能存储 2¹⁷ 个用户数据表,所以最终三层结构可以保存的region数目为 2³⁴region

三级寻址的缓存机制:
为了加速寻址,客户端会缓存位置信息
Hbase是惰性缓存,只有当所查找的数据无法找到时,它才会更新缓存

Hbase的架构:
zookeeper :hbase没有单点故障,因为中间有zookeeper,当master挂掉后,zookeeper会使用选举机制迅速选出一个leader,它是整个架构的管家

Hbase入门简单学习

master : 负责对表的增删改查、不同regionserver的分配,实现负载均衡
、调整分裂,合并后region的分布,重新分配故障、失效的regionserver
Hbase入门简单学习
region server :负责用户数据的存储和管理
Hbase入门简单学习

region server中有很多region,当memstore写满之后溢出到storefile中,一个region中有一个Hlog和多个store,store中有storefile,storefile是hdfs上的hfile在hbase中的表现形式,hfile是最小的存储单元,region是最小的负载均衡结构单元

数据读写过程: 数据会被首先写入memstore(store缓存)中,然后写入hlog,当写入到hlog之后,commit提交给客户端
当读数据时,会先读memstore中的数据(因为数据先都是先写入memstore),如果找不到再去store中找

数据的刷写: 当memstore中的数据满了之后,store会执行flush,每flush一次,都会生成一个新的store file,flush和compaction(合并)操作都是region级别的,当一个memstore满了需要flush时,会触发整个region中所有的store的flush操作,即使其他region中store的数据还没满只有少量,所以列族尽量一个表占一个(一个store),这样就避免了region的频繁负载。

放一张region服务器集群
Hbase入门简单学习

图片均来源网络,侵删
参考文章:https://www.jianshu.com/p/53864dc3f7b4

对我文章有兴趣的话,不妨关注下公众号,不定期更新大数据相关文章????
Hbase入门简单学习

相关文章: