阐述分布式数据库Hbase和传统的关系型数据库的主要区别

您所在的位置:网站首页 hbase是关系型数据库 阐述分布式数据库Hbase和传统的关系型数据库的主要区别

阐述分布式数据库Hbase和传统的关系型数据库的主要区别

#阐述分布式数据库Hbase和传统的关系型数据库的主要区别| 来源: 网络整理| 查看: 265

HBase 来源

Hbase是BigTable的开源实现

BigTable:

分布式存储系统,最初是为了解决在大量数据下互联网的搜索问题 特点: (1)架构在GFS上,使用GFS作为底层数据存储; (2)利用谷歌的MapReduce来处理海量数据; (3)利用Chubby提供协同服务管理; (4)可以扩展为PB级别的数据和上千台机器;

Hbase简介 一个分布式数据库,主要存储非结构化和半结构化的松散数据(底层分布式文件系统只存储非结构化数据)。目标;存储非常庞大的表,通过水平扩展,利用廉价计算机集群处理数据在Hadoop中的位置: 使用HDFS作为底层存储结构;利用Hadoop MapReduce来处理海量数据;利用Zookeeper作为协同服务 项目BigtableHBase文件存储系统GFSHDFS海量数据存储MapReduceHadoop MapReduce协同服务管理ChubbyZookeeper

在已有HDFS和关系型数据库的条件下,为什么产生了HDFS: (1) Hadoop主要解决大规模数据的离线批量处理问题,但是受限于Hadoop MapReduce框架的延迟数据处理机制,使得其无法实施处理大规模的数据 (2)HDFS面向批量访问,而非随机访问 (3)传统的关系型数据库无法应对数据规模剧增是产生的问题 (4)传统关系数据库在结构数据变化时一般要停机维护,且空列浪费存储空间

和传统关系数据库区别:

传统数据库HBase数据类型关系模型,具有丰富的数据类型和存储方式数据模型,将数据存储为未经解释的字符串数据操作操作丰富,涉及多表连接只有简单的增删改查存储模式基于行存储基于列存储数据索引可以对不同列构建多个复杂的索引只有一个索引-行键数据维护新值替换旧值更新时,旧版本仍会保留可伸缩性很难实行横向扩展,纵向扩展也有限水平扩展性很好 HBase数据模型 1. 概述

(1) HBase是一个稀疏,多维,排序的映射表,索引是:行键、列族、列限定符和时间戳 (2)每个值是未经解释的字符串,没有数据类型 (3)表中每一行有一个排序的行键和任意多的列 (4)表在水平方向由一个或多个列族组成。一个列族里包含任意多的列,同一个列族的数据存储在一起 (5)列族支持动态扩展,可以随意添加列族和列 (6)HBase执行更新操作时,不会删除旧数据,是生成一个新的版本(是基于HDFS只允许追加不允许修改的特性)

2. 相关概念:

表:由行和列构成 行:由行键标识 列族:一个表被分为多个列族,HBase基本的存储单元 列限定符:列名,列族里的数据听过列限定符来定位 单元格:存储数据的单元,通过行、列族和列限定符来确定一个单元 时间戳:每个单元格保存着一份数据的多个版本,通过时间戳来索引 在这里插入图片描述

3. 数据坐标:

传统数据库采用二维坐标定位,即行和列。HBase采用四维坐标来定位:[行键,列族,列限定符,时间戳]

4. 概念视图(稀疏,多维):

在这里插入图片描述

5. 物理视图(根据列族分别存放):

在这里插入图片描述

6. 行式存储和列式存储:

行式存储适用于事务性操作,比如查询某个人的名字,年龄,性别等 列式存储适用于分析数据,比如要分析年龄这个字段。列式存储具有较高的压缩比,因为在列中数据类型基本相同,且数据处理速度也较快

HBase实现原理 1. HBase功能组件 组件功能库函数链接客户端,让其可以访问HBase数据库Master主服务器(1)管理和维护 HBase的分区信息 (2)维护Region服务器列表 (3)分配Region,实现负载均衡Region服务器存储和维护分配给自己的Region,处理来自客户端的读写请求

