非关型数据库之Hbase(一)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 非关型数据库之Hbase(一)

1 Hbase简介

1.1 初识Hbase

       Hbase全拼为Hadoop database即分布式存储数据库,是一个可以进行随机访问的存储和检索数据的平台,用于存储结构化和半结构化的数据,如果数据量不是非常庞大的情况下,Hbase甚至可以存储非结构化的数据。Hbase作为Apache基金会Hadoop项目的一部分,使用Java语言实现,将HDFS作为底层文件存储系统,在此基础上运行MapReduce分布式批量处理数据,为Hadoop提供海量的数据管理服务。


       Hbase是典型的NoSQL数据库,通常被描述为稀疏的、分布式的、持久化的,由行键、列键和时间戳进行索引的多维有序映射数据库,主要用来储存结构化和半结构化的数据。Hbase是Google的Bigtable的开源实现。

1.2 Hbase的特性

🌈容量巨大

🌈列存储

🌈稀疏性

       传统的关型数据库中,每一行的数据类型都是事先定义好的,会占用固定的内存空间,在此情况下NULL值也会占用一定的存储空间。而在Hbase中的数据都是以字符串形式存储,数据为空的情况下列并不占用存储空间,因为会有部分数据有真实值,部分数据为NULL,故称为稀疏性。


🌈扩展性强


       Hbase构建在HDFS之上,理所当然的支持分布式表,也继承了HDFS的可扩展性。Hbase是横向扩展的,所谓的横向扩展是指在扩展时不需要提过服务器本身的性能,只需要添加不同的服务器节点到现有的集群即可。Hbase根据Region的大小进行分区,分别存在集群中的不同节点,当添加新节点时,集群自动重新调整,在新的节点启动Hbase服务器,实现动态扩展。Hbase的扩展是热扩展,即在不停掉现有服务的情况下进行服务节点的增加和删除。

🌈高可靠性

       Hbase同时继承了HDFS的高可靠性,HDFS的多副本机制可以让它在出现故障时自动恢复,同时Hbase内部也提供了预写日志(Write-Ahead-Log,WAL)和Replication机制。


2 HDFS专项模块

       HDFS即Hadoop Distributed File System(Hadoop分布式文件系统),HDFS是参考Google公司的GFS实现的,不管是HDFS还是GFS计算机节点都会很容易出现硬件故障,HDFS的数据分块储存在不同节点,当某个节点出现故障时,HDFS相关组件会快速检测出节点故障并提供容错机制完成数据的自动恢复。


2.1 HDFS的基本架构

       三个组件:NameNode、DataNode、SecondaryNameNode


       一个架构:主从架构(Master/Slave模式)


       HDFS集群一般由一个NameNode(运行在Master节点)、一个SecondaryNameNode(运行在Master节点)和许多个DataNode(运行在Salve节点)组成。在HDFS中数据是被分块进行储存,一个文件可以被分为许多个块,每个块被存储在不同的DataNode上。

image.png

                     


2.1.1 HDFS各组件的功能:

🌈NameNode

将文件的元数据信息存储在edits和fsimage文件中(元数据信息记录了文件系统中的文件名和目录名,以及它们之间的层级关系,同时也记录了每个文件目录的所有者以及权限,甚至还记录了每个文件是由哪些块组成)

接收客户端的请求并提供元数据(当客户端请求读取文件时,会先从NameNode获取文件的元数据信息,然后再往元数据中对应的DataNode读取数据块)

通过心跳机制检测DataNode的状态,当出现节点故障时,重新分配失败的任务。

🌈SecondaryNameNode

定期合并edits和fsimage文件

         edits文件(编辑日志)用来记录文件的增、删、改操作信息。


         fsimage文件(镜像文件)用来维护HDFS的文件和文件夹的元数据信息。


         每次系统启动时,NameNode会读取fsimage文件的信息并保存到内从中。在HDFS运行期间,新的操作日志不会立即与fsimage文件进行合并,也不会存到NameNode内存中,而是先写到edits文件中,当edits文件达到一定的阈值或者间隔一定时间(默认为3600s或者达到64MB)后会触发SecondaryNameNode工作,这个时间点被称为checkpoint。具体的合并步骤如下:

                     


(停用和新记录)在合并之前SecondaryNameNode通知NameNode停用当前editlog文件,并将新的操作日志写入到新的editlog.new文件。

(请求并复制)SecondaryNameNode从NameNode请求并复制fsimage和edits文件。

(合并)SecondaryNameNode把fsimage和edits文件合并,并重命名为fsimage.ckpt。

(两次替换)NameNode从SecondaryNameNode获取fsimage.ckpt文件,并替换掉fsimage文件,同时用edits.new文件替换旧的edits文件。

