实时检索之HBase
1、概念
HBase是一个分布式的NoSQL数据库,其特点高可靠、高性能、面向列、可伸缩。
- 适合存储大表数据 ,并且可实时读写大表数据。大表:表的规模可以达到数十亿行以及数百万列
- 表结构稀疏。稀疏:对于为空的列,并不占用存储空间
- 数据底层存储于Hadoop HDFS分布式文件系统。
- 利用ZooKeeper作为协同服务。
2、特点
HBase适合具有如下需求的应用:
- 海量数据 (TB、PB) 。
- 不需要完全拥有传统关系型数据库所具备的ACID特性。
- 高吞吐量。
- 需要在海量数据中实现高效的随机读取。
- 需要很好的性能伸缩能力。
- 能够同时处理结构化和非结构化的数据。
ACID原则是数据库事务正常执行的四个特性,分别指原子性、一致性、独立性及持久性。
- 事务的原子性(Atomicity):指一个事务要么全部执行,要么不执行。也就是说一个事务不可能只执行了一半就停止了。比如你从取款机取钱,这个事务可以分成两个步骤:1划卡,2出钱,不可能划了卡,而钱却没出来.这两步必须同时完成,要么就不完成。
- 事务的一致性(Consistency):指事务的运行并不改变数据库中数据的一致性.例如,完整性约束了a+b=10,一个事务改变了a,那么b也应该随之改变。
- 独立性(Isolation):事务的独立性也有称作隔离性,是指两个以上的事务不会出现交错执行的状态.因为这样可能会导致数据不一致。
- 持久性(Durability):事务的持久性是指事务执行成功以后,该事务所对数据库所作的更改便是持久的保存在数据库之中,不会无缘无故的回滚。
3、各组件
ZooKeeper为HBase集群中各进程提供分布式协作服务。各RegionServer将自己的信息注册到Zookeeper中,主用Master据此感知各个RegionServer的健康状态。
Client使用HBase的RPC机制与Master、RegionServer进行通信。Client与Master进行管理类通信,与RegionServer进行数据操作类通信。
RegionServer负责提供表数据读写等服务,是HBase的数据处理和计算单元。RegionServer一般与HDFS集群的DataNode部署在一起,实现数据的存储功能。
HMaster,在HA模式下,包含主用Master和备用Master。
- 主用Master:负责HBase中RegionServer的管理,包括表的增删改查;RegionServer的负载均衡,Region分布调整;Region分裂以及分裂后的Region分配;RegionServer失效后的Region迁移等。
- 备用Master:当主用Master故障时,备用Master将取代主用Master对外提供服务。故障恢复后,原主用Master降为备用。
HDFS为HBase提供高可靠的文件存储服务,HBase的数据全部存储在HDFS中。
Store:一个Region由一个或多个Store组成,每个Store对应图中的一个Column Family。
MemStore:一个Store包含一个MemStore,MemStore缓存客户端向Region插入的数据。
StoreFile:MemStore的数据flush到HDFS后成为StoreFile。
Hfile:HFile定义了StoreFile在文件系统中的存储格式,它是当前HBase系统中StoreFile的具体实现。
Hlog:HLog日志保证了当RegionServer故障的情况下用户写入的数据不丢失,RegionServer的多个Region共享一个相同的Hlog。