Hbase 总结
- Hbase简介
Hbase是Hadoop Database的简称,Hbase是分布式、面向列的开源数据库(准确是面向列族)。HDFS为Hbase提供可靠的底层数据存储服务,Map Reduce为Hbase提供高性能的计算能力,Zookeeper为Hbaset提供稳定服务和Failover机制,因为我们说Hbase是一个通过大量廉价的机器解决海量数据的高速存储和读取的分布式数据库解决方案。
- Hbase的特点
- 海量存储
- 列式存储
- 极易扩张
- 高并发
- 稀疏(主要针对Hbase的灵活性)
- Hbase的几个概念
- Column Family
Column Family又叫列族,Hbase通过列族划分数据的存储,列族下面可以包含任意多的列,实现灵活的数据存取。
Hbase表的创建的时候就必须指定列族。
Hbase的列族不是越多越好,列族最好小于或者等于3。
- Rowkey的概念
Rowkey的概念和mysql中的主键式完全一样的,Hbase使用Rowkey来唯一的区分某行的数据,由于Hbase值支持3种查询方式
基于Rowkey的单行查询
基于Rowkey的范围扫描
全表扫描
- Region的概念
Region的概念和关系型数据库的分区或者分片差不多。
Hbase会将一个大表的数据基于Rowkey的不同范围分配到不通的Region中,每个Region负责一定范围的数据访问和存储。这样即使是一张巨大的表,由于被切割到不通的region,访问起来的时延也很低。
- TimeStamp的概念
TimeStamp对Hbase来说至关重要,如果在写入数据的时候,如果用户没有指定对应的times ramp,Hbase会自动添加一个timestamp,timestamp和服务器的时间保持一致。
4.Hbase的架构
Hbase是由Client、Zookeeper、master、HRegionServe、HDFS等几个组件组成。
- Client
Client包含了访问Hbase的接口,另外Client还维护了对应的cache来加速Hbase的访问,比如cache的.META.元数据的信息
- Zookeeper
Hbase通过Zookeeper来做master的高可用、RegionServer的监控、元数据的入口以及集群配置的维护等工作。
通过Zoopkeeper来保证集群中只有1个master在运行,如果master异常,会通过竞争机制产生新的master提供服务
通过Zoopkeeper来监控RegionServer的状态,当RegionSevrer有异常的时候,通过回调的形式通知Master RegionServer上下限的信息
通过Zookeeper存储元数据的统一入口地址
- Hmaster
Master节点的主要职责如下:
为RegionServer分配Region
维护整个集群的负载均衡
维护集群的元数据信息
发现失效的Region,并将失效的Region分配到正常的Region Server上
当RegionServer失效的时候,协调对应Hlog的拆分
- HregionServer
HregionServer直接对接用户的读写请求,是真正的“干活”的节点。它的功能概括如下:
管理master为其分配的Region
处理来自客户端的读写请求
负责和底层HDFS的交互,存储数据到HDFS
负责Region变大以后的拆分
负责Storefile的合并工作
- HDFS
HDFS为Hbase提供最终的底层数据存储服务,同时为Hbase提供高可用(Hlog存储在HDFS)的支持,具体功能概括如下:
提供元数据和表数据的底层分布式存储服务
数据多副本,保证的高可靠和高可用性
5.Hbase的使用场景
Hbase比较适合的场景概括如下:
是巨量大(百T、PB级别)
查询简单
不涉及到复杂的关联
有几个典型的场景特别适合使用Hbase来存储:
海量订单流水数据(长久保存)
交易记录
数据库历史数据
- Hbase写入逻辑
第一步:Client获取数据写入的Region所在的RegionServer
第二步:请求写Hlog
第三步:请求写MemStore