论HDFS上的分布式列存储系统Hbase所具备优点以及所支持的操作

今日头条
马士兵尚学堂
HBase是一个构建在HDFS上的分布式列存储系统,主要用于海量结构化数据存储,从逻辑上讲,HBase将数据按照表、行和列进行存储。 HDFS适合批处理场景 不支持数据随机查找 不适合增量数据处理 不支持数据更...

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】部分资料有时间限制,抓紧时间吧!

THEEND

最新评论(评论仅代表用户观点)

更多
暂无评论