吊打面试官之hbase的架构

hbase的架构

在这里插入图片描述

hbase基于hadoop,hbase的存储依赖于hdfs。
client、zookeeper、hmaster、hregionserver、hlog、hregion、store、mestore、storefile、hfile

client
hbase的客户端,包含访问hbase的接口(shell、java、api)
client维护一些cache加速对hbase的访问,如region的位置信息

zookeeper
监控master的状态,保证有且仅有一个active的master,达到高可用储存
所有的region的寻址入口, --root表所在的位置(服务器)
实时监控hregionserver的状态,将hregionserver的上下信息实时通知hmaster
储存hbase的所有表信息(hbase的schema数据),包含有哪些表,每个表有哪些列簇

hmaster(hbase的老大)
为regionserver分配region(新建表的时候)
负责hregion的重新分配(regionserver异常、hregion变大一分为二)
负责regionserver的负载均衡
hdfs上的垃圾文件的回收
处理schema的更新请求

hregionserver(hbase的小弟)
regionsever负责维护master分给他的region(管理region)
处理client对这些region的io请求,并和hdfs进行交互

hmaster
为regionserver分配region
负责hregion的重新分配(regionserver异常、hregion变大一分为二)
负责regionserver的负载均衡
hdfs上的垃圾文件的回收
处理schema的更新请求

hregionserver
管理region
处理客户端的io请求
负责切分变大的region
region的io请求

hlog
对hbase的操作进行记录,数据使用WAl写数据优先写到hlog,然后写到memstore,
以防数据丢失时,可以进行回滚

hregion
hbase中分布式存储和负载的最小单元。表或者表的小部分

store
相当于一个列簇

mestore
内存缓冲数据区,用户进行数据批量刷新到hdfs上(128M)

hstorefile
hbase数据以hfile的形式存储到hdfs

master :regionserver 1 : n
regionserver :log 1 : 1
regionserver : region 1 : n
region : store 1 : n
store : mestore 1 : 1
store : storefile 1 : n
storefile : hfile 1 : 1

关键字
rowkey :行键
columnfamily :列簇
column : 列
timestamp :时间戳(默认显示最新的时间)
version : 版本号
cell :单元格

habse的特点

线性和模块化可扩展性。
严格一致的读写。
自动和可配置的表分片
regionserver之间的自动故障转移支持。
使用apache hbase表支持Hadoop MapReduce作业的方便基类。
易于使用的javaapi进行客户端访问。
用于实时查询的block缓存和Bloom过滤器。
通过服务器端过滤器的查询谓词下推
基于jruby的可扩展(JIRB)shell
支持通过Hadoop度量子系统将度量导出到文件或Ganglia;或通过JMX

模式:无模式
类型数据:单一值都可以byte[]
多版本:每一个值都可以有多个版本
储存:稀疏储存。当key-value的值为null时,整个都不会占用储存空间

hbase寻址机制
1.到zk找root
2.到root表的机器上找meta表的位置
3.到meta表所在的机器找到数据真正的管理位置
4.到数据所在位置,发送io请求
5.rs与hdfs进行交互
6.写memstore
7.返回结果

猜你喜欢

转载自blog.csdn.net/qq_42706464/article/details/108846721