本文主要包含hbase详解,hbase配置详解,hbase基本命令,hbase 基本操作,hbase数据模型等服务器相关知识,网友希望可以进行参考
HBase基本数据操作详解,HBase数据操作详解
引言 本文档参考最新(截止2014年7月16日)的官方Ref Guide、Developer API编写。 所有代码均基于“hbase 0.96.2-hadoop2”版本编写,均实测通过。概述 对于建表,和RDBMS类似,HBase也有namespace的概念,可以指定表空间创建表,也可以直接创建表,进入default表空间。 对于数据操作,HBase支持四类主要的数据操作,分别是:
- Put:增加一行,修改一行;
- Delete:删除一行,删除指定列族,删除指定column的多个版本,删除指定column的制定版本等;
- Get:获取指定行的所有信息,获取指定行和指定列族的所有colunm,获取指定column,获取指定column的几个版本,获取指定column的指定版本等;
- Scan:获取所有行,获取指定行键范围的行,获取从某行开始的几行,获取满足过滤条件的行等。
目录 1.命名空间Namespace 2.创建表 3.删除表 4.修改表 5.新增、更新数据Put 6.删除数据Delete 7.获取单行Get 8.获取多行Scan
1. 命名空间Namespace
在关系数据库系统中,命名空间namespace指的是一个表的逻辑分组,同一组中的表有类似的用途。命名空间的概念为即将到来的多租户特性打下基础:
- 配额管理(Quota Management (HBASE-8410)):限制一个namespace可以使用的资源,资源包括region和table等;
- 命名空间安全管理(Namespace Security Administration (HBASE-9206)):提供了另一个层面的多租户安全管理;
- Region服务器组(Region server groups (HBASE-6721)):一个命名空间或一张表,可以被固定到一组regionservers上,从而保证了数据隔离性。
1.1.命名空间管理 命名空间可以被创建、移除、修改。 表和命名空间的隶属关系在在创建表时决定,通过以下格式指定: <namespace>:<table>
Example:hbase shell中创建命名空间、创建命名空间中的表、移除命名空间、修改命名空间
<span style="background-color: rgb(238, 238, 238);">#Create a namespace
</span><strong><span style="color: rgb(255, 0, 0); background-color: rgb(255, 255, 0);">create_namespace</span></strong><span style="background-color: rgb(238, 238, 238);"> 'my_ns'
</span><span style="background-color: rgb(238, 238, 238);">#create my_table in my_ns namespace
create </span><span style="background-color: rgb(255, 255, 0);">'<span style="color: rgb(255, 0, 0);"><strong>my_ns:</strong></span></span><span style="background-color: rgb(238, 238, 238);">my_table', 'fam'
</span><span style="background-color: rgb(238, 238, 238);">#drop namespace
</span><strong><span style="color: rgb(255, 0, 0); background-color: rgb(255, 255, 0);">drop_namespace</span></strong><span style="background-color: rgb(238, 238, 238);"> 'my_ns'
</span><span style="background-color: rgb(238, 238, 238);">#alter namespace
</span><strong><span style="color: rgb(255, 0, 0); background-color: rgb(255, 255, 0);">alter_namespace</span></strong><span style="background-color: rgb(238, 238, 238);"> 'my_ns', {METHOD => 'set', 'PROPERTY_NAME' => 'PROPERTY_VALUE'}
</span>
1.2. 预定义的命名空间 有两个系统内置的预定义命名空间:
- hbase:系统命名空间,用于包含hbase的内部表
- default:所有未指定命名空间的表都自动进入该命名空间
#namespace=foo and table qualifier=bar create 'foo:bar', 'fam' #namespace=default and table qualifier=bar create 'bar', 'fam'
2.创建表 废话不多说,直接上样板代码,代码后再说明注意事项和知识点:
Configuration conf = HBaseConfiguration.create(); HBaseAdmin admin = new HBaseAdmin(conf); //create namespace named "my_ns" admin.createNamespace(NamespaceDescriptor.create("my_ns").build()); //create tableDesc, with namespace name "my_ns" and table name "mytable" HTableDescriptor tableDesc = new HTableDescriptor(TableName.valueOf("my_ns:mytable")); tableDesc.setDurability(Durability.SYNC_WAL);
//add a column family "mycf" HColumnDescriptor hcd = new HColumnDescriptor("mycf"); tableDesc.addFamily(hcd); admin.createTable(tableDesc); admin.close();
关键知识点:
3.删除表 删除表没创建表那么多学问,直接上代码: Configuration conf = HBaseConfiguration.create(); HBaseAdmin admin = new HBaseAdmin(conf); String tablename = "my_ns:mytable"; if(admin.tableExists(tablename)) { try { admin.disableTable(tablename); &nb

