整套大数据学习资料(视频+笔记)百度网盘无门槛下载:http://www.edu360.cn/news/content?id=3377

13.2概念 13.3.1数据模型的“旋风之旅”

hadoop 花牛 11℃ 0评论

在本章中,我们将介绍如何使用HBase。要想了解更多信息,请参考Lars George所著的《HBase权威指南》。在本节中,我们只对HBase的核心概念进行快速、简单的介绍。掌握这些概念至少有助于消化后续内容。

应用把数据存放在带标签的表中。表由行和列组成。表格的“单元格”cell) 由行和列的坐标交叉决定,是有版本的。默认情况下,版本号是自动分配的,为HBase插入单元格时的时间戳。单元格的内容是未解释的字节数组。

表中行的键也是字节数组。所以理论上,任何东西都可以通过表示成字符串或将二进制形式转化为长整型或直接对数据结构进行序列化,来作为键值。表中的行根据行的键值(也就是表的主键)进行排序。排序根据字节序进行。所有对表的访问都要通过表的主键。

行中的列被分成“列族”(column family)。同一个列族的所有成员具有相同 的前缀。因此,像列 和化都是列族化的成员,而station:identifier则属于station族。列族的前缀必须由“可打印的”(printable)字符组成。而修饰性的结尾字符,即列族修 饰符,可以为任意字节。

一个表的列族必须作为表模式定义的一部分预先给出。但是新的列族成员可以随后按需要加入。例如,只要目标表中已经有了列族station,那么客户 端就可在更新时提供新的列并存储它的值。

物理上,所有的列族成员都一起存放在文件系统中。所以,虽然我们前面 把HBase描述为一个面向列的存储器,但实际上更准确的说法是:它是一 个面向列族的存储器。由于调优和存储都是在列族这个层次上进行的,所 以最好使所有列族成员都有相同的“访问模式”(access pattern)和大小特征。

简而言之,HBase表和RDBMS中的表类似,单元格有版本,行是排序的, 而只要列族预先存在,客户端随时可以把列添加到列族中去。

1.区域

HBase自动把表水平划分成“区域”(region)。每个区域由表中行的子集构成。每个区域由它所属于的表、它所包含的第一行及其最后一行(不包括这行)来表示。一开始,一个表只有一个区域。但是随着区域开始变大,等到 它超出设定的大小阈值,便会某行的边界上把表分成两个大小基本相同 的新分区。在第一次划分之前,所有加载的数据都放在原始区域所在的那 台服务器上。随着表变大,区域的个数也会增加。区域是在HBase集群上 分布数据的最小单位。用这种方式,一个因为太大而无法放在单台服务器 上的表会被放到服务器集群上,其中每个节点都负责管理表所有区域的一个子集。表的加载也是使用这种方法把数据分布到各个节点。在线的所有 区域按次序排列就构成了表的所有内容。

2.加锁

无论对行进行访问的事务牵涉多少列,对行的更新都是“原子的” (atomic)。这使得“加锁模型”(locking model)能够保持简单。

转载请注明:全栈大数据 » 13.2概念 13.3.1数据模型的“旋风之旅”

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址