• HBase之表空间


    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:

    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
     ...
      **/
    
  • 相关阅读:
    基本数据类型
    python IF while逻辑判断语句
    python文件的执行
    【ListBox】ListBox的相关操作
    C#基础-replace()过滤非法字符
    vmware虚拟机提示:无法将Ethernet0连接到虚拟网络vmnet02018-03-07
    linux 网卡配置文件详解2018-03-07
    eclipse+pydev 安装和配置过程
    Object与String
    P3369 【模板】普通平衡树(权值线段树)
  • 原文地址:https://www.cnblogs.com/similarface/p/5821224.html
Copyright © 2020-2023  润新知