集团站切换校区

验证码已发送,请查收短信

复制成功
微信号:togogoi
添加微信好友, 详细了解课程
已复制成功,如果自动跳转微信失败,请前往微信添加好友
打开微信
图标

业界新闻

当前位置:首页 > >业界新闻 > >

大数据培训_HBase数据模型

发布时间: 2019-06-09 09:07:22

  大数据培训_HBase数据模型

  1.HBase数据模型介绍
  在 HBase 中,数据模型同样是由表组成的,各个表中又包含数据行和列,在这些表中存储了 HBase 数据。在本节中,我们将介绍 HBase 数据模型中的一些术语。
  2.HBase数据模型术语
  表(Table)
  HBase 会将数据组织进一张张的表里面,一个 HBase 表由多行组成。
  行(Row)
  HBase 中的一行包含一个行键和一个或多个与其相关的值的列。在存储行时,行按字母顺序排序。出于这个原因,行键的设计非常重要。目标是以相关行相互靠近的方式存储数据。常用的行键模式是网站域。如果你的行键是域名,则你可能应该将它们存储在相反的位置(org.apache.www,org.apache.mail,org.apache.jira)。这样,表中的所有 Apache 域都彼此靠近,而不是根据子域的第一个字母分布。
  列(Column)
  HBase 中的列由一个列族和一个列限定符组成,它们由:(冒号)字符分隔。
  列族(Column Family)
  出于性能原因,列族在物理上共同存在一组列和它们的值。在 HBase 中每个列族都有一组存储属性,例如其值是否应缓存在内存中,数据如何压缩或其行编码是如何编码的等等。表中的每一行都有相同的列族,但给定的行可能不会在给定的列族中存储任何内容。
  列族一旦确定后,就不能轻易修改,因为它会影响到 HBase 真实的物理存储结构,但是列族中的列标识(Column Qualifier)以及其对应的值可以动态增删。
  列限定符(Column Qualifier)
  列限定符被添加到列族中,以提供给定数据段的索引。鉴于列族的content,列限定符可能是content:html,而另一个可能是content:pdf。虽然列族在创建表时是固定的,但列限定符是可变的,并且在行之间可能差别很大。
  单元格(Cell)
  单元格是行、列族和列限定符的组合,并且包含值和时间戳,它表示值的版本。
  时间戳(Timestamp)
  时间戳与每个值一起编写,并且是给定版本的值的标识符。默认情况下,时间戳表示写入数据时 RegionServer 上的时间,但可以在将数据放入单元格时指定不同的时间戳值。
  3.HBase概念视图
  本节介绍 HBase 的概念视图。
  本节的示例是根据  BigTable 论文进行稍微修改后的示例。在本节的示例中有一个名为表 webtable,其中包含两行(com.cnn.www 和 com.example.www)以及名为 contents、anchor 和 people 的三个列族。在本例中,对于第一行(com.cnn.www), anchor 包含两列(anchor:cssnsi.com,anchor:my.look.ca),并且 contents 包含一列(contents:html)。本示例包含具有行键 com.cnn.www 的行的5个版本,以及具有行键 com.example.www 的行的一个版本。contents:html 列限定符包含给定网站的整个 HTML。锚(anchor)列族的限定符每个包含与该行所表示的站点链接的外部站点以及它在其链接的锚点(anchor)中使用的文本。people 列族代表与该网站相关的人员。
  列名称:按照约定,列名由其列族前缀和限定符组成。例如,列内容: html 由列族contents和html限定符组成。冒号字符(:)从列族限定符分隔列族。
  webtable 表如下所示:



  此表中显示为空的单元格在 HBase 中不占用空间或实际上存在。这正是使 HBase “稀疏”的原因。表格视图并不是查看 HBase 数据的唯一可能的方法,甚至是最准确的。以下代表与多维地图相同的信息。这只是用于说明目的的模拟,可能并不严格准确。
  4.HBase物理视图
  尽管在 HBase 概念视图中,表格被视为一组稀疏的行的集合,但它们是按列族进行物理存储的。可以随时将新的列限定符(column_family:column_qualifier)添加到现有的列族。
  ColumnFamily anchor 表:



  ColumnFamily contents 表:



  HBase 概念视图中显示的空单元根本不存储。因此,对时间戳为 t8 的 contents:html 列值的请求将不返回任何值。同样,在时间戳为 t9 中一个anchor:my.look.ca 值的请求也不会返回任何值。但是,如果未提供时间戳,则会返回特定列的最新值。给定多个版本,最近的也是第一个找到的,因为时间戳按降序存储。因此,如果没有指定时间戳,则对行 com.cnn.www 中所有列的值的请求将是: 时间戳 t6 中的 contents:html,时间戳 t9 中 anchor:cnnsi.com 的值,时间戳 t8 中 anchor:my.look.ca 的值。

上一篇: Java培训_Java NIO的缓冲区GUAVA介绍

下一篇: CentOS7安装到Docker

在线咨询 ×

您好,请问有什么可以帮您?我们将竭诚提供最优质服务!