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

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

一、HBase的数据模型

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

逻辑模型

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

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

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

物理模型

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

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

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

二、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,需要对这些概念理解清楚透彻才行。

文章均来自互联网如有不妥请联系作者删除QQ:314111741 地址:http://www.mqs.net/post/15265.html

相关阅读

  • 毕业设计-商城小程序

    毕业设计-商城小程序

    主页.jpg 分类.jpg 优惠劵.png 秒杀.png 登录.png 商品详情.png 购物车.png 订单.png 后台_2.pn...

    2025.12.11 12:12:04作者:iseeyu
  • R语言学习笔记(14)-常用包

    R语言学习笔记(14)-常用包

    help_reshape2.png (1)melt对宽数据进行处理,得到长数据 > head(airquality) Ozone Solar.R Wind Temp Month Day 1 41 190...

    2025.12.11 12:00:26作者:iseeyu
  • ARouter源码分析

    ARouter源码分析

    image.png 2.ARouter源码分析 1.init阶段 我们找到Arouter的入口,也就是初始化的地方: if (isDebug()) { // 这两行必须写在init之前,否则这些配置在i...

    2025.12.11 10:36:50作者:iseeyu

添加新评论