zoukankan      html  css  js  c++  java
  • 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
     ...
      **/
    
  • 相关阅读:
    SVN服务器搭建(一)
    排序算法二:冒泡排序
    【LeetCode】136. Single Number
    【LeetCode】217. Contains Duplicate
    【LeetCode】189. Rotate Array
    【LeetCode】122. Best Time to Buy and Sell Stock II
    【LeetCode】26. Remove Duplicates from Sorted Array
    【LeetCode】20. Valid Parentheses
    【LeetCode】680. Valid Palindrome II
    【LeetCode】345. Reverse Vowels of a String
  • 原文地址:https://www.cnblogs.com/similarface/p/5821224.html
Copyright © 2011-2022 走看看