Hbase原理解读(一)--HRegion的分裂及内部结构

HBase概述

HBase是基于Hadoop数据库工具,来源于Google三篇论文之一 BIGTABLE,APACHE做了开源的实现就是 HBASE 技术。

  • HBase是一种 NoSQL的 非关系型数据库,其不符合关系型数据库的范式,适合存储半结构化、 非结构化的数据。
  • 适合存储稀疏的数据 空的数据不占用空间
  • 面向列(族)进行存储。
  • 提供实时的增删改查的能力,是一种真正的数据库产品
  • 可以存储海量数据,性能非常优良。可以实现 上亿条记录的毫秒级别的查询
    但是不支持严格的事务控制,只能在行级别保证事务。
  • 是一个高可靠 高性能 面向列 可伸缩的分布式存储系统 利用hbase技术可以在廉价的PC上搭建起大规模结构化存储集群。
  • HBase利用HadoopHDFS作为其文件存储系统,利用Hadoop的MapReduce来处理HBase中的海量数据,利用Zookeeper作为协调工具。

HBase的逻辑结构

HBase使用表来存储数据,但是表的结构和特点和传统的关系型数据库有非常大的区别。

  • 行键 - RowKey
  1. 相当于是HBase表中的主键,HBase中的所有的表都要有行键。
  2. HBase中的所有的数据都要按照行键的字典顺序排序后存储。
  3. 对HBase表中的数据的查询 只有三种方式:
    根据指定行键查询
    根据指定的行键范围查询
    全表扫描查询
  • 列族(簇) - ColumnFamily
    是HBase表中垂直方向保存数据的结构,列族是HBase表的元数据的一部分,需要在定义HBase表时就指定好表具有哪些个列族,列族中可以包含一个或多个列

  • 列 - Column
    HBase表中列族里可以包含一个或多个列,列并不是HBase表的元数据的一部分,不需要在创建表时预先定义,而是可以在后续使用表时随时为表的列族动态的增加列。

  • 单元格和时间戳 - Cell TimeStamp
    在HBase表中,水平方向的行 和 垂直方向的列 交汇 就得到了HBase中的一个存储单元,而在这个存储单元中,可以存储数据,并且可以保存数据的多个版本,这些个版本之间通过时间戳来进行区分。
    所以在HBase中 可以通过 行键 列族 列 时间戳 来确定一个最小的存储数据的单元,这个单元就称之为单元格 Cell。
    单元格中的数据都以二进制形式存储,没有数据类型的区别。

HRegion的分裂

  1. HBase表中的数据按照行键的字典顺序进行排列
  2. HBase表最初只有一个HRegion保存数据,随着数据写入,HRegion越来越大,达到一定的阈值后会自动分裂为两个Hregion,随着这个过程不停的进行,HBase表中的数据会被划分为若干个HRegion进行管理
    Hbase原理解读(一)--HRegion的分裂及内部结构_第1张图片
  3. HRegion是HBase表中的数据分布式存储和负载均衡的基本单元
  4. HBase表中的数据会以HRegion为单位分布式的存放在集群的HRegionServer服务器中,从而实现分布式存储和负载均衡
    Hbase原理解读(一)--HRegion的分裂及内部结构_第2张图片

HRegion内部结构

在Region内部存在复杂的结构:

  • Region内部划分出若干个Store,有几个Store取决于HBase表有几个列族,一个列族对应一个Store
  • 在Store内部又有一个memStore和0个或若干个storeFile,而storeFile本质上是存在于HDFS中的称为HFile的文件
    Hbase原理解读(一)--HRegion的分裂及内部结构_第3张图片

你可能感兴趣的:(HBase)