HBase介绍
HBase - Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可以在廉价的PC SERVER上搭建大规模结构化数据存储的集群。
HBase利用Hadoop HDFS 作为其文件存储系统, 利用Hadoop Mapreduce来处理HBase中的海量数据,利用Zookeeper作为协调工具。
可以单独运行,也可以与mapreduce关联使用,且必须依赖zookeeper
什么情况下使用HBase(一定程度上弥补了HDFS缺陷)
- 需要对数据进行随机读操作或者随机写操作
- 大数据量高并发操作,比如每秒对PB级数据进行上千次操作
- 读写访问均是非常简单操作
逻辑数据模型
行键具有唯一性;
列没有必要提前写好
没有写数据的区域不会占据物理空间
行键:
字符串、整数、二进制串甚至串行化的结构都可以作为行键
表按照行键的“逐字节排序”顺序对行进行有序化处理
列族:
表中至少有一个列族
“族:标签”其中,族和标签都可为任意形式的串
物理上将通“族”数据存储在一起
物理数据模型
数据存储
系统架构
角色 | 作用 |
client | 包含访问hbase的接口,client维护者一些cache来加快对hbase的访问,比如region的位置信息 |
zookeeper | 保证任何时候,集群中只有一个runningmaster;存贮所有region的寻址入口;实时监控region server的状态,将其上下线信息实时通知给master;存储hbase的schema,包括元数据包括有哪些table |
master | 可以启动多个master,通过zookeeper的master election机制保证总有一个master运行;为regionserver分配region;负责region server的负载均衡;发现失效的region server 并重新分配其上的region |
region server | 维护master分配给它region,处理region的IO请求;负责切分运行过程中变得过大的region |
region定位
ROOT表存储了META表所在region的位置,root表只有一个region;
zookeeper file记录了 -ROOT表的region位置;
META表存储所有用户表的region的位置;
Table在行的方向上分割为多个HRegion,一个region由[startkey,eendkey)表示,每个HRegion分散在不同的regionserver中;
HBase访问接口
- Native Java API
- HBase shell
- Thrift Gateway
- REST Gateway
- Pig& Hive