http://www.cnblogs.com/similarface/p/5821224.html
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(main):
010
:
0
* create_namespace
'datamanage'
查看namespace:
hbase(main):
011
:
0
> describe_namespace
'datamanage'
DESCRIPTION
{NAME =>
'datamanage'
}
列出所有namespace:
hbase(main):
012
:
0
> list_namespace
NAMESPACE
datamanage
default
hbase
在namespace下创建表:
hbase(main):
013
:
0
> create
'datamanage:testtable'
,
'colfam01'
=> Hbase::Table - datamanage:testtable
查看namespace下的表
hbase(main):
015
:
0
> list_namespace_tables
'datamanage'
TABLE
testtable
删除namespace:
hbase(main):
016
:
0
> drop_namespace
'datamanage'
ERROR: org.apache.hadoop.hbase.constraint.ConstraintException: Only empty namespaces can be removed. Namespace datamanage has
1
tables
at org.apache.hadoop.hbase.master.TableNamespaceManager.remove(TableNamespaceManager.java:
200
)
at org.apache.hadoop.hbase.master.HMaster.deleteNamespace(HMaster.java:
2488
)
at org.apache.hadoop.hbase.master.MasterRpcServices.deleteNamespace(MasterRpcServices.java:
489
)
at org.apache.hadoop.hbase.protobuf.generated.MasterProtos$MasterService$
2
.callBlockingMethod(MasterProtos.java:
55730
)
at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:
2178
)
at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:
112
)
at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:
133
)
at org.apache.hadoop.hbase.ipc.RpcExecutor$
1
.run(RpcExecutor.java:
108
)
at java.lang.Thread.run(Thread.java:
745
)
Here is some help
for
this
command:
Drop the named namespace. The namespace must be empty.
#删除表
hbase(main):
017
:
0
> disable
'datamanage:testtable'
hbase(main):
018
:
0
> drop
'datamanage:testtable'
#删除datamanage命名空间
hbase(main):
019
:
0
> drop_namespace
'datamanage'
|
java API:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
import
org.apache.hadoop.conf.Configuration;
import
org.apache.hadoop.hbase.*;
import
org.apache.hadoop.hbase.client.Admin;
import
org.apache.hadoop.hbase.client.Connection;
import
org.apache.hadoop.hbase.client.ConnectionFactory;
import
org.apache.hadoop.hbase.util.Bytes;
import
java.io.IOException;
/**
* Hbase namespace
*/
public
class
NameSpaceInHbase {
public
static
void
main(String[] args)
throws
IOException {
Configuration conf = HBaseConfiguration.create();
Connection connection = ConnectionFactory.createConnection(conf);
//管理员对象
Admin admin = connection.getAdmin();
//创建命名空间
NamespaceDescriptor namespaceDescriptor = NamespaceDescriptor.create(
"datastrom3"
).build();
admin.createNamespace(namespaceDescriptor);
//表名
TableName tableName = TableName.valueOf(
"datastrom3"
,
"testtable3"
);
//表描述
HTableDescriptor desc =
new
HTableDescriptor(tableName);
//列族描述datastrom
HColumnDescriptor coldef =
new
HColumnDescriptor(Bytes.toBytes(
"colfam3"
));
//表加入列族
desc.addFamily(coldef);
//创建表
admin.createTable(desc);
//校验表是否可用
boolean
avail = admin.isTableAvailable(tableName);
System.out.println(
"Table available: "
+avail);
}
}
/**
preHell:
========
nextShell:
hbase(main):005:0> list
TABLE
testtable2
user
2 row(s) in 0.0070 seconds
java output:
=====
Table available: true
shell:
=====
hbase(main):022:0> list
TABLE
datastrom3:testtable3
...
**/
|