HBase常用操作之namespace

参考
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



猜你喜欢

转载自wangqiaowqo.iteye.com/blog/2305195