甲骨文认证体系
Vmware认证体系
AWS亚马逊
阿里云认证体系
红帽认证体系
ZStack云计算认证体系
思科认证体系
华为认证体系
CDA数据分析师认证
达梦认证体系
麒麟
定制化课程
Hbase入门
发布日期:2020-08-05 18:28:19阅读次数:

目录

.Hbase基本介绍

 

 

简介

 

 

与传统数据库对比

 

 

创建Hbase

3.1 基本结构

3.2 时间戳

3.3 行存储与列存储

3.4 keyvalue存储模型

 

 

.Hbase功能与架构

 

架构介绍

region的分类

zookeeper

 

.Hbase关键流程

 

写流程

complication

Region Split

读流程

OpenScanner

 

.Hbase基本介绍

1.简介

HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统。

2.与传统数据库对比

 

传统数据库(结构化数据库):

 

数据结构固定。

需要预先定义好数据结构。

需要大量IO,扩展成本大。

 

 

 

传统数据库处理的是结构化的数据,而大数据中80%的数据都是非结构化数据。故而需要使用非结构化数据库

 

Hbase(非结构化数据库):

 

分布式存储,面向列。

列无需事先定义,可实时扩展。

普通商用硬件支持,扩容成本低。

 

 

 

3.创建Hbase

3.1 基本结构

HBase以表的形式存储数据。表有行和列族组成。列族划分为若干个列。其结构如下:

 

创建一个Hbase表需要定义:表名,列族(cf),rowkey

 

列族:列的集合。Hbase表中的每个列,都归属与某个列族。

rowkey:用来标识一条记录,由它来决定有几条记录。按照字典顺序进行排列,最大限制为64M

 

在创建Hbase表时不需要定义列名,在插入时定义即可。这也是与传统数据库的区别

3.2 时间戳

时间戳相当于一个版本号,用来区别同一列名的记录。Hbase默认显示最新时间戳的记录。

默认时间戳为1,在更新时间戳时,第一条记录并不会立即消失,而是会等到合并时再进行删除

 

 如何确定一个单元格的内容?

在确认某一单元格的内容时,需要知道rowkey+cf(列族)+Q(列族)。并不需要知道时间戳,因为时间戳默认显示最新的记录。

 

3.3 行存储与列存储

 

 行存储:数据按行存储在底层文件系统中。通常,每一行会被分配固定的空间。

 

优点:有利于增加/修改整行记录等操作;有利于整行数据的读取操作。

缺点:单列查询时,会读取一些不必要的数据。

 

 

  列存储:数据以列为单位,存储在底层文件系统中。

 

优点:有利于面向单列数据的读取/统计等操作。

缺点:整行读取时,可能需要多次I/O操作。

 

 

 

3.4 keyvalue存储模型

hbase本质上也是一种Key-Value存储系统。Key相当于RowKeyValue相当于列族数据的集合

 

key就是用来标识信息,value用来存储实际的数据

.Hbase功能与架构

1.架构介绍

 

 

DFS Client(文件系统客户端):HBase通过DFS ClientHDFS进行信息的写入

client(客户端):申请业务

zookeeper(高可靠):主备选举(选举主备Hmaster),在HBase中还用来存储元数据(region的元数据)

HMaster:为存入的(表)数据分配空间,对hregionserver进行管理

HRegionserver:对表数据进行维护

HRegion:存储(表)数据

一张完整的表可以在多个regionserver中的多个region当中,如果一个region失效,master就会对当前region中的数据进行迁移

HDFSHBase提供高可靠的文件存储服务,HBase的数据全部存储在HDFS中。

Store:列族

Memstore:内存(写数据先写入内存,超过限制则写入storefile(也就是hfile)

Hlog(日记):记录操作信息,数据信息,保证故障时能够恢复数据(多个region共享一个hlog)

 

2.region的分类

 

元数据regionmeta region:用来标识用户region的位置,存在zookeeper当中。

用户regionuser region

 

3.zookeeper

作用:

 

分布锁机制:保证高可靠性,在一个分子节点对Hmaster进行主备的选举

监听:监听hmaster是否正常(相当于HDFS当中ZKFC的作用)

充当一个数据库的作用:用来存储元数据(meta regionregionserver的地址)

 

.Hbase关键流程

1.写流程

 

clientzookeeper申请写入,hmaster分配一个写的空间

进行写入的时候,根据rowkey定位一个region(根据mata表定位在哪个regionserver中)

regionserver申请写入

先写memstore,溢出后写入hfile

写入成功。若失败,向hmaster上报哪些数据写入失败,申请重写。

 

2.complication

Hfile数据越来越大之后,要进行合并(compaction

目的:减少同一个region当中的小文件(小文件过多对资源的分配和调度都有影响)

 

 

minor(小合并):小范围合并,有文件合并数目的限制。(不会对文件读取的性能造成影响,造成的时延等很小。默认1h自动进行合并)

 

 

major:所有的hfile进行合并。(造成一小段时间的中断,不自动触发)

合并之后的数据存入HDFS

 

 

3.Region Split

Region Split是指集群运行期间,某一个Region的大小超出了预设的阈值(10G),则需要将该Region自动分裂成为两个子Region

分裂之后的region也是连续的,只是在相当于中间切了一刀

这里的分裂只是逻辑上进行分裂,实际上是在新的region中引用父region的文件(类似于我们在删除文件时,并不是真正的删除,而是将文件移入回收站)

4.读流程

 

clientzookeeper申请读取数据

zookeeper定位region所在的regionserver

regionserver申请读数据

创建两种scanner读取memstorehfile

 

5.OpenScanner

OpenScanner的过程中,会创建两种不同的Scanner来读取Hfile MemStore的数据:

 

HFile对应的ScannerStoreFileScanner

MemStore对应的ScannerMemStoreScanner

想了解更多IT技术,欢迎访问  腾科教育