注: (1)客户端不在Master主服务器上读取数据,而是在获得Region的存储位置信息后,直接从Region服务器上读取数据 (2)客户端不依赖于Master,而是借助于Zookeeper通过三级寻址的方式来获得Region位置信息,大多数客户端从来不和Master通信

2. 表和Region

(1)一个HBase中有多个表。一个表中存储的行的数量可能非常庞大,无法存储在一台机器上,需要进行分区。根据行键的值对表中的行进行分区,每个行区间构成一个分区,成为“Region” (2)初始,每个表只有一个Region,随着数据的增多,Region逐渐增大,当一个Region中包含的行数量达到一个阈值会自动分为两个Region,然后分裂出越来越多的Region (3)Master主服务器将不同的Region分发到不同的Region服务器上。同一个Region只能在一个服务器上,每个Region服务器负责管理一个Region集合

3. Region的定位

一个HBase的表可能非常庞大,会被分裂为多个Region,如何判断Region分到了哪个Region服务器上?

HBase三层结构:

层次名称作用第一层Zookeeper文件记录了-ROOT-表的位置信息第二层-ROOT-表记录了.META.表的Region位置信息-ROOT-表只能有一个Region。通过-ROOT-表,就可以访问.META.表中的数据第三层.META.表记录了用户数据表的Region位置信息,.META.表可以有多个Region,保存了HBase中所有用户数据表的Region位置信息

(1) 每个Region有一个唯一的RegionID。".META表"(元数据表)中包含Region和Region服务器的对应关系 (2)Region数量增加时,".META表"中条目会非常多,会分裂为多个Region,又回产生一个新的映射表“-ROOT-表”(根数据表),记录元数据的位置。“-ROOT-表”不能分割,永远只有一个Region存放-ROOT-表,Master知道这个Region的位置

三级寻址

客户端首先访问Zookeeper,获取-ROOT-表的位置信息------->访问-ROOT-表,获取.META.表的文位置信息---------->访问.META.表,找到所需的Region位于哪个服务器,然后到该服务器读取数据

HBase运行机制 1. HBase系统架构

在这里插入图片描述

在这里插入图片描述

2. Region服务器的工作原理

在这里插入图片描述 在这里插入图片描述 (1)用户读写数据的过程: 写:分配搭配相应的Region服务器去执行,数据首先写入MemStore和HLog中,当写入HLog中,才会返回客户端 读:Region服务器首先访问MemStore缓存,如果不存在,访问StoreFile (2)缓存的刷新: MemStore缓存容量有限,系统周期性的将其写入到StoreFile中,清空缓存,并在HLog中写入一个标记,表示缓存内容已经写入到StoreFile中。每次刷新产生一个新的StoreFile文件。 在Region服务器启动时,会检查HLog文件,确认最后一次执行缓存刷新后是否产生新的写入操作,如果存在,要将更新操作写入MemStore中,然后执行缓存刷新,写入StoreFile中。最后,删除旧的HLog文件,为用户提供访问服务 (3)StoreFile的合并: 每次执行缓存刷新都会产生一个新的StoreFile文件,当数量非常多时,要访问某个Store中的值时,必须查找所有的StoreFile文件,耗费时间。当达到一个阈值时,会触发合并操作,将多个StoreFile文件合并成一个大文件

3. Store的工作原理:

在这里插入图片描述

4. HLog的工作原理:

因为Region服务器可能搭建中廉价机的集群上,当发生故障时,MemStore中的数据会丢失,因此,HBase采用HLog来保证系统发生故障时能够恢复到正确的状态。

用户更新数据时,必须要先记入HLog日志中才能写入MemStore缓存,且直到其对应的日志写到磁盘之后,缓存内容才会被刷新写入磁盘。

当发生故障时,Zookeeper检测到会通知Master,Master处理故障服务器上的HLog文件(包含多个Region对象的日志记录),对HLog数据进行拆分,分别放到相应Region对象的目录下,然后将失效的Region及其日志文件分配到另一个服务器中,重复日志记录中的操作,将数据写入到缓存中,然后刷新到StoreFile文件中,完成恢复

一个Region服务器中所有的Region对象使用一个HLog文件 优点:在多个Region对象进行更新操作时,只需要将日志记录追加到单个日志文件中,减少磁盘寻址次数,提高写操作的性能 缺点:若发生故障,要对HLog按照其所属的Region对象进行拆分



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3