参考
http://blog.csdn.net/opensure/article/details/46470969
1、介绍
在HBase中,namespace命名空间指对一组表的逻辑分组,类似RDBMS中的database,方便对表在业务上划分。Apache HBase从0.98.0, 0.95.2两个版本开始支持namespace级别的授权操作,HBase全局管理员可以创建、修改和回收namespace的授权。
2、namespace
HBase系统默认定义了两个缺省的namespace
hbase:系统内建表,包括namespace和meta表
default:用户建表时未指定namespace的表都创建在此
创建namespace
hbase>create_namespace 'ai_ns'
列出所有namespace
hbase>list_namespace
在namespace下创建表
hbase>create 'ai_ns:testtable', 'fm1'
http://blog.jobbole.com/83614/
Base不是一个关系型数据库,它需要不同的方法定义你的数据模型,HBase实际上定义了一个四维数据模型,下面就是每一维度的定义:
行键:每行都有唯一的行键,行键没有数据类型,它内部被认为是一个字节数组。
列簇:数据在行中被组织成列簇,每行有相同的列簇,但是在行之间,相同的列簇不需要有相同的列修饰符。在引擎中,HBase将列簇存储在它自己的数据文件中,所以,它们需要事先被定义,此外,改变列簇并不容易。
列修饰符:列簇定义真实的列,被称之为列修饰符,你可以认为列修饰符就是列本身。
版本:每列都可以有一个可配置的版本数量,你可以通过列修饰符的制定版本获取数据。
通过行键获取一个指定的行,它由一个或多个列簇构成,每个列簇有一个或多个列修饰符(图1中称为列),每列又可以有一个或多个版本。为了获取指定数据,你需要知道它的行键、列簇、列修饰符以及版本。当设计HBase数据模型时,对考虑数据是如何被获取是十分有帮助的。你可以通过以下两种方式获得HBase数据:
通过他们的行键,或者一系列行键的表扫描。
使用map-reduce进行批操作
这种双重获取数据的方法使得HBase变得十分强大,典型地,在Hadoop中存储数据意味着它对离线或批处理方式分析是有益的(尤其是批处理分析),但是,对实时获取是不必要的。HBase通过key/value存储来支持实时分析,以及通过map-reduce支持批处理分析。让我们首先来看实时数据获取,作为key/value存储,key是行键,value是列簇的集合,如图2所示。
创建一个名为PageViews的表,并具有名为info的列簇:
hbase(main):002:0> create 'PageViews', 'info'
0 row(s) in 5.3160 seconds
=> Hbase::Table - PageViews
每张表至少要有一个列簇,因此我们创建了info,现在,看看我们的表,执行下面list命令:
hbase(main):002:0> list
TABLE
PageViews
1 row(s) in 0.0350 seconds
=> ["PageViews"]
如你所见,list命令返回一个名为PageViews的表,我们可以通过describe命令得到表的更多信息:
hbase(main):003:0> describe 'PageViews'
DESCRIPTION ENABLED
'PageViews', {NAME => 'info', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW',
REPLICATION_SCOPE => '0', VERSIONS => '1', COMPRESSION => 'NONE true
', MIN_VERSIONS => '0', TTL => 'FOREVER', KEEP_DELETED_CELLS => 'false',
BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}
1 row(s) in 0.0480 seconds
这里我们创建的仅有一个:info,现在为表添加以下数据,下面命令是在info中添加新的行:
hbase(main):004:0> put 'PageViews', 'rowkey1', 'info:page', '/mypage'
0 row(s) in 0.0850 seconds
Put命令插入一条行键为rowkey1的新纪录,指定在info下的page列,插入值为/mypage的记录,我们随后可以通过get命令通过行键rowkey1查询到这条记录:
hbase(main):005:0> get 'PageViews', 'rowkey1'
COLUMN CELL
info:page timestamp=1410374788088, value=/mypage
1 row(s) in 0.0250 seconds
你可以看到列info:page,或者更多具体的列,其值为/mypage,并带有时间戳表明该条记录是什么时候插入的。让我们在做表扫描之前再添加一行:
hbase(main):006:0> put 'PageViews', 'rowkey2', 'info:page', '/myotherpage'
0 row(s) in 0.0050 seconds
HBase常用操作之namespace
猜你喜欢
转载自wangqiaowqo.iteye.com/blog/2305195
今日推荐
周排行