分布式数据库原理与应用-2 HBase


第二章 Hbase

01 Hbase简介

什么是HBase

1
2
3
4
5
6
HBase是一个开源的NoSQL数据库,参考google的BigTable建模,使用Java语言实现,运行于HDFS文件系统上,为Hadoop提供类似BigTable的服务,可以存储海量稀疏的数据,并具备一定的容错性、高可靠性及伸缩性。

具备NoSQL数据库的特点:
不支持SQL的跨行事务
不满足完整性约束条件
灵活的数据模型

HBase的发展历程

1
Apache HBase最初是Powerset公司为了处理自然语言搜索产生的海量数据而开展的项目

image-20230417175013383

HBase特性

1
2
3
4
5
容量巨大
列存储
稀疏性
扩展性
高可靠性

容量巨大

image-20230417175551796

列存储

image-20230417175839159

稀疏性

1
稀疏:对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏。

扩展性

1
2
3
4
5
纵向扩展:不断优化主服务器的性能,提高存储空间和性能

横向扩展:不断向集群添加服务器来提供存储空间和性能

HBase是横向扩展的,理论上无限横向扩展

高可靠性

1
2
3
4
5
基于HDFS的多副本机制

WAL(Write-Ahead-Log)预写机制

Replication机制

Hbase安装

单机模式

1
以本地文件系统作为基础,所有进程运行在一个JVM上,一般用于测试

伪分布式

1
主从模式,以hdfs文件系统为基础,所有进程运行在一个JVM中
1
2
3
4
修改:hbase-env.sh,hbase-site.xml文件
hbase-env.sh:配置java路径,配置zookeeper是否随hbase一起启动,还是先启动zookeeper,再hbase

hbase-site.xml:主要是zookeeper,hadoop,是否集群部署的一些设置

分布式

1
2
3
主从模式,以hdfs文件系统为基础,守护进程运行在多个jvm上

除了上述两个文件,还需设置集群有哪些节点文件的配置

02 HDFS原理

HDFS- 分布式文件系统

1
2
3
4
5
6
HDFS即Hadoop分布式文件系统(Hadoop Distributed File System)
提供高可靠性和高吞吐量的文件存储服务

通过软件设计来保证系统的可靠性

具有容错性,高可靠性,高可扩展性,高吞吐率。

HDFS基本架构

HDFS- 块

HDFS-NameNode

HDFS-SecondaryNameNode

1
2
定期的合并edits和fsimage文件
Checkpiont:合并的时间点,默认3600秒,或editlog文件达到64M。

image-20230417181053843

HDFS-DataNode

HDFS读文件流程

image-20230417181429835

HDFS读写机制-读文件机制

image-20230417181523597

HDFS读写机制-写文件机制

image-20230417181609459

HDFS副本机制

image-20230417181934890

HDFS容错

image-20230417182129386

1
2
3
1、NameNode出错:用Secondary NameNode备份的fsimage恢复
2、DataNode出错:DataNode与NameNode通过“心跳”报告状态,当DataNode失效后,副本数减少,而NameNode会定期检查各节点的副本数量, 检查出问题后会启动数据冗余机制。
3、数据出错:数据写入同时保存总和校验码,读取时校验。

03 Hbase组件和功能

HBase 架构

image-20230417211518368

image-20230417211612969

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Client
包含访问HBase的接口(用户通过client来访问hbase)并维护cache(region的位置)来加快对HBase的访问

Zookeeper
保证任何时候,集群中只有一个活跃master
存贮所有Region的寻址入口。
实时监控Region server的上线和下线信息。并实时通知Master
存储HBase的schema和table元数据

Master
为Region server分配region
负责Region server的负载均衡
发现失效的Region server并重新分配其上的region
管理用户对table的增删改操作

RegionServer
Region server维护region,处理对这些region的IO请求
Region server负责切分在运行过程中变得过大的region

Region
HBase自动把表水平划分成多个区域(region),每个region会保存一个表里面某段连续的数据

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

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

Memstore与storefile
一个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找,找不到再找storefile
1
2
3
HRegion是HBase中分布式存储和负载均衡的最小单元。最小单元就表示不同的HRegion可以分布在不同的HRegion server上。
HRegion由一个或者多个Store组成,每个store保存一个columns family。
每个Strore又由一个memStore和0至多个StoreFile组成。如图:StoreFile以HFile格式保存在HDFS上。

image-20230417214228696

image-20230417214420908


本文标题:分布式数据库原理与应用-2 HBase

文章作者:TTYONG

发布时间:2023年04月17日 - 16:04

最后更新:2023年06月22日 - 15:06

原始链接:http://tianyong.fun/%E5%88%86%E5%B8%83%E5%BC%8F%E6%95%B0%E6%8D%AE%E5%BA%93%E5%8E%9F%E7%90%86%E4%B8%8E%E5%BA%94%E7%94%A8-2%20HBase.html

许可协议: 转载请保留原文链接及作者。

多少都是爱
0%