一、什么是namespace

在RDBMS中有database的概念,用来对table进行分组,那么在HBase中当表比较多的时候如何对表分组呢,就是namespace,可以简单的把namespace理解为RDBMS中的database。

二、namespace相关操作

内置的namespace

HBase有两个内置的namespace:

hbase(main):009:0> list_namespace
NAMESPACE
default
hbase
2 row(s)
Took 0.0683 seconds

hbase:用来存放系统相关的一些元数据等,相当于mysql中的mysql数据库:

hbase(main):025:0> list_namespace_tables "hbase""
TABLE
meta
namespace
2 row(s)
Took 0.0174 seconds
=> ["meta", "namespace"]

default:创建表时未指定命名空间的话默认挂在default下。

创建namespace

创建namespace:

hbase(main):010:0> create_namespace "test"
Took 0.2781 seconds

在创建namespace的时候还可以添加一些说明信息:

hbase(main):018:0> create_namespace "test002", {"author"=>"CC11001100", "create_time"=>"2018-11-4 17:51:53"}
Took 0.2262 seconds

查看namespace信息

上面创建namespace时添加了一些附加信息,如何查看这些附加信息呢:

hbase(main):019:0> describe_namespace "test002""
DESCRIPTION
{NAME => 'test002', author => 'CC11001100', create_time => '2018-11-4 17:51:53'}
Took 0.0042 seconds
=> 1

修改namespace

查看附加信息发现作者写错了,需要修改:

hbase(main):014:0> alter_namespace "test002", {METHOD=>"set", "author"=>"ChenEr"}
Took 0.2458 seconds
hbase(main):015:0> describe_namespace "test002"
DESCRIPTION
{NAME => 'test002', author => 'ChenEr', create_time => '2018-11-4 17:51:53'}
Took 0.0056 seconds
=> 1

改完发现还漏了一项,需要追加自己的联系方式:

hbase(main):016:0> alter_namespace "test002", {METHOD=>"set", "email"=>"CC11001100@qq.com"}
Took 0.2313 seconds
hbase(main):017:0> describe_namespace "test002"
DESCRIPTION
{NAME => 'test002', author => 'ChenEr', create_time => '2018-11-4 17:51:53', email => 'CC11001100@qq.com'}
Took 0.0038 seconds
=> 1

想了下放上去自己的联系方式搞不好会被不断骚扰,还是去掉此项属性:

hbase(main):010:0> alter_namespace "test002", {METHOD=>"unset", NAME=>"email"}
Took 0.2419 seconds
hbase(main):011:0> describe_namespace "test002"
DESCRIPTION
{NAME => 'test002', author => 'ChenEr', create_time => '2018-11-4 17:51:53'}
Took 0.0056 seconds
=> 1

总结:

添加或修改属性:

alter_namespace 'ns1', {METHOD => 'set', 'PROPERTY_NAME' => 'PROPERTY_VALUE'}

删除属性:

alter_namespace 'ns1', {METHOD => 'unset', NAME=>'PROPERTY_NAME'}

查看已创建的所有namespace

查看当前已经创建的namespace,相当于RDBMS中的show databases:

hbase(main):019:0> list_namespace
NAMESPACE
default
hbase
test
test002
4 row(s)
Took 0.0122 seconds

删除namespace

删除namespace:

hbase(main):019:0> list_namespace
NAMESPACE
default
hbase
test
test002
4 row(s)
Took 0.0122 seconds
hbase(main):020:0> drop_namespace "test002"
Took 0.2321 seconds
hbase(main):021:0> list_namespace
NAMESPACE
default
hbase
test
3 row(s)
Took 0.0111 seconds

注意要删除的namespace必须是空的,其下没有表,否则会删除失败:

hbase(main):051:0> create_namespace "test_drop_namespace"
Took 0.2376 seconds
hbase(main):052:0> create "test_drop_namespace:t1", "cf1"
Created table test_drop_namespace:t1
Took 2.2312 seconds
=> Hbase::Table - test_drop_namespace:t1
hbase(main):053:0> drop_namespace "test_drop_namespace" ERROR: org.apache.hadoop.hbase.constraint.ConstraintException: Only empty namespaces can be removed. Namespace test_drop_namespace 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:850)
at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.execProcedure(ProcedureExecutor.java:1473)
at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.executeProcedure(ProcedureExecutor.java:1241)
at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.access$800(ProcedureExecutor.java:75)
at org.apache.hadoop.hbase.procedure2.ProcedureExecutor$WorkerThread.run(ProcedureExecutor.java:1761) For usage try 'help "drop_namespace"' Took 0.1217 seconds
hbase(main):054:0> disable "test_drop_namespace:t1"
Took 0.4357 seconds
hbase(main):055:0> drop "test_drop_namespace:t1"
Took 0.2351 seconds
hbase(main):056:0> drop_namespace "test_drop_namespace"
Took 0.2172 seconds

创建表时指定namespace

创建表时指定表所在的namespace,使用namespace-name:tale-name的格式指定:

hbase(main):022:0> create "test:user", "userInfo"
Created table test:user
Took 2.3992 seconds
=> Hbase::Table - test:user

查看namespace下的表

