您的位置:首页 > 运维架构 > 网站架构

HBase 简介以及个人理解(原理,基本概念,基本架构)

2015-08-22 21:01 573 查看

1.HBase简介

HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。HBase利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为协调工具。

2.基础知识

2.1数据模型

HBASE中的每一张表,就是所谓的BigTable。稀疏表。

RowKey 和 ColumnKey 是二进制值byte[],按字典顺序排序;

Timestamp 是一个 64 位整数,时间戳,每次数据操作对应的时间戳,可以看作是数据的version number;

value 是一个未解释的字节数组byte[]。

Column Family:列簇,Table在水平方向有一个或者多个Column Family组成,一个Column Family中可以有任意多个Column组成,即Column Family支持动态扩展,无需预先定义Column的数量以及类型,所有Column均以二进制格式存储,用户需要自行进行类型转换。



逻辑数据模型



物理数据模型



2.1.1行

字符串、整数、二进制串甚至串行化的结构都可以作为行键。

图中Row Key 是行键。

表按照行键的“逐字节排序”顺序对行进行有序化处理。

行的顺序也就是说按照行键的字典序进行排序的,可能是有这样的情况,

row-1

row-10

row-2

row-20

表内数据非常‘稀疏’,不同的行的列的数完全目可以大不相同

可以只对一行上“锁”

对行的写操作是始终是“原子”的



2.1.2列

列必须用‘族’(family)来定义。

任意一列有如下形式,

“族:标签”

其中,族和标签都可为任意形式的串。

图中,cnnsi.com和my.look.ca就是标签

物理上将同“族”数据存储在一起

数据可通过时间戳区分版本

2.2物理存储

2.2.1Region

每个column family存储在HDFS上的一个单独文件中,空值不会被保存。Key 和 Version number在每个 column family中均有一份;

HBase 为每个值维护了多级索引,即:

<key, column family, column name, timestamp>


Table中所有行都按照row key的字典序排列;

Table在行的方向上分割为多个Region;

Region按大小分割的,每个表开始只有一个region,随着数据增多,region不断增大,当增大到一个阀值的时候,region就会等分会两个新的region,之后会有越来越多的region;

Region是Hbase中分布式存储和负载均衡的最小单元,不同Region分布到不同RegionServer上。



2.2.2Store

Region虽然是分布式存储的最小单元,但并不是存储的最小单元。Region由一个或者多个Store组成,每个store保存一个columns family;每个Strore又由一个memStore和0至多个StoreFile组成,StoreFile包含HFile;memStore存储在内存中,StoreFile存储在HDFS上。



2.3HBase架构及基本组件



Hbase基本组件说明:

Client

包含访问HBase的接口,并维护cache来加快对HBase的访问,比如region的位置信息

Master

为Region server分配region

负责Region server的负载均衡

发现失效的Region server并重新分配其上的region

管理用户对table的增删改查操作

Region Server

Regionserver维护region,处理对这些region的IO请求

Regionserver负责切分在运行过程中变得过大的region

Zookeeper

通过选举,保证任何时候,集群中只有一个master,Master与RegionServers 启动时会向ZooKeeper注册

存贮所有Region的寻址入口

实时监控Region server的上线和下线信息。并实时通知给Master

存储HBase的schema和table元数据

默认情况下,HBase 管理ZooKeeper 实例,比如, 启动或者停止ZooKeeper

Zookeeper的引入使得Master不再是单点故障

HBase中有两张特殊的Table,-ROOT-和.META.

.META.,记录了用户表的Region信息,.META.可以有多个regoin;

-ROOT-,记录了.META.表的Region信息,-ROOT-只有一个region

Zookeeper中记录了-ROOT-表的location;

Client访问用户数据之前需要首先访问zookeeper,然后访问-ROOT-表,接着访问.META.表,最后才能找到用户数据的位置去访问



参考内容
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: