Hbase原理、基本概念、基本架构

  • 概述



HBase是一个构建在HDFS上的分布式列存储系统;
HBase是基于Google BigTable模型开发的,典型的key/value系统;
HBase是Apache Hadoop生态系统中的重要一员,主要用于海量结构化数据存储;
从逻辑上讲,HBase将数据按照表、行和列进行存储。
与hadoop同样,Hbase目标主要依靠横向扩展,经过不断增长廉价的商用服务器,来增长计算和存储能力。
Hbase表的特色
大:一个表能够有数 十亿行,上 百万列
无模式:每行都有一个可排序的主键和任意多的列,列能够根据须要动态的增长,同一张表中 不一样的行能够有大相径庭的列
面向列:面向列(族)的存储和权限控制, 列(族)独立检索
稀疏: 空(null)列并不占用存储空间,表能够设计的很是稀疏;
数据多版本:每一个单元中的数据能够有多个版本,默认状况下版本号自动分配,是单元格插入时的时间戳;
数据类型单一:Hbase中的数据都是字符串,没有类型。

  • Hbase数据模型

Hbase逻辑视图css


注意上图中的英文说明html

Hbase基本概念服务器

RowKey:是Byte array,是表中每条记录的“主键”,方便快速查找,Rowkey的设计很是重要。
Column Family:列族,拥有一个名称(string),包含一个或者多个相关列
Column:属于某一个columnfamily,familyName:columnName,每条记录可动态添加
Version Number:类型为Long,默认值是系统时间戳,可由用户自定义
Value(Cell):Byte array

  • Hbase物理模型

每一个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上。
markdown


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


  • HBase架构及基本组件

Hbase基本组件说明:架构

Client并发

包含访问HBase的接口,并维护cache来加快对HBase的访问,好比region的位置信息负载均衡

Master框架

为Region server分配regiondom

负责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再也不是单点故障


Write-Ahead-Log(WAL)


该机制用于数据的容错和恢复:

每一个HRegionServer中都有一个HLog对象,HLog是一个实现Write Ahead Log的类,在每次用户操做写入MemStore的同时,也会写一份数据到HLog文件中(HLog文件格式见后续),HLog文件按期会滚动出新的,并删除旧的文件(已持久化到StoreFile中的数据)。当HRegionServer意外终止后,HMaster会经过Zookeeper感知到,HMaster首先会处理遗留的 HLog文件,将其中不一样Region的Log数据进行拆分,分别放到相应region的目录下,而后再将失效的region从新分配,领取 到这些region的HRegionServer在Load Region的过程当中,会发现有历史HLog须要处理,所以会Replay HLog中的数据到MemStore中,而后flush到StoreFiles,完成数据恢复

HBase容错性
Master容错:Zookeeper从新选择一个新的Master
无Master过程当中,数据读取仍照常进行;
无master过程当中,region切分、负载均衡等没法进行;
RegionServer容错:定时向Zookeeper汇报心跳,若是一旦时间内未出现心跳,Master将该RegionServer上的Region从新分配到其余RegionServer上,失效服务器上“预写”日志由主服务器进行分割并派送给新的RegionServer
Zookeeper容错:Zookeeper是一个可靠地服务,通常配置3或5个Zookeeper实例
Region定位流程:

寻找RegionServer

ZooKeeper–> -ROOT-(单Region)–> .META.–> 用户表

-ROOT-
表包含.META.表所在的region列表,该表只会有一个Region;

Zookeeper中记录了-ROOT-表的location。

.META.

表包含全部的用户空间region列表,以及RegionServer的服务器地址。

  • Hbase使用场景

storing large amounts  of data(100s of TBs)
need high write throughput
need efficient random access(key lookups) within large data sets
need to scale gracefully with data
for structured and semi-structured data
don’t need fullRDMS capabilities(cross row/cross table transaction, joins,etc.)

大数据量存储,大数据量高并发操做

须要对数据随机读写操做

读写访问均是很是简单的操做

  • Hbase与HDFS对比

二者都具备良好的容错性和扩展性,均可以扩展到成百上千个节点;
HDFS适合批处理场景
不支持数据随机查找
不适合增量数据处理

不支持数据更新



  • 参考文档:

一、http://www.alidata.org/archives/1509(存储模型比较详细)

二、http://www.searchtb.com/2011/01/understanding-hbase.html技术框架以及存储模型

三、http://wenku.baidu.com/view/b46eadd228ea81c758f578f4.html(读和写的流程比较详细)

相关文章
相关标签/搜索