(更新)更新checkpoint的时间。自此,fsimage文件中保存的是上一个checkpoint的元数据信息,而edits文件保存的是从上一个checkpoint开始的操作日志。

🌈DataNode

存储数据块

为客户端提供数据块的读写服务

相应NameNode的相关指令(数据块的增、删、改等操作)

定时发送心跳信息给NameNode

2.2 HFDFS多种机制

2.2.1 分块机制

在HDFS中数据是被分块进行储存,一个文件可以被分为许多个块,每个块被存储在不同的DataNode上。HDFS数据块大小默认为64MB,而一般磁盘块的大小为512B。


2.2.2 副本机制

HDFS中数据块的副本数默认为3个,当然也可以设置更多的副本集。在默认副本集为3的情况下,0.17版本之前,会把第一个副本放在一个机架的一个DataNode上,第二个副本放在这个机架的另一个DataNode上,而第三个副本会放在不同的机架上;0.17版本之后,会把第一个副本放在一个机架的一个DataNode上,第二个副本放在另一个机架的DataNode上,而第三个副本会放在第二个副本的同机架的不同DataNode上。(机架的概念参照上图2-4)


2.2.3 容错机制

NameNode出错:从SecondaryNameNode备份的fsimage文件进行恢复。


DataNode出错:当出现节点故障时,重新分配失败的任务。


数据出错:数据写入的同时保存总和校验码,读取数据时进行校验。


2.2.4 读写机制

🌈读文件


(发送请求)客户端向NameNode发送读文件请求

(得到地址)NameNode返回文件的元数据(文件对应的数据块信息及各数据块位置及其副本位置)信息

(读取数据)客户端按照元数据信息与DataNode进行通信,并读取数据块。        

                     


🌈写文件


(暂写数据)先将数据写入本地的临时文件

(发送请求)等临时文件大小达到系统设置的块大小时,开始向NameNode发送写文件请求

(获取地址)NameNode检查集群中每个DataNode的状态信息,获取空闲节点并检查客户端的权限符合后再创建文件,然后返回数据块及其对应DataNode的地址列表给客户端,列表中包括副本的存放地址。

(写数据并发送确认信息)客户端将临时文件的数据块写入列表的第一个DataNode,同时第一个DataNode以副本的形式传送至第二个DataNode,第二个DataNode以副本的形式传送至第三个DataNode。每一个DataNode在接收到数据后都会向前一个节点发送确认信息,数据传输完成后,第一个DataNode会向客户端发送确认信息。

(错误处理)客户端收到确认信息表示数据块已经永久化的存储在所有的DataNode中,此时客户端会向NameNode发送确认信息。一旦上一步的任何一个DataNode存储失败未发送确认信息,客户端就会告知NameNode,将数据备份到新的DataNode中。

image.png

相关文章
|
5月前
|
SQL 存储 分布式数据库
分布式存储数据恢复—hbase和hive数据库数据恢复案例
分布式存储数据恢复环境: 16台某品牌R730xd服务器节点,每台服务器节点上有数台虚拟机。 虚拟机上部署Hbase和Hive数据库。 分布式存储故障: 数据库底层文件被误删除,数据库不能使用。要求恢复hbase和hive数据库。
204 12
|
分布式计算 Java Hadoop
杨校老师课堂之分布式数据库HBase的部署和基本操作
杨校老师课堂之分布式数据库HBase的部署和基本操作
155 0
|
存储 SQL 分布式数据库
深入解析HBase与关系数据库的关键差异
【8月更文挑战第31天】
296 0
|
存储 NoSQL Java
HBase是一个开源的、分布式的、面向列的NoSQL数据库系统
HBase是一个开源的、分布式的、面向列的NoSQL数据库系统
256 0
|
存储 分布式计算 Hadoop
【大数据】分布式数据库HBase下载安装教程
【大数据】分布式数据库HBase下载安装教程
521 0
|
26天前
|
安全 关系型数据库 MySQL
MySQL安全最佳实践:保护你的数据库
本文深入探讨了MySQL数据库的安全防护体系,涵盖认证安全、访问控制、网络安全、数据加密、审计监控、备份恢复、操作系统安全、应急响应等多个方面。通过具体配置示例,为企业提供了一套全面的安全实践方案,帮助强化数据库安全,防止数据泄露和未授权访问,保障企业数据资产安全。
|
11天前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
47 3
|
17天前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
1月前
|
存储 运维 关系型数据库
从MySQL到云数据库,数据库迁移真的有必要吗?
本文探讨了企业在业务增长背景下,是否应从 MySQL 迁移至云数据库的决策问题。分析了 MySQL 的优势与瓶颈,对比了云数据库在存储计算分离、自动化运维、多负载支持等方面的优势,并提出判断迁移必要性的五个关键问题及实施路径,帮助企业理性决策并落地迁移方案。
|
6天前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。