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.返回结果