初步了解分布式数据库HBase

xiaoxiao2021-04-19  113

1.HBase简介

     HBase是一个高可靠、高性能、面向列、可伸缩的分布式数据库,它是谷歌BigTable的开源实现,主要用来存储非结构化和半结构化的松散数据。HBase的目标是处理非常庞大的表,可以通过水平拓展的方式,利用廉价计算机集群处理超过10亿行数据和数百万列元素组成的数据表。

   HBase利用  Hadoop MapReduce来处理HBase中的海量数据,实现高性能计算,利用Zookeeper作为协同服务,实现稳定服务和失败恢复,使用HDFS作为高可靠的底层存储,利用廉价集群提供海量数据存储能力,当然,HBase也可以直接使用本地文件系统而不用HDFS作为底层数据存储方式,不过,为了提高数据可靠性和系统的健壮性,发挥HBase处理大数据量等功能,一般都使用HDFS作为HBase的底层数据存储方式。此外,为了方便在HBase上进行数据处理,Sqoop为HBase提供了高效、便捷的RDBMS数据导入功能,Pig和Hive为HBase提供了高层语言支持。HBase是BigTable的开源实现。

 

项目BigTableHBase文件存储系统GFSHDFS海量数据处理MapReduceHadoop  MapReduce协同服务处理ChubbyZookeeper

                                       HBase和BigTable的底层技术对应关系

 

2、HBase与传统数据库的对比分析

数据类型。关系型数据库采用关系模型,具有丰富的数据类型和存储方式。HBase则采用了更加简单的数据模型,它把数据存储为未经解释的字符串,用户可以把不同格式的结构化数据和非结构化数据都序列化为字符串,保存在HBase中,用户需要自己编写程序把字符串解析成不同的数据类型。数据操作。关系数据库中包含了丰富的操作,其中会涉及复杂的多表连接,通常是借助于多个表之间的主外键关联来实现的。HBase操作则不存在复杂的表与表之间的关系,它通常只采用单表的主键查询,所以,它无法实现像关系数据库中那样的表与表之间的连接操作。存储模式。关系型数据库是基于行模式存储,元组或行会被连续的存储在磁盘页中,在读取数据时,需要顺序扫描每个元组,然后从中筛选出查询所需要的属性。每个元组只有少量属性的值对于查询是有用的,那么基于行模式存储就会浪费许多磁盘空间和内存带宽。HBase是基于列存储的,每个列族都由几个文件保存,不同列族的文件是分离的。它的优点是:可以降低I/O开销,支持大量并发用户查询,因为仅仅需要处理可以回答这些查询的列,而不需要处理与查询无关的大量数据行。同一个列族内的数据相似度较高,因此,可以获得较高的数据压缩比。数据索引。关系数据库通常可以针对不同列构建复杂的多个索引,以提高数据访问性能。HBase只有一个索引——行键,HBase的所有访问方法,要么通过行键访问,要么通过行键扫描,从而使系统不会慢下来。由于HBase位于Hadoop框架之上,因此可以使用Hadoop MapReduce来快速高效的生成索引表。数据维护。在关系数据库中,更新操作会用当前最新值来替换记录中的原来的旧值,旧值被覆盖后就不会存在。而在HBase中,它并不会删除数据旧的版本,而是生成一个新的版本,旧的版本仍然保留。可伸缩性。关系数据库很难实现横向扩展,纵向扩展的空间也比较有限。相反,HBase和BigTable这些分布式数据库就是为了实现灵活的水平拓展而开发的,能够轻易的通过在集群中增加或者减少硬件数量来实现性能的伸缩。

3、HBase数据模型

HBase是一个稀疏、多维度、排序的映射表,这张表的索引是行键、列族、列限定符和时间戳。每个值都是未经解释的字符串,没有数据类型。

下面具体 介绍HBase数据模型的相关概念。

①表       HBase采用表来组织数据,表由行和列组成,列划分为若干个列族。

②行      每个HBase表都由若干行组成,每个行由行键来标识。访问表中的行只有三种方式:通过单个行键访问;通过一个行键的区间来访问;全表扫描。行键可以是任意 字符串。

③ 列族    一个HBase 表被分组成许多“列族”的集合,它是基本的访问控制单元。

④列限定符   列族里的数据通过列限定符来定位。列限定符不用事先定义,也不需要在不同行之间保持一致。列限定符没有数据类型,总被视为 字节数组byte[]。

⑤单元格    在HBase表中,通过行、列族和列限定符确定一个“单元格”。单元格中存储的数据没有数据类型,总被视为字节数组byte[]。

⑥时间戳   每个单元格都保存着同一份数据的多个 版本,这些版本采用时间戳进行索引。

4、HBase的实现原理

1、HBase的功能组件

  HBase主要有3个主要的功能组件:一个Master主服务器,(负责 管理和维护HBase表的分区信息,同时也负责维护Region服务器列表。);库函数,(链接到每个客户端);许多个Region服务器(Region服务器负责存储和维护分配给自己的Region,处理来自客户端的读写请求)。

2、表和Region

在一个HBase数据库中,存储了许多表。对于每个HBase表而言,表中的行是根据行键的值的字典序列进行维护的,表中包含的行的数量可能非常庞大,无法存储在一台机器上,需要分布式存储到多台机器上。因此,需要根据行键的值对表中的行进行分区,每个行区间构成一个分区,被称为“region”,宝行了位于某个值域区间内的所有数据,它是负载均衡和数据分发的基本单位,这些Region会被分发到不同的Region服务器上。

初始时,每个表只包含一个Region,随着数据的不断插入,region会持续增大,当一个Region中包含的行数量达到一个阀值时就会被自动分成两个新的Region。    每个Region的默认大小是100MB到200MB,它是HBase中负载均衡和数据分发的基本单位。

5、HBase运行机制

1、HBase系统架构

    HBase的系统架构包括客户端、Zookeeper服务器、Master主服务器、Region服务器。HBase一般采用HDFS作为底层数据存储,所以可能会有HDFS和Hadoop。

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

②Zookeeper服务器:Zookeeper中保存了-ROOT-表的地址和Master的地址,客户端可以通过访问Zookeeper获得-ROOT-表的地址,并最终通过三级寻址找到所需的数据。Zookeeper不仅能够帮助维护当前的集群中机器的服务状态,而且能够帮助选出一个“总管”让这个“总管”来管理集群。

③Master主服务器:它主要负责表和Region的管理工作。

管理用户对表的增加、删除、修改、查询等操作。实现不同Region服务器之间的负载均衡。在Region分裂或者合并后,负责重新调整Region的分布。对发生故障失效的Region服务器上的Region进行迁移。

④Region服务器:它是HBase中最核心的模块,负责维护分配给自己的Region,并相应用户的读写请求。

 

转载请注明原文地址: https://www.6miu.com/read-4821212.html

最新回复(0)