分布式数据库HBase必备理论知识

  • HBase简介
    HBase是针对谷歌Bigtable的开源实现,是一个高可靠、高性能、面向列、可伸缩i的分布式数据库,主要用于存储非结构化和半结构化的松散数据。
项目 Bigtable HBase
文件存储系统 GFS HDFS
海量数据处理 MapReduce Hadoop MapReduce
协同服务管理 Chubby Zookeeper
  • HBase与传统数据库的对比
  1. 数据类型
    关系数据库具有丰富的数据类型和储存方式,HBase将数据存储为未经解释的字符串,用户需要编写程序将字符串解析为不同的数据类型。
  2. 数据操作
    关系数据库包含丰富的操作,其中还会设计复杂的多表连接。HBase只有插入、查询、删除、清空等操作。
  3. 存储模式
    关系数据库是基于行模式存储的,HBase是基于列模式存储的,每个列族都由几个文件保存,不同列族的文件是分离的。
  4. 数据索引
    关系数据库可以针对不同列构建复杂的多个索引,HBase只有一个索引-行键。
  5. 数据维护
    关系数据库更新操作会用最新的当前值代替纪录中原有的旧值。HBase执行更新操作时,不会删除数据旧的版本,而是生成一个新的版本,使用时间戳进行区别。
  6. 可伸缩行
    HBase能灵活的进行水平扩展,关系数据库有很难实现横向扩展,纵向扩展的空间也有限。
  • HBase数据模型
  1. HBase采用表组织数据,表由行和列组成,列被分为若干个列族。
  2. 行:每行通过行键来标识。
  3. 列族:它是基本的访问控制单元。
  4. 列限制符:列族中的数据通过列限制符来进行定位。
  5. 单元格:单元格中储存的数据没有数据类型,被视为字节数组。
  6. 时间戳:每次对一个单元格执行操作时,HBase都会隐士的自动生成并储存一个时间戳。
  7. HBase需要根据[行键、列族、列限制符、时间戳]确定一个单元格。
    在这里插入图片描述
  • HBase的功能组件
  1. 库函数:链接到每个客户端
  2. 一个Master主服务器:负责管理和维护HBase表的分区信息。
  3. 许多个Region服务器:负责存储和维护分配给自己的Region,处理来自客户端读写请求。
  • 表和Region
    初始时,每个表只包含一个Region,随着数据的不断插入,Region会持续增大,当一个Region中包含的行数量达到一个阀值时,就会被自动等分为两个新的Region,随着表中行数量继续增加,就会分裂出越来越多的Region。
    在这里插入图片描述

  • Region定位
    每个Region都有一个RegionID标示它的唯一性,则Region标示符就可以表示为“表明+开始主键+RegionID"。为了定位每个Region所在的位置,可以构建一张映射表,映射表的每个条目包含两项内容,一个是Region标示符,一个是Region服务器标识。这个映射表成为.META.表。当.META.表很大时,也会被分割为多个Region,为了定位这些Region,就需要构建一个新的映射表,称为-ROOT表,-ROOT表不能被分割的,永远只存在一个Region用于存放-ROOT表。
    在这里插入图片描述

层次 名称 作用
第一层 Zookeeper文件 记录了ROOT表的位置信息
第二层 -ROOT表 记录META表中Region位置信息,有且只有一个Region
第三层 .META.表 记录用户数据表的Region位置信息
  • Region服务器工作原理
    每个Region对象包含多个store,每个store对应表中的一个列族的存储,每个Store包含一个MemStore和若干个StoreFile,MemStore是内存中的缓存,保存最近更新的数据。当用户写入数据时,系统首先把数据放入MemStore缓存,当MemStore缓存满时,就会刷新到磁盘中的一个StoreFile文件中,当StoreFile文件数量达到事前设置的数量时,触发文件合并操作,多个StoreFile文件会被合并为一个大的StoreFile文件。当单个文件大小超过一定阀值时,就会触发文件分裂擦欧在哦,一个父Region会被分裂为2个子Region,父Region会下线。新分裂的2个子Region,会被Master分配到相应的Region服务器。
    在这里插入图片描述

  • HLog工作原理
    HBase系统为每个Region服务器配置了一个HLog文件,它是一种预写式日志,用户更新数据必须首记入日志后才能写入MemStore缓存。一旦发生故障 ,需要将故障Region服务器上的HLog按其所属的Region对象进行拆分,然后分发到其他的Region服务器执行恢复操作。

猜你喜欢

转载自blog.csdn.net/Leader_wang/article/details/83117459