`

HBase-namespace命名空间介绍

 
阅读更多

 

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'






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
 ...
  **/

 

 

在工作中的应用:

1 创建命名空间

create_namespace 'evalu'

2 创建HBASE表时带上空间:
create 'evalu:evaluation_person_stat',{NAME =>'cf',DATA_BLOCK_ENCODING => 'PREFIX_TREE', BLOOMFILTER => 'ROW', VERSIONS => '3', COMPRESSION => 'snappy', BLOCKSIZE => '32768'},{NUMREGIONS => 15, SPLITALGO => 'HexStringSplit'}

 

 

分享到:
评论

相关推荐

    HBase入门:命名空间、建表、增删改查

    命名空间在HBase中用于逻辑上组织表,类似于关系型数据库中的数据库。命名空间管理可以帮助更好地管理和隔离资源。以下是关于命名空间的基本操作: 1. **列出所有命名空间**: 使用`list_namespace`命令可以查看...

    HBase.docx

    - HBase在HDFS上的目录结构有特定的命名规则,用于存放Region数据。 5. **整体结构** - 包括Client、Zookeeper集群、HBase Master、Region Server集群以及HDFS。 以上就是关于HBase的基础知识,包括其特点、核心...

    Hbase 组件 、架构

    在HBase中,命名空间(namespace)相当于关系型数据库系统中的逻辑分组,用于表的逻辑分组,同一命名空间中的表具有相似的用途。在HBase中,默认有系统内置的预定义命名空间,即hbase命名空间和default命名空间。hbase...

    HBase基本数据操作详解.docx

    ### HBase基本数据操作详解 ...通过上述详细介绍,我们了解了HBase中命名空间、表创建以及基本数据操作(Put、Delete、Get和Scan)的核心概念和实现细节。这些知识对于理解和操作HBase数据库至关重要。

    apache_hbase_reference_guide(官网).pdf

    - **HBase的命名空间(Namespace)**,类似数据库中的数据库,用于对表进行逻辑分组。 - **HBase表的设计**,包括行键设计、列族数量、数据版本、支持的数据类型等。 - **HBase的ACID特性**,在NoSQL领域中,HBase...

    hbase shell操作指南

    命名空间管理命令包括`alter_namespace`、`create_namespace`、`describe_namespace`、`drop_namespace`、`list_namespace`和`list_namespace_tables`。通过这些命令可以对HBase命名空间进行创建、修改、删除和查询...

    apache hbase reference guide

    - **Namespace**(命名空间):类似于数据库的概念,用于组织表的逻辑分组。 - **Table**(表):HBase中的基本数据存储单元。 - **Row**(行):由行键标识的一组列族组成的记录。 - **Column Family**(列族)...

    apache hbase reference guide pdf

    这一部分强调了HBase的三大核心组件:命名空间(Namespace)、表(Table)和列族(ColumnFamily)。它会详细解释HBase中的行(Row)、单元格(Cell)以及如何进行数据模型操作,如版本控制、排序顺序和列元数据管理...

    Hadoop+Zookeeper+HBase部署指南

    - **初始化HBase表空间**:通过`create_namespace.sh`脚本创建命名空间。 - **启动HBase集群**:使用`start-hbase.sh`脚本启动HBase服务。 #### 七、注意事项 - 在整个部署过程中,需保持各节点之间的时间同步,...

    HBase官方指南——数据模型篇

    6. 命名空间(Namespace) 命名空间在HBase中是用来分隔不同表的,可以将不同的应用数据隔离到不同的命名空间中,从而避免命名冲突。 7. 版本(Versions) HBase支持同*单元格存储多个版本的数据。每个版本的数据都...

    藏经阁-HBase多语言访问.pdf

    Namespace用于定义命名空间,Include用于引入其他IDL文件,而Definition用于定义Thrift接口。 六、Thrift Types Thrift Types用于定义Thrift数据类型。HBase使用Thrift Types定义了其Thrift数据类型,包括基本类型...

    HBase多租户.pdf

    它为每个租户提供了一个独立的命名空间,从而保护了数据安全。 监控和告警对于维持一个健康稳定的服务至关重要。在HBase中,通过为每个RegionServer Group设定不同的监控和告警策略,管理员可以对各个租户的性能...

    大数据技术之HBase.pdf 五积分

    ##### 4.1 Namespace (命名空间) - **定义**:命名空间类似于关系型数据库中的Database概念,用于组织和管理表。 - **自带命名空间**:HBase默认提供了两个命名空间,`hbase`和`default`。`hbase`命名空间中包含了...

    HBase讲义1

    HBase的数据模型包括命名空间(Namespace)、表(Table)、行(Row)、列族(ColumnFamily)、列(ColumnQualifier)、时间戳(Timestamp)和单元格(Cell)。 - 命名空间类似于数据库,可以将相关的表组织在一起。...

    云数据库HBase企业级安全解析.pdf

    用户可以基于用户或用户组进行权限分配,而权限的优先级从大到小排序为:global(全局)>namespace(命名空间)>table(表)>family(列族)>qualifier(列限定符)。 2. RPC层的安全认证:主要的实现是kerberos...

    《Hadoop大数据开发实战》教学教案—08HBase分布式存储系统.pdf

    1. 命名空间(Namespace):类似于数据库的逻辑分组,用于管理多个表。 2. 表(Table):由行键和列族组成,是数据存储的基本单位。 3. 行键(Rowkey):每个表的唯一标识,用于确定数据的位置。 4. 列族(Column ...

    MongoDB 24 道面试题及答案.docx

    四、命名空间 (Namespace) * 命名空间是数据库名 + 集合名 * 在 Collection 中,命名空间是一个集合的完整名 五、MongoDB 中的对象属性删除 * 如果用户移除对象的属性,那么该属性将从存储层中删除 * 对象会重新...

    hadoop原理介绍

    - **Namespace**:文件系统的命名空间,包含文件和目录的元数据信息。 - **Shell**:提供了一系列命令行工具,用于与HDFS进行交互。 - **Fsimage & EditLog**:NameNode使用这两个文件来维护元数据信息的持久化。`...

    大数据学习路线+知识点大梳理.pdf

    - **NameSpace**: 命名空间。 - **Table**: 表。 - **Row**: 行。 - **Column**: 列。 - **TimeStamp**: 时间戳。 - **Cell**: 存储单元。 - **基本架构** - **Client**: 客户端。 - **ZooKeeper**: 配置...

    基于Hadoop集群平台的计算架构.pdf

    (1)对于整个集群有单一的命名空间。 (2)数据一致性。适合一次写入多次读取的模型。客户端在文件没有被成功创建之前是无法看到文件存在。 (3)文件会被分割成多个文件块,每个文件块被分配存储到数据节点上,...

Global site tag (gtag.js) - Google Analytics