美文网首页
【读书笔记】《大数据技术体系详解:原理,架构与实践》04.分布式

【读书笔记】《大数据技术体系详解:原理,架构与实践》04.分布式

作者: 粥一样温柔 | 来源:发表于2020-03-01 18:47 被阅读0次

    在大数据场景中,除了直接以文件形式保存的数据外,还有大量结构化和半结构化的数据,这类数据通常需要支持更新操作,比如随机插入和删除,这使得分布式文件系统HDFS很难满足要求。为了方便用户存取海量结构化和半结构化数据,HBase应运而生。
    HBase是构建在分布式文件系统HDFS之上的、支持随机插入和删除的列簇式存储系统,它可被简单理解为一个具有持久化能力的分布式多维有序映射表。
    尽管HBase随机读写性能较高,但数据扫描速度较慢,难以适用于OLAP(On-Line Analytical Processing,联机分析处理,数据分析)场景,为此,Cloudera提出了Kudu项目,它能很好地兼顾吞吐率和延迟。

    HBase的数据模型

    逻辑数据模型

    逻辑数据模型是用户从数据库所看到的模型,它直接与HBase数据建模相关;
    类似于数据库中的database和table逻辑概念,HBase将之称为namespace和table,一个namespace中包含一组table, HBase内置了两个默认的namespace:

    • hbase:系统内建表,包括namespace和meta表。

    • default:用户建表时未指定namespace的表都创建在此。
      HBase表由一系列行构成,每行数据有一个rowkey,以及若干column family构成,每个column family可包含无限列。


      屏幕快照 2020-02-16 21.52.56.png
      屏幕快照 2020-02-16 21.57.22.png
    • rowkey:HBase表中的数据是以rowkey作为标识的,rowkey类似于关系型数据库中的“主键”,每行数据有一个rowkey,唯一标识该行,是定位该行数据的索引。同一张表内,rowkey是全局有序的(字典类型排序)。rowkey是没有数据类型的,以字节数组(byte[])形式保存。

    • column family:Hbase表中数据是按照column family(列族)组织的,每行数据拥有相同的column family。每个column family可包含无数个动态列(也就是column qualifier)。column family是访问控制的基本单位,同一column family中的数据在物理上会存储在一个文件中。

    • column qualifier:column family内部列标识,Hbase每列数据可通过family:qualifier(比如CF1:col1)唯一标识,qualifier不属于schema的一部分,可以动态指定,且每行数据可以有不同的qualifier。跟rowkey一样,column qualifier也是没有数据类型的,以字节数组(byte[])形式存储。

    • cell:通过rowkey, column family和column qualifier可唯一定位一个cell,它内部保存了多个版本的数值,默认情况下,每个数值的版本号是写入时间戳。cell内的数值也是没有数据类型的,以数组形式保存。

    • timestamp:cell内部数据是多版本的,默认将写入时间戳作为版本号,用户可根据自己的业务需求设置版本号(数据类型为long)。每个column family保留最大版本数可单独配置,默认是3,如果读数据时未指定版本号,HBase只会返回最新版本的数值;如果一个cell内数据数目超过最大版本数,则旧的版本将自动被剔除。

    • HBase也可以看作一个key/value存储系统,其中,rowkey是key,其他部分是value,也可以将[row key, column family, column qualifier, timestamp] 看做key, Cell中的值对应value。

    物理数据存储

    物理数据模型是面向计算机物理表示的模型,描述了HBase数据在储存介质(包括内存和磁盘)上的组织结构。
    HBase是列簇式存储引擎,它以column family为单位存储数据,每个column family内部数据是以key value格式保存的,key value组成如下:

    [row key, column family, column qualifier, timestamp] = >value
    
    屏幕快照 2020-02-16 22.01.41.png

    在HBase中,同一表中的数据是按照rowkey升序排列的,同一行中的不同列是按照column qualifier升序排列的,同一cell中的数值是按照版本号(时间戳)降序排列的,下图所示为一个HBase表从逻辑视图到物理视图的映射。


    屏幕快照 2020-02-16 22.03.22.png

    相关文章

      网友评论

          本文标题:【读书笔记】《大数据技术体系详解:原理,架构与实践》04.分布式

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