查看namespace下都有哪些表:

hbase(main):024:0> list_namespace_tables "test"
TABLE
user
1 row(s)
Took 0.0252 seconds
=> ["user"]

Hbase的namespace命令操作的更多相关文章

  1. hbase学习一 shell命令操作

    基本操作: #命名空间级别: #列出所有命名空间 hbase> list_namespace #新建命名空间 hbase> create_namespace 'ns1' #删除命名空间 h ...

  2. HBase(四)HBase集群Shell操作

    一.进入HBase命令行 在你安装的随意台服务器节点上,执行命令:hbase shell,会进入到你的 hbase shell 客 户端 [admin@node21 ~]$ hbase shell S ...

  3. HBase基本shell命令

    HBase基本shell命令 以下shell命令都是经过测试,正常展示,若有不足,还望指点! 1.创建表 create ‘表名称’,‘列族名称1’,‘列族名称1’create 'test_M_01', ...

  4. Hbase快速开始——shell操作

    一. 介绍 HBase是一个分布式的.面向列的开源数据库,源于google的一篇论文<bigtable:一个结构化数据的分布式存储系统>.HBase是Google Bigtable的开源实 ...

  5. (转)Hbase shell 常用命令(1)

    Hbase shell 常用命令(1) link:http://blog.csdn.net/scutshuxue/article/details/6988348 下面我们看看HBase Shell的一 ...

  6. HBase的Shell命令

    1.HBase提供了一个shell的终端给用户交互 2.HBase Shell的DDL操作 (1)先进入HBase的 Shell命令行,即HBASE_HOME/bin/hbase shell …… & ...

  7. Hbase理论&&hbase shell&&python操作hbase&&python通过mapreduce操作hbase

    一.Hbase搭建: 二.理论知识介绍: 1Hbase介绍: Hbase是分布式.面向列的开源数据库(其实准确的说是面向列族).HDFS为Hbase提供可靠的底层数据存储服务,MapReduce为Hb ...

  8. Hbase启动hbase shell运行命令报Class path contains multiple SLF4J bindings.错误

    1:Hbase启动hbase shell运行命令报Class path contains multiple SLF4J bindings.错误,是因为jar包冲突了,所以对于和hadoop的jar包冲 ...

  9. docker镜像、容器以及命令操作

    docker image docker image是一个极度精简版的Linux程序运行环境,官网的java镜像包括的东西更少,除非是镜像叠加方式的如centos+java7 docker image是 ...

随机推荐

  1. Tomcat-默认访问的工程和默认访问的资源

    Tomcat(默认访问的工程和默认访问的资源) ROOT的工程的访问,以及默认index.html页面的访问 当我们在浏览器地址栏中输入访问地址如下: http://ip:port/   ====== ...

  2. IoC容器-Bean管理注解方式(创建对象)

    IoC操作Bean管理(基于注解方式) 1,什么是注解 (1)注解是代码特殊标记,格式:@注解名称(属性名称=属性值,属性名称=属性值...) (2)使用注解,注解作用在类上面,方法上面,属性上面 ( ...

  3. Git安装详解

    官网地址: https://git-scm.com/ 查看 GNU 协议,可以直接点击下一步. 选择 Git 安装位置,要求是非中文并且没有空格的目录,然后下一步. Git 选项配置,推荐默认设置,然 ...

  4. 感恩陪伴 HelloGitHub 定制的红包封面

    距离放假越来越近了,我们更文的频率也越来越低了. 先别打!听我解释... 我真没偷懒,我是去研究今年的「微信红包封面」玩法了. 这不去年,我们制作的 HelloGitHub 专属红包封面,很多粉丝都说 ...

  5. 使用Xamarin开发移动应用示例——数独游戏(四)产生新游戏算法改进

    项目代码可以从Github下载:https://github.com/zhenl/ZL.Shudu .代码随项目进度更新. 前面我们使用一个数组保存预制的游戏,然后随机从中抽取一个游戏作为新游戏,如果 ...

  6. python04day

    回顾 int str bool str: s1='tangdaren123' 索引: s1[0] s1[-1] s1[:3] s1[:5:2] s1[-1:-4:-1] s1[-1:-6:-2] 常用 ...

  7. linux 启动过程原理哦

    bios加电自检硬件设备 grub引导加载程序 当内核被加载到内存,内核阶段就开始了. init进程是所有进程的发起者和控制者.因为在任何基于unix的系统中,它都是第一个运行的进程. 然后执行sys ...

  8. ApacheCN 深度学习译文集 20201218 更新

    新增了四个教程: Python 人工智能中文版 0 前言 1 人工智能简介 2 人工智能的基本用例 3 机器学习管道 4 特征选择和特征工程 5 使用监督学习的分类和回归 6 集成学习的预测分析 7 ...

  9. NumPy 秘籍中文第二版·翻译完成

    原文:NumPy Cookbook - Second Edition 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. 在线阅读 Apache ...

  10. Java中命名Dao、Bean、conn等包的含义(不定期补充)

    感谢大佬:https://blog.csdn.net/j904538808/article/details/78904732 (1)DAO是Data Access Object数据访问接口.数据访问: ...