HBase简介
- HBase是Apache顶级项目
HBase: Hadoop database
HBase内部管理的文件全部存储在HDFS当中,同时MapReduce这个计算框架在HBase之上提供高性能的海量数据计算。
1.HBase是Bigtable的开源实现
2.稀疏的、面向列的
3.基于HDFS,高可靠、可伸缩
4.利用Zookeeper进行协同服务
5.适合大数据随机和实时读写
HBase基本概念
- RowKey(行键):类似于关系型数据库的主键,唯一的,最大长度64k,在内部存储为字节数组,HBase表中的数据是按照RowKey的字典序排列的。
- Column Family(列族):由若干列构成,是表Schema的一部分。一个列族包含的所有列在物理存储上都是在同一个底层的存储文件中。
- Column(列):一般都是从属于某个列族。数量没有强限制,可以动态添加。这就是我们常说的HBase面向列的优点,不像传统的关系型数据库,调整一下Schema影响较大。
- Version Number(版本号):HBase中每一列的值或者每个单元格的值都是具有版本号的,默认系统当前时间戳,精确到毫秒。一个单元格里面的数据是按照版本号降序的,也就是说最后写入的值会被最先读取到。
- Cell(单元格):一个单元格是由行键、列标识、版本号唯一确定。Cell中的数据是没有类型的,全部都是字节码。
HBase表物理视图
-
表的横向切分(Table -> Region)
Table中所有的行都是按照row key的字典序排列的
Table在行的方向上分割为多个Region
-
Region的分裂
Region具有最大值,达到阈值会等分为两个Region
-
Region的分布
Region是HBase扩展和负载均衡的基本单元,不同的Region分布到不同的RegionServer
-
Region的存储结构
Region是分布式存储的最小单元,但不是存储的最小单元
一个Region是由一个或多个Store组成的,每一个Store其实就是一个列族。每个Store又是由一个memStore和0个或者多个storeFile组成。memStore是存储在内存中,storeFile是存储在HDFS中,有时候也称HFile。数据都会先写入memStore,一旦memStore超过给的最大值之后,HBase就会将memStore持久化为storeFile。
HBase集群结构
-
HBase的三个主要组件:客户端库(API)、一台主服务器(Master)、多台Region服务器(RegionServer)
1.客户端库:可以通过HBase提供的各式语言API访问集群。API库也会维护一个本地缓存来加快对HBase的访问,比如缓存中记录着Region的位置信息
2.Master节点:主要为每个RegionServer分配Region,负责RegionServer的负载均衡,管理用户对于table的CRUD操作
3.RegionServer:维护Region,处理对这些Region的IO请求,负责切分在运行过程中过大的Region。