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
     ...
      **/
    
  • 相关阅读:
    【转载】mysql 日志开启
    无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同。
    MVC4 本地IIS测试
    新浪网易IP地区信息查询API接口调用方法(转载)
    解决方案看起来是受源代码管理,但无法找到它的绑定信息。保存解决方案的源代码管理设置的 MSSCCPRJ.SCC 文件或其他项可能已被删除。由于无法自动恢复这些缺少的信息,缺少绑定的项目将被视为不受源代码管理。
    SQL语句中order_by_、group_by_、having的用法区别
    项目总结之关于JQuery一些常用的函数
    Log4Net使用指南之用log4net记录日志到数据库(含有自定义属性)------附Demo例子源代码
    HighCharts点击柱形或饼块等加URL或Click事件
    .Net用字符串拼接实现表格数据相同时合并单元格
  • 原文地址:https://www.cnblogs.com/similarface/p/5821224.html
Copyright © 2011-2022 走看看