HBase的命令列工具,最簡單的介面,適合HBase管理使用,可以使用shell命令來查詢HBase中資料的詳細情況。安裝完HBase之後,啟動hadoop叢集(利用hdfs儲存),啟動zookeeper,使用start-hbase.sh命令開啟hbase服務,最後在shell中執行hbase shell就可以進入命令列介面
Habse shell的help對語法的介紹很全,hbase shell 的操作分為 10類,j本文只介紹前4類常用的,分別是:gerneral,ddl,namespace,dml
1. Gerneral
status:查詢當前伺服器狀態。
![Hbase shell的基本操作](https://i.iter01.com/images/17658776cc9924dbfe6ae55898dc8769e976b068df71aa0c4b6865a3c5a130d5.png)
Version:檢視當前版本
![Hbase shell的基本操作](https://i.iter01.com/images/58a8ea8347eef31e3c38ff5a14ca0e06d6e4f2bec85c025d42c42c057669bd9d.png)
Whoami:查詢當前hbase使用者
![Hbase shell的基本操作](https://i.iter01.com/images/dcf7039989cd4da639d072ac686093af62a6aaec37a2e3e5c8f07a3d1e869a4b.png)
Table_help:表的引用,通過獲取一張表的引用來對這張表進行新增刪除資料等等操作,現在不推薦使用
2. DDL
Create:建立一個表
###建立一個表名為qianfeng,cf為列族
create 'qianfeng','cf'
![Hbase shell的基本操作](https://i.iter01.com/images/7d0c249c58f4d3854373947ed4d9492fb4eecca31de3f611598b49bef21d1713.png)
list:列出HBase的所有表
![Hbase shell的基本操作](https://i.iter01.com/images/d19c72bc03f5e888b245f1a65e9cc9a6eb91c7a0f19722287de7b0d3c04c0c4e.png)
· disable:禁用一張表
· ##禁用表‘qianfeng’
· disable ‘qianfeng’
· is_disabled:表是否被禁用
· ##驗證表‘qianfeng’是否被禁用
· is_disabled ‘qianfeng’
·
![Hbase shell的基本操作](https://i.iter01.com/images/8d1de6e52ec504f0ee82dba16cb897ecd2dd92d7f132af8fbf15490ba9269839.png)
· enable: 啟用一張表
· ##啟用表‘qianfeng’
· enable ‘qianfeng’
· is_enabled:表是否被啟用
· ##驗證表‘qianfeng’是否被啟用
· is_enabled ‘qianfeng’
·
![Hbase shell的基本操作](https://i.iter01.com/images/315c0a29467b7407e1cf81b512cd06a1ddaad03a101ae20a3b6c12ec42e39dc7.png)
· describe:檢視錶的描述
· ##檢視‘qianfeng’表的描述資訊
· describe ‘qianfeng’
·
![Hbase shell的基本操作](https://i.iter01.com/images/82b2b001e6a2be2b63d31e9349ce03aec81664c5f6372f9964c13b6b17e7efa2.png)
· alter:修改表的結構
· ##給表‘qianfeng’加入一個列族‘cf1’
· alter ‘qianfeng’,’cf1’
·
![Hbase shell的基本操作](https://i.iter01.com/images/2993fe3bb8419aa4d680d80473a674f13ecc90824ab3b36c78420f5f3ec226ae.png)
· exists:驗證表是否存在
· ##驗證表‘qianfeng’是否存在
· exists ‘qianfeng’
·
![Hbase shell的基本操作](https://i.iter01.com/images/32caa33fb20aa47184846546bddb2e9a0f25e2ddadc9f4b5c918fc179582ee54.png)
· drop:刪除表,表需先禁用,然後才能刪除
· ##刪除表‘qianfeng’
· disable ‘qianfeng’
· drop ‘qianfeng’
·
![Hbase shell的基本操作](https://i.iter01.com/images/d47a619d2501d56adb76aa2a520fcabe8e69981159035f73e05e958a64f06f92.png)
· disable_all:禁用多個表
drop_all:刪除多個表,表需先禁用,然後才能刪除
3. Namespace
create_namespace:建立名稱空間,相當於關係型資料庫裡建立一個資料庫
##建立一個名稱空間名為‘qf’,並新增屬性
create_namespace ‘qf’, {'PROPERTY_NAME'=>'PROPERTY_VALUE'}
alter_namespace:修改,新增,刪除名稱空間的屬性
##設定名稱空間qf的屬性
alter_namespace 'qf', {METHOD => 'set', 'PROPERTY_NAME' => 'PROPERTY_VALUE'}
##刪除名稱空間qf的屬性
alter_namespace 'qf', {METHOD => 'unset', NAME=>'PROPERTY_NAME'}
describe_namespace:獲取名稱空間的描述
##獲取名稱空間‘qf’的描述資訊
describe_namespace ‘qf’
![Hbase shell的基本操作](https://i.iter01.com/images/a95dbeca3416bbe8f1b6173b86bc09d270598e80ae363c5f8c45f5c24eaf308c.png)
drop_namespace:刪除名稱空間
##刪除名稱空間‘qf’
drop_namespace ‘qf’
list_namespace:檢視所有名稱空間
![Hbase shell的基本操作](https://i.iter01.com/images/91ed9ab6f92f9e6912e790acad880fa95df98a81c25c7ea53ee4f28bdb23417a.png)
list_namespace_tables:檢視名稱空間下的所有表
##檢視名稱空間‘ns1’下的所有表
list_namespace_tables ‘ns1’
![Hbase shell的基本操作](https://i.iter01.com/images/ff1838d45a3f9ad5ee600ddee2dcc6c8e14dcefe59b1eb5e636b7da899b0de4d.png)
4. DML
先在名稱空間‘qianfeng’(如果沒有這個名稱空間要先建立此名稱空間)下建立一張表test,列族為‘cf’作為測試用
create ‘qianfeng:test’,’cf’
put:新增cell(資料)
# #向名稱空間qianfeng下表test的rowkey為r1的列族下新增資料
put 'qianfeng:test','r1','cf:uname','zhangsan'
scan:掃描全表
scan ‘qianfeng:test’
![Hbase shell的基本操作](https://i.iter01.com/images/ca07d130fd2147adfa69dac969cfe50eb22e4a18278c0fd69fdd3b9aebfa84cd.png)
get:得到某一列或cell的資料。
##向名稱空間qianfeng下表test的rowkey為r1的列族下新增資料
put 'qianfeng:test','r1','cf:age','23'
##獲取列族cf下rowkey為r1的所有資料
get ‘qianfeng:test’,’r1’
![Hbase shell的基本操作](https://i.iter01.com/images/83203db948ce44884c142a92b636826b5693218de89471fa8853779f0a7ea1db.png)
##獲取列族cf下rowkey為r1,列名為uname的資料(獲取一個cell)
get 'qianfeng:test','r1','cf:uname'
![Hbase shell的基本操作](https://i.iter01.com/images/244196ff8a466032562aa726656daff24c5d9dbe18a0449afa65400c3c96e03e.png)
truncate:清空表,不用disable (只是清空資料)
##清空表‘qianfeng:test’
truncate ‘qianfeng:test’
![Hbase shell的基本操作](https://i.iter01.com/images/7e9e0bb00652b488ba5e0921a4fe18a12eb3070eff6b91bb797dbf8eda76c700.png)
檢視‘qianfeng’下所有的表
![Hbase shell的基本操作](https://i.iter01.com/images/6be080587a1fdc21cd68edad66f1abb763cb2b66ab60aa19dbb3fb8d776e885e.png)
以上為hbase shell指令碼的基礎操作,都應該熟練掌握。在掌握hbase shell指令碼的基礎上學習hbase 的java api,會顯得事半功倍。