美文网首页
大数据入门:HBase数据模型详解

大数据入门:HBase数据模型详解

作者: 成都加米谷大数据 | 来源:发表于2020-12-03 18:03 被阅读0次

    Hbase作为Hadoop生态当中的NOSQL数据库,基于HDFS去完成实际的数据存储任务,高性能是得到普遍的认可的。而Hbase在存储上的高性能,与自身的数据模型设计有很大的关系。今天的大数据入门分享,我们就来讲讲,Hbase数据模型的相关知识。

    根据定义,我们知道Hbase是一个支持分布式的列式数据库,尤其是针对于大型数据的实时、随机的读写访问,Hbase能够提供很好的功能支持。

    一、HBase的数据模型

    Hbase的数据模型,我们需要从两个维度来理解,一是逻辑模型,二是物理模型。

    逻辑模型

    HBase来源于GoogleBigTable的开源,大部分特性和BigTable相同,可以理解为是一个稀疏的,长期存储的,多维度和排序的映射表,表中的每一行可以有不同的列。

    HBase中最基本的单位是列,一列或者多列构成了行,行有行键(RowKey),每一行的RowKey都是唯一的,相同行键的put操作被认为是对该行的更新操作。

    HBase的表有若干行,每行有很多列,列中的值有多个版本,每个版本的值称之为一个单元格,每个单元格存储的不同时刻该列的值。

    物理模型

    在逻辑上来说,HBase表是稀疏的行的集合,但是在物理上,HBase表是按列分开存储的。

    按照列来划分列族(创建表的时候指定),存储每一行的不同列的物理文件,一个列族的数据存放在多个HFile中,一个列族的数据会被同一个region管理,物理上存放在一起。

    二、HBase数据模型的核心概念

    Namespace(表命名空间):表命名空间不是强制的,默认是default。当想把多个表分到一个组去统一管理的时候才会用到表命名空间。

    Table(表):一个表由一个或者多个列族组成。它有一些数据属性,比如超时时间(TTL),压缩算法(COMPRESSION)等,都在列族的定义中定义。定义完列族后表是空的,只有添加了行,表才有数据。

    Row(行):一个行包含了多个列,这些列通过列族来分类。行中的数据所属列族只能从该表所定义的列族中选取,不能定义这个表中不存在的列族,否则你会得到一个NoSuchColumnFamilyException。

    Column Family(列族):列族是多个列的集合。HBase会尽量把同一个列族的列放到同一个服务器上,这样可以提高存取性能,并且可以批量管理有关联的一堆列。所有的数据属性都是定义在列族上。在HBase中,建表定义的不是列,而是列族。

    Column Qualifier(列):多个列组成一个行。列族和列经常用Column Family:Column Qualifier来一起表示。列是可以随意定义的,一个行中的列不限名字、不限数量,只限定列族。

    Cell(单元格):一个列中可以存储多个版本的数据,而每个版本就称为一个单元格(Cell),HBase中的数据细粒度比传统数据结构更细一级,同一个位置的数据还细分成多个版本。

    Timestamp(时间戳/版本号):既可以把它称为是时间戳,也可以称为是版本号,因为它是用来标定同一个列中多个单元格的版本号的。

    关于大数据入门,HBase数据模型详解,以上就为大家做了详细的介绍了。Hbase的数据模型,是支持Hbase实现高性能数据存储的重要概念,要搞懂Hbase,需要对这些概念理解清楚透彻才行。

    相关文章

      网友评论

          本文标题:大数据入门:HBase数据模型详解

          本文链接:https://www.haomeiwen.com/subject/jbfvwktx.html