HBase命名空间Namespace 2015-04-30 11:00

介绍

在关系数据库系统中,命名空间namespace指的是一个表的逻辑分组,同一组中的表有类似的用途。命名空间的概念为即将到来的多租户特性打下基础:

  • 配额管理:限制一个namespace可以使用的资源,资源包括region和table等;
  • 命名空间安全管理:提供了另一个层面的多租户安全管理;
  • Region服务器组:一个命名空间或一张表,可以被固定到一组RegionServers上,从而保证了数据隔离性。

命令空间管理

命名空间可以被创建、删除、修改。表和命名空间的隶属关系在在创建表时决定,通过以下格式指定:<namespace>:<table>。

HBase Shell中创建命名空间、创建命名空间中的表、移除命名空间、修改命名空间:

#Create a namespace
create_namespace 'my_ns'

#create my_table in my_ns namespace, "fam"是列族
create 'my_ns:my_table', 'fam'

#drop namespace
drop_namespace 'my_ns'

#alter namespace
alter_namespace 'my_ns', {METHOD => 'set', 'PROPERTY_NAME' => 'PROPERTY_VALUE'}

预定义的命名空间

有两个系统内置的预定义命名空间:

  • hbase:系统命名空间,用于包含hbase的内部表
  • default:所有未指定命名空间的表都自动进入该命名空间

API

样例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
Configuration conf = HBaseConfiguration.create();
HBaseAdmin admin = new HBaseAdmin(conf);
//create namespace named "my_ns"
admin.createNamespace(NamespaceDescriptor.create("my_ns").build());

//create tableDesc, with namespace name "my_ns" and table name "mytable"
//HTableDescriptor tableDesc = new HTableDescriptor(TableName.valueOf("my_ns:mytable"));
//tableDesc.setDurability(Durability.SYNC_WAL);

//add a column family "mycf"
//HColumnDescriptor hcd = new HColumnDescriptor("mycf");
//tableDesc.addFamily(hcd);
//admin.createTable(tableDesc);
admin.close();

参考文档

【甘道夫】HBase基本数据操作详解

Tags: #HBase    Post on Hadoop