欢迎投稿

今日深度:

HBase,

HBase,


HBase是一个构建在HDFS上的分布式列存储系统,主要用于海量结构化数据存储,从逻辑上讲,HBase将数据按照表、行和列进行存储。

HDFS适合批处理场景

? ? ? ? 不支持数据随机查找

? ? ? ? 不适合增量数据处理

? ? ? ? 不支持数据更新

以上HDFS不适合、不支持的场景,HBase都支持

? ? ? ? 大数据上高并发操作,比如每秒对PB级数据进行上千次操作,并且读写访问均是非常简单的操作。

Hbase表的特点

? ? ? ? 大:一个表可以有数十亿行,上百万列;

? ? ? ? 无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态的增加,同一张表中不同的行可以有截然不同的列;

? ? ? ? 面向列:面向列(族)的存储和权限控制,列(族)独立检索;

? ? ? ? 稀疏:对于空(null)的列,并不占用存储空间,表可以设计的非常稀疏;

? ? ? ? 数据多版本:每个单元中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入时的时间戳;

数据类型单一:Hbase中的数据都是字符串,没有类型。

行存储和列存储的比较

传统行式永利ag手机版|首页

? ? ? ? 数据是按行存储的

? ? ? ? 没有索引的查询使用大量I/O

? ? ? ? 建立索引和物化视图需要花费大量时间和资源

? ? ? ? 面向查询的需求,永利ag手机版|首页必须被大量膨胀才能满足性能要求

列式永利ag手机版|首页

? ? ? ? 数据是按列存储-每一列单独存放

? ? ? ? 数据即是索引

? ? ? ? 指访问查询涉及的列-大量降低系统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)

控制不会被保存,不占存储空间

以上特点类似分库技术中的垂直切分,提高了并发访问速度

物理存储

? ? 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架构

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定位

关系永利ag手机版|首页和HBase比较

Hbase在淘宝的应用

? ? ? ? 淘宝指数

? ? ? ? 交易历史记录查询系统

Facebook已经放弃了自己创建的Cassandra,使用了HBase

www.htsjk.Com true http://www.htsjk.com/hbase/37746.html NewsArticle HBase, HBase是一个构建在HDFS上的分布式列存储系统,主要用于海量结构化数据存储,从逻辑上讲,HBase将数据按照表、行和列进行存储。 HDFS适合批处理场景 ? ? ? ? 不支持数据随机查...
相关文章
    暂无相关文章
评论暂时关闭