進入hbase 控制台
hbase shell
在HBase插入數據時,先輸入數據的格式為rowkey => info => column => value
rowkey:行鍵,唯一且不重復
info:列族(數量一般不超過3個)
column:列(在列族下,一個列族下可有許多個列)
value:值
timestamp:時間戳
cell:單元格
表的基本結構如圖::

二、HBase的常用命令行
1.查看服務器狀態
status 'hd1-1'
2.查看當前用戶/幫助
whoami/help
3.查看當前所有的表/命名空間
list
list_namespace
4.創建一張表(一張表名為user、有兩個列族分別為info1和info2)
create 'user','info1','info2'
5.掃描一張表
scan ‘user'
6.向表中插入數據(向user表的001行鍵、info列族中插入名為name的列,值為Dilireba)
put 'user','001','info1:name','Dilireba'
7.篩選數據(startrow、stoprow)
scan 'user',{STARTROW => '001'}
8.查看表結構
describe 'user'
9.更變表信息,修改版本號
alter 'user',{NAME => 'info1',VERSIONS => '3'}
注釋:版本號的意思是一個數據可以存在的版本數,比如user表的info1列族版本versions=3,代表該列族下的數據最多可以存在三個版本,如info1:name=Dilireba,然后在info1:name插入新數據為Yangmi,查看時顯示為Yangmi,但是Dilireba仍然存在,可以通過時間戳來查看。
10.刪除一張表(先棄用表,在刪除表)/命名空間
disable 'user'
drop 'user' /
drop '命名空間'
11.刪除一列數據/一列族數據
delete 'user','001','info:name'
delete 'user','001'
12.清空表
truncate 'user'
13.查看表的行數(rowkey的數量)
count 'user'
14.查看指定的rowkey的值
get 'user','001'
只讀取一條信息(用於查看表結構用)
scan 'mes_orgdata:pmaunew', {'LIMIT' => 1}
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
