HBase详解(一)——介绍,架构,数据模型

HBase介绍

HBase是Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩、实时读写的分布式数据库 LSMTree

利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为其分布式协同服务。

从技术上讲,HBase实际上更像是“数据存储”而不是“数据库”,因为它缺少RDBMS中的许多功能,例如字段型列,二级索引,触发器和高级查询语言等。

主要用来存储非结构化和半结构化的松散数据(列式存储的NoSQL 数据库)

NoSQL 数据库:

redis,mongoDB

memcached,CouchDB

hbase Cassandra

HBase的特点是:

  • 强大的一致读/写:HBase不是“最终一致”的DataStore。它非常适合高速计数器聚合等任务。
  • 自动分片:HBase表通过region分布在群集上,并且随着数据的增长,region会自动分割和重新分配。
  • 自动的RegionServer故障转移。
  • Hadoop/HDFS集成:HBase支持HDFS作为其分布式文件系统。
  • MapReduce:HBase支持通过MapReduce进行大规模并行处理,将HBase用作源和漏。  HBASE->MR->HDFS  HBASE->MR->HBASE  HDFS->MR->HBASE
  • Java客户端API:HBase支持易于使用的Java API以进行编程访问。
  • Thrift/REST API:HBase还支持非Java前端的Thrift和REST。
  • 块缓存和布隆过滤器:HBase支持块缓存和布隆过滤器,以实现大容量查询优化。
  • 运维管理:HBase提供内置网页,用于运维监控和JMX指标。

HBase架构   

HBase详解(一)——介绍,架构,数据模型_第1张图片

目录表

目录表hbase:meta作为HBase表存在,并从HBase shell的list命令中过滤掉,但实际上是一个表,就像任何其他表一样。

hbase:meta

hbase:meta表(以前称为.META.),保有系统中所有region的列表。hbase:meta存储在zookeeper中。

表结构如下:

key:

region的key,结构为:[table],[region start key],[region id]

values:

info:regioninfo(当前region序列化的HRegionInfo实例)

info:server(包含当前region的RegionServer的server:port)

info:serverstartcode(包含当前region的RegionServer进程的开始时间)

当表正在拆分时,将创建另外两列,称为info:splitA和info:splitB。 这些列代表两个子region。 这些列的值也是序列化的HRegionInfo实例。区域分割后,将删除此行。

空键用于表示表开始和表结束。具有空开始键的region是表中的第一个region。如果某个region同时具有空开始和空结束键,则它是表中唯一的region。

启动顺序

首先,在zookeeper中查找hbase:meta的位置。其次,使用服务器和启动代码更新hbase:meta的值。

client

hbase:meta   tablea,1-100,node2

hbase:meta   tablea,101-200,node3

hbase:meta   tablea,201-300,node5

hbase:meta   tablea,301-400,node237

hbase:meta   tablea,401-500,node24

hbase:meta   tablea,501-600,node896

zookeeper->root region    tablea,node3   tableb,node4

root region->meta region

meta region-> regionserver(数据)

包含访问HBase的接口并维护cache来加快对HBase的访问。HBase客户端查找关注的行范围所在的regionserver。它通过查询hbase:meta表来完成此操作。在找到所需的region之后,客户端与提供该region的RegionServer通信,而不是通过Master,并发出读取或写入请求。此信息缓存在客户端中,以便后续请求无需经过查找过程。如果Master的负载均衡器重新平衡或者由于regionserver宕机,都会重新指定该region的regionserver。客户端将重新查询目录表以确定用户region的新位置。

通过Admin进行管理功能的实现。

Zookeepper

保证任何时候,集群中只有一个活跃master

存贮所有Region的寻址入口。 root region的地址

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

存储HBase的schema和table元数据

Master

为Region server分配region

负责Region server的负载均衡

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

管理用户对table的增删改操作 不是数据的增删改

概括:管理region的分配

  管理对表的操作

RegionServer

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

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

Region

HBase自动把表水平划分成多个区域(region),每个region会保存一个表里面某段连续的数据  (每条记录都有一个行键,按照行键字典序排列)

每个表一开始只有一个region,随着数据不断插入表,region不断增大,当增大到一个阀值的时候,region就会等分会两个新的region(裂变)

当table中的行不断增多,就会有越来越多的region。这样一张完整的表被保存在多个Regionserver 上。

Memstore 与 storefile

HBase详解(一)——介绍,架构,数据模型_第2张图片

一个region由多个store组成,一个store对应一个CF(列族)

store包括位于内存中的memstore和位于磁盘的storefile。

写操作先写入memstore,当memstore中的数据达到某个阈值,hregionserver会启动flashcache进程写入storefile,每次写入形成单独的一个storefile。

当storefile文件的数量增长到一定阈值后,系统会进行合并(minor、major compaction),在合并过程中会进行版本合并和删除工作(majar),形成更大的storefile

当一个region所有storefile的大小和数量超过一定阈值后,会把当前的region分割为两个,并由hmaster分配到相应的regionserver服务器,实现负载均衡

客户端检索数据,先查找memstore,再blockcache(查询缓存),找不到再找storefile

HBase详解(一)——介绍,架构,数据模型_第3张图片

HRegion是HBase中分布式存储和负载均衡的最小单元。最小单元就表示不同的HRegion可以分布在不同的 HRegion server上。

HRegion由一个或者多个Store组成,每个store保存一个columns family。

每个Store又由一个memStore和0至多个StoreFile组成。如图:StoreFile以HFile格式保存在HDFS上。

HBase详解(一)——介绍,架构,数据模型_第4张图片

hbase键值对数据库,面向列的

四个维度标志一个单元格(字段的值)

row key,列族,列标志符,版本version(按照时间戳倒序排列)

你可能感兴趣的:(大数据,hbase)