1、介绍
Hbase中命名空间类似于传统数据库RDBMS中的:库,方便对表进行业务上的划分。在hbase从0.98.0,0.95.2开始支持namespace级别的授权操作。hbase的全局管理员可以进行namespace的授权操作(创建、修改和回收)。
2、namespace
HBase系统默认定义了两个命名空间
hbase:系统内建表,包括namespace和meta表
default:用户建表时未指定namespace的表都创建在此
3、namespace的基本操作,
操作思路类似于操作传统数据库
3.1:创建namespace:
hbase(main):010:0* create_namespace 'tablemamager'
3.2:查看namespace:
hbase(main):011:0> describe_namespace 'tablemamager'
DESCRIPTION
{NAME =>'tablemamager'}
3.3:列出所有namespace:
hbase(main):012:0> list_namespace
NAMESPACE
tablemamager
default
hbase
4、namespace下操作表
4.1:在namespace下创建表:
hbase(main):013:0> create 'tablemamager:idbctable','cf01'
=> Hbase::Table - tablemamager:idbctable
4.1:查看namespace下的表
hbase(main):015:0> list_namespace_tables 'tablemamager'
TABLE
idbctable
4.2:删除namespace:
#删除表
hbase(main):017:0> disable 'tablemamager:idbctable'
hbase(main):018:0> drop 'tablemamager:idbctable'
#删除datamanage命名空间
hbase(main):019:0> drop_namespace 'tablemamager'
1 JAVA API
2 import org.apache.hadoop.conf.Configuration;
3 import org.apache.hadoop.hbase.*;
4 import org.apache.hadoop.hbase.client.Admin;
5 import org.apache.hadoop.hbase.client.Connection;
6 import org.apache.hadoop.hbase.client.ConnectionFactory;
7 import org.apache.hadoop.hbase.util.Bytes;
8
9 import java.io.IOException;
10
11
12 /**
13 * Hbase namespace
14 */
15 public class NameSpaceInHbase {
16 public static void main(String[] args) throws IOException {
17
18 Configuration conf = HBaseConfiguration.create();
19 Connection connection = ConnectionFactory.createConnection(conf);
20 //管理员对象
21 Admin admin = connection.getAdmin();
22 //创建命名空间
23 NamespaceDescriptor namespaceDescriptor = NamespaceDescriptor.create("datastrom3").build();
24 admin.createNamespace(namespaceDescriptor);
25 //表名
26 TableName tableName = TableName.valueOf("datastrom3","testtable3");
27 //表描述
28 HTableDescriptor desc = new HTableDescriptor(tableName);
29 //列族描述datastrom
30 HColumnDescriptor coldef = new HColumnDescriptor(Bytes.toBytes("colfam3"));
31 //表加入列族
32 desc.addFamily(coldef);
33 //创建表
34 admin.createTable(desc);
35 //校验表是否可用
36 boolean avail = admin.isTableAvailable(tableName);
37 System.out.println("Table available: "+avail);
38 }
39 }
40
41 /**
42 preHell:
43 ========
44 nextShell:
45 hbase(main):005:0> list
46 TABLE
47 testtable2
48 user
49 2 row(s) in 0.0070 seconds
50
51 java output:
52 =====
53 Table available: true
54
55 shell:
56 =====
57 hbase(main):022:0> list
58 TABLE
59 datastrom3:testtable3
60 ...
61 **/
View Code