HBase是一个构建在HDFS上的分布式列存储系统,主要用于海量结构化数据存储,从逻辑上讲,HBase将数据按照表、行和列进行存储。
HDFS适合批处理场景
不支持数据随机查找
不适合增量数据处理
不支持数据更新
以上HDFS不适合、不支持的场景,HBase都支持
大数据上高并发操作,比如每秒对PB级数据进行上千次操作,并且读写访问均是非常简单的操作。
论HDFS上的分布式列存储系统Hbase所具备优点以及所支持的操作
Hbase表的特点
大:一个表可以有数十亿行,上百万列;
无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态的增加,同一张表中不同的行可以有截然不同的列;
面向列:面向列(族)的存储和权限控制,列(族)独立检索;
稀疏:对于空(null)的列,并不占用存储空间,表可以设计的非常稀疏;
数据多版本:每个单元中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入时的时间戳;
数据类型单一:Hbase中的数据都是字符串,没有类型。
行存储和列存储的比较
传统行式数据库
数据是按行存储的
没有索引的查询使用大量I/O
建立索引和物化视图需要花费大量时间和资源
面向查询的需求,数据库必须被大量膨胀才能满足性能要求
列式数据库
数据是按列存储-每一列单独存放
数据即是索引
指访问查询涉及的列-大量降低系统I/O
每一列由一个线程来处理-查询的并发处理
数据类型一致,数据特征相似-高效压缩
基本概念
Row Key
Byte array
表中每条记录的“主键”
方便快速查找
Column Family
拥有一个名称(string)
包含一个或者多个相关列
Column
属于某一个Column Family
包含在某一列中
familyName:columnName
Version Number
每个rowkey唯一
默认值:系统时间戳
类型为Long
Value(Cell)
Byte array
数据模型
HBase schema可以有多个Table
每个表可由多个Column Family组成
HBase可以有Dynamic Column
列名称是编码在cell中的
不同的cell可以拥有不同的列
version number可由用户提供
无需以递增的顺序插入
每一行的rowkey必须是唯一的
Table可能非常稀疏
很多cell可以是空的
Row Key是主键
HBase支持操作
所有操作都是基于rowkey的
支持crud和scan
单行操作:put、get、scan
多行操作:MultiPut、scan
没有内置join操作,可以使用MapReduce解决
物理模型
rowkey和version number在每个column family中都有一份
每个column family存储在HDFS上的一个单独文件中(就是store)
控制不会被保存,不占存储空间
以上特点类似分库技术中的垂直切分,提高了并发访问速度
论HDFS上的分布式列存储系统Hbase所具备优点以及所支持的操作
物理存储
1、Table中的所有行都按照row key的字典序排列;
2、Table在行的方向上分割为多个Region;
3、Region按大小分割的,每个表开始只有一个region,随着数据增多,region不断增大,当增大到一个阀值的时候,region就会等分会两个新的region,之后会有越来越多的region;
4、Region是HBase中分布式存储和负载均衡的最小单元。不同Region分布到不同RegionServer上;
5、Region虽然是分布式存储的最小单元,但并不是存储的最小单元。
Region由一个或者多个Store组成,每个store保存一个columns family;
每个Strore又由一个memStore和0至多个StoreFile组成;
memStore存储在内存中,StoreFile存储在HDFS上。
HBase架构
论HDFS上的分布式列存储系统Hbase所具备优点以及所支持的操作
HBase基本组件
Client
包含访问HBase的接口,并维护cache来加快对HBase的访问
Zookeeper
Hbase依赖Zookeeper,hbase会管理zookeeper的实例
保证任何时候,集群中只有一个master
存储所有region的寻址入口
实时监控region server的上线和下线信息,并实时通知给master
存储hbase的schema和table元数据
Master
为region server分配region
负责region server的负载均衡
发现失效的region server并重新分配其上的region
管理用户对table的增删改查操作
Region Server
维护region,处理对这些region的IO请求
负责切分在运行过程中变得过大的region
HBase容错性
Master容错:zookeeper重新选择一个新的master
无master过程中,数据读取仍照常运行
无master过程中,region切分、负载均衡等无法进行
region server容错:定时向zookeeper汇报心跳,如果一段时间内未出现心跳
master将该region server上的region重新分配到其他region server上
失效服务器上预写日志由主服务器进行分割并派送给新的region server
zookeeper容错:zookeeper是一个可靠的服务
一般配置3或5个zookeeper实例
Region定位
论HDFS上的分布式列存储系统Hbase所具备优点以及所支持的操作
关系数据库和HBase比较
论HDFS上的分布式列存储系统Hbase所具备优点以及所支持的操作
关系数据库和HBase比较
Hbase在淘宝的应用
淘宝指数
交易历史记录查询系统
Facebook已经放弃了自己创建的Cassandra,使用了HBase.
【1】想了解大数据知识,可以关注我下方评论转发后,私信“资料”。
【2】部分资料有时间限制,抓紧时间吧!