文章目录

  • HBase
  • 1HBase简介
  • 2Hbase 的数据模型
  • 3 HBase特征简要
  • 特征
  • 4 Hbase 内部处理流程
  • 5 Region Service原理结构
  • 6 Hbase的读写流程


HBase

1HBase简介

Hbase是一个非关系型数据库,存储在hdfs上,是高可靠、高性能、面向列、可伸缩的分布式数据库。 
HBase利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理 HBase中的海量数据,利用Zookeeper作为其分布式协同服务

2Hbase 的数据模型

hbase例存储最长字符 hbase最大column数_大数据


row key 决定一行数据的唯一标识 可以自定义 长度最大为64k。按照字典序进行排序

Colums Family 列族 列族可以有多个 但是列族越多,在取一行数据时所要参与IO、搜寻的文件就越多,所以,如果没有必要,不要设置太多的列族。(把多个表整合成一个表 每个表的表名就是列族)

qualifier 列 是列族的成员 一个列族可以有成千上万个列 列名是以列族名为前缀的 如列族1:列1

Timestamp 时间戳 在HBase每个cell存储单元对同一份数据有多个版本,根据唯一的时间戳来区分每个版本之间的差异 不同版本的数据按照时间倒序排序

Cell单元格 在HBase表中,通过行的唯一标识、列族和列限定符和版本确定一个“单元格”(cell),单元格中存储的数据没有数据类型,总被视为字节数组byte[] 由{row key,column(= +),version}唯一确定的单元。

3 HBase特征简要

特征

海量存储
适合大量PB级数据的存储 能在几十到百毫秒内返回数据
列式存储
也就是列族存储 存储数据时必须指定列族
极易扩展
横向扩展 通过横向添加RegionSever的机器,进行水平扩展,提升Hbase上层的处理能力,提升Hbsae服务更多Region的能力。
高并发
在并发的情况下,Hbase的单个IO延迟下降并不多。能获得高并发、低延迟的服务。
稀疏
在列数据为空的情况下,是不会占用存储空间的。

4 Hbase 内部处理流程

hbase例存储最长字符 hbase最大column数_hbase_02


Client

客户端包含访问Hbase的接口,同时在缓存中维护着已经访问过的Region位置信息,用来加快后续数据访问过程。

ZooKeeper

负责选举机制 保证任何适合都只有一个master存在

Master订阅Region Server 当RS发生变化时 ZK把上线下线信息发送给master

存储Hbase的schema

存贮所有Region的寻址入口

HMaster

为Region service 分配Region

把无效故障的Region service 上的Region 重新分配

负责region server的负载均衡

HDFS上的垃圾文件回收

处理schema更新请求

(HMaster短时间怠机没事,但不能长时间怠机)

Region Service

维护Master分配给它的region,处理对这些region的IO请求

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

5 Region Service原理结构

hbase例存储最长字符 hbase最大column数_hbase例存储最长字符_03


Region

每个RS(Region Service)中可以有多个Region 这些Region可以表示多个表 也可以表示一个表

当Region容量大于10g时,Region会进行分裂 生成两个等份的Region

Hlog

缓存日志 数据需要先存入日志中在写入MenStore(防止断电,数据丢失)

Hlog的切分机制

1.当数据写入hlog以后,hbase发生异常。关闭当前的hlog文件

2.当日志的大小达到HDFS数据块的0.95倍的时候,关闭当前日志,生成新的日志

3.每隔一小时生成一个新的日志文件

Store

表示表中的列族 一个store表示一个列族

MenStore

写内存 数据写入需要写入内存中 内存达到阈值就进行flush 生成一个StoreFile

StoreFile

由内存flush而成 多个StoreFile 会合成一个大的StoreFile StoreFile会把数据存储在HDFS上。

6 Hbase的读写流程

写入流程

hbase例存储最长字符 hbase最大column数_hbase例存储最长字符_04


读取流程

hbase例存储最长字符 hbase最大column数_hbase例存储最长字符_05