一、HBase概念
HBASE是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBASE技术可在廉价PC Server上搭建起大规模结构化存储集群。
HBASE的目标是存储并处理大型的数据,更具体来说是仅需使用普通的硬件配置,就能够处理由成千上万的行和列所组成的大型数据。
HBase不同于Oracle、SQL Server等关系型数据库,它不支持标准SQL语言,也不是以行存储的关系型结构存储数据,而是以键值对的方式按列存储。
HBASE是Google Bigtable的开源实现,但是也有很多不同之处。
拓展知识:HBase和HDFS区别
HDFS:适合存储大量文件的分布式文件系统;不支持快速单独记录查询;支持高延迟批量处理;只能顺序访问提供的数据。
HBase:建立在HDFS上的数据库;支持在较大的表中快速查询;支持在数十亿记录中低延迟访问单个行记录;内部使用哈希表并提供随机接入,利用存储索引,可以在HDFS文件中进行快速查找。
二、HBase的架构
HBase 内置有 Zookeeper,但一般我们会有其他的 Zookeeper 集群来监管 master 和 regionserver,Zookeeper 通过选举,保证任何时候,集群中只有一个活跃的 HMaster,HMaster 与 HRegionServer 启动时会向 ZooKeeper 注册,存储所有 HRegion 的寻址入口,实时监控 HRegionserver 的上线和下线信息。并实时通知给 HMaster,存储 HBase 的 schema 和 table 元数据,默认情况下,HBase 管理 ZooKeeper 实例,Zookeeper 的引入使得 HMaster 不再是 单点故障。一般情况下会启动两个 HMaster,非 Active 的 HMaster 会定期的和 Active HMaster 通信以获取其最新状态,从而保证它是实时更新的,因而如果启动了多个 HMaster 反而增加 了 Active HMaster 的负担。
一个 RegionServer 可以包含多个 HRegion,每个 RegionServer 维护一个 HLog,和多个 HFiles 以及其对应的 MemStore。RegionServer 运行于 DataNode 上,数量可以与 DatNode 数量一致
HMaster 功能:
- 监控 RegionServer
- 处理 RegionServer 故障转移
- 处理元数据的变更
- 处理 region 的分配或移除
- 在空闲时间进行数据的负载均衡
- 通过 Zookeeper 发布自己的位置给客户端
RegionServer功能:
- 负责存储 HBase 的实际数据
- 处理分配给它的 Region
- 刷新缓存到 HDFS
- 维护 HLog
- 执行压缩
- 负责处理 Region 分片
HFile:
- 这是在磁盘上保存原始数据的实际的物理文件,是实际的最小存储文件。
Store:
- HFile 存储在 Store 中,一个 Store 对应 HBase 表中的一个列族。
Region:
- Hbase 表的分片,HBase 表会根据 RowKey值被切分成不同的 region存储在 RegionServer 中,在一个 RegionServer 中可以有多个不同的 region。
MemStore :
- 顾名思义,就是内存存储,位于内存中,用来保存当前的数据操作,所以当数据保存在 WAL中之后,RegsionServer 会在内存中存储键值对