付出,终有回报!
分类: HADOOP
2017-02-24 13:50:46
尽管概念层面的表可能被看成行的稀疏集合,他们是通过列簇物理地存储。一个新的列修饰符(列簇:列修饰符)可以在任何时候被加入到一个已存在的列簇当中。
表5. 列簇 anchor
Row Key | Time Stamp | Column Family anchor |
---|---|---|
"com.cnn.www" | t9 | anchor:cnnsi.com="CNN" |
"com.cnn.www" | t8 | anchor:my.look.ca="CNN.com" |
表6. 列簇 contents
Row Key | Time Stamp | Column Family anchor |
---|---|---|
"com.cnn.www" | t6 |
contents:html="
..."
|
"com.cnn.www" | t5 |
contents:html="
..."
|
"com.cnn.www" | t3 |
contents:html="
..."
|
在概念视图中看到的空单元格(cell)没有被存储。因此,一个对列contents:html,时间戳为t8的值的请求将检索不到任何值。同样,一个对列anchor:my.look.ca,时间戳为t9的请求也不会有值返回。然后,如果没有提供时间戳,将返回指定列的最新的值。给出多个版本,也是最近的最先找到,因为时间戳是倒序存储的。因此,如果对行com.cnn.www所有列的值进行请求,如果没有指定时间戳,则请求的值为:时间戳为t6,列为contents:html的值,时间戳为t9,列为anchor:cnnsi.com的值,时间戳为t8,列为anchor:my.look.ca的值。(t5,t3没有返回,是因为返回了最近的t6)。
一个命名空间是一个表的逻辑分组,类似于关系型数据庫系统里的数据庫。
配额管理() - 对一个命名空间使用资源的约束
命名空间安全管理 - 为租户提供另一个层面的安全管理
区域服务组 - 一个namespace/table可以固定到regionServer的一个子集,从而保证一定程度的隔离性。
命名空间可以被创建,删除和修改。命名空间成员是由在创建时指定一个全限定符表名所决定:
例子12. #创建一个命名空间my_ns
create_namespace 'my_ns' #在命名空间my_ns里创建my_table create 'my_ns:my_table', 'fam' #drop namespace drop_namespace 'my_ns' #alter namespace alter_namespace 'my_ns', {METHOD => 'set', 'PROPERTY_NAME' => 'PROPERTY_VALUE'}2.预定义的命名空间
有两个预定义的命名空间:
hbase - 系统命名空间,用于包含HBase的内部表
default - 没有指定命名空间的表,将自动使用此命名空间例子13.
#namespace=foo and table qualifier=bar
#可以理解为foo为数据庫,bar为表,fam为表bar的列簇create 'foo:bar', 'fam' #namespace=default and table qualifier=bar create 'bar', 'fam'