前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HBase 命名空间 Namespace

HBase 命名空间 Namespace

作者头像
smartsi
发布2019-11-27 16:14:15
5.1K0
发布2019-11-27 16:14:15
举报
文章被收录于专栏:SmartSiSmartSi

1. 简介

命名空间是表的逻辑分组,类似于关系数据库系统中的数据库。这种抽象为多租户相关功能奠定了基础:

  • 配额管理(HBASE-8410):限制一个命名空间可以使用的资源(Region或者Table等)。
  • 命名空间安全管理(HBASE-9206):为多租户提供另一级别的安全管理。
  • RegionServer组(HBASE-6721):一个命名空间或一张表,可以被固定到一组 RegionServer 上,从而保证了数据隔离性。

2. 命名空间管理

可以创建,删除或修改命名空间。命名空间成员是在表创建期间通过指定完全限定表名来确定:

代码语言:javascript
复制
<table namespace>:<table qualifier>

有如下常用的命名空间命令:

  • create_namespace
  • describe_namespace
  • list_namespace
  • alter_namespace
  • list_namespace_tables
  • drop_namespace
2.1 创建命名空间

可以使用 create_namespace 命令创建命名空间:

代码语言:javascript
复制
hbase> create_namespace 'ns1'

也可以通过可选的配置字典来创建命名空间:

代码语言:javascript
复制
hbase> create_namespace 'ns1', {'PROPERTY_NAME'=>'PROPERTY_VALUE'}
2.2 查看命名空间

可以使用 describe_namespace 命令查看命名空间:

代码语言:javascript
复制
hbase(main):017:0> describe_namespace 'ns1'
DESCRIPTION
{NAME => 'ns1'}
Took 0.0033 seconds
=> 1
2.3 查看所有命名空间

可以使用 list_namespace 命令列出所有可用的名称空间:

代码语言:javascript
复制
hbase(main):019:0> list_namespace
NAMESPACE
default
hbase
ns1
3 row(s)
hbase(main):022:0> list_namespace 'ns*'
NAMESPACE
ns1
1 row(s)

支持正则表达式

2.4 修改命名空间

可以使用 alter_namespace 命令修改已经创建的命名空间。

(1) 添加或者修改命名空间属性:

代码语言:javascript
复制
alter_namespace 'ns1', {METHOD => 'set', 'PROPERTY_NAME' => 'PROPERTY_VALUE'}

(2) 删除命名空间属性:

代码语言:javascript
复制
alter_namespace 'ns1', {METHOD => 'unset', NAME=>'PROPERTY_NAME'}
2.5 在命名空间中创建表

创建命名空间后,我们可以在该命名空间上创建表。就像任何其他 RDBMS Scheme 一样,我们必须在命名空间名称后附加表名称。如果不指定命名空间,默认在 default 命名空间下创建表。

如下示例在 ns1 命名空间中创建表 test

代码语言:javascript
复制
hbase(main):008:0> create 'ns1:test', 'f1', 'f2'
Created table ns1:test
Took 0.9023 seconds
=> Hbase::Table - ns1:test
2.6 查看给定命名空间所有可用的表

可以使用 list_namespace_tables 命令列出给定命名空间下所有可用的表:

代码语言:javascript
复制
hbase(main):011:0> list_namespace_tables 'ns1'
TABLE
test
1 row(s)
Took 0.0078 seconds
=> ["test"]
2.7 删除命名空间

可以使用 drop_namespace 命令删除表中存在的命名空间。我们只能删除空的命名空间。如果删除包含表的命名空间,必须先把该命名空间下创建的表删除。

如下所示删除包含表的命名空间:

代码语言:javascript
复制
hbase(main):013:0> drop_namespace 'ns1'

ERROR: org.apache.hadoop.hbase.constraint.ConstraintException: Only empty namespaces can be removed. Namespace ns1 has 1 tables
	at org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure.prepareDelete(DeleteNamespaceProcedure.java:217)
	at org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure.executeFromState(DeleteNamespaceProcedure.java:78)
	at org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure.executeFromState(DeleteNamespaceProcedure.java:45)
	at org.apache.hadoop.hbase.procedure2.StateMachineProcedure.execute(StateMachineProcedure.java:189)
	at org.apache.hadoop.hbase.procedure2.Procedure.doExecute(Procedure.java:965)
	at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.execProcedure(ProcedureExecutor.java:1723)
	at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.executeProcedure(ProcedureExecutor.java:1462)
	at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.access$1200(ProcedureExecutor.java:78)
	at org.apache.hadoop.hbase.procedure2.ProcedureExecutor$WorkerThread.run(ProcedureExecutor.java:2039)

如下所示删除一个空的命名空间:

代码语言:javascript
复制
hbase(main):014:0> create_namespace 'ns2'
Took 0.2518 seconds
hbase(main):015:0> drop_namespace 'ns2'
Took 0.2303 second

3. 内置命名空间

HBase 中有两个内置的特殊命名空间:

  • hbase:系统命名空间,包含 HBase 内部表。
  • default:如果在创建表时没有显式指定命名空间,默认会在此命名空间创建表。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-11-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 简介
  • 2. 命名空间管理
    • 2.1 创建命名空间
      • 2.2 查看命名空间
        • 2.3 查看所有命名空间
          • 2.4 修改命名空间
            • 2.5 在命名空间中创建表
              • 2.6 查看给定命名空间所有可用的表
                • 2.7 删除命名空间
                • 3. 内置命名空间
                相关产品与服务
                TDSQL MySQL 版
                TDSQL MySQL 版(TDSQL for MySQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档