Hbase的安裝部署及基本語法
Hbase的安裝部署
1、前提條件
1)hadoop環境 啟動相關的Hadoop程序
2)zookeeper環境 啟動zookeeper
2、安裝Hbase
解壓tar -zxf hbase-0.98.6-cdh5.3.6.tar.gz -C /opt/modules/cdh
##配置hbase-env.sh
export HBASE_MANAGES_ZK=false //124行
export JAVA_HOME=/opt/modules/jdk1.7.0_67 //29行
##配置hbase-site.xml
<property>
<name>hbase.rootdir</name>
<value>hdfs://[hostname]:8020/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>[hostname]</value>
</property>
#### regionservers檔案配置
[hostname]
3、啟動Hbase
在${HOME_Hbase}目錄下:
方式一:單獨啟動
bin/hbase-daemon.sh start master
bin/hbase-daemon.sh start regionserver
方式二:同時啟動
bin/start-hbase.sh
停止時將start對應修改為stop即可
解決hbase shell中無法退格的問題:
xshell :
檔案-屬性-終端-鍵盤-兩個都選擇ASCII 127
CRT:
選項-會話選項-模擬-終端-選擇linux
選項-會話選項-對映鍵
基本語法
在${HOME_Hbase}目錄下:
$ bin/hbase version //檢視hbase的版本
$ bin/hbase shell //連線Hbase
連線hbase之後,Hbase的常用命令
如何建立名稱空間:
> create_namespace '名稱空間名' //建立名稱空間
兩種建立表的方式:
>create ‘名稱空間:表名’,’列簇名1’,’列簇名2’,’.........’ //建立表格(預設版本數為1)
查看錶結構
>desc ‘名稱空間:表名’
>create '名稱空間:表名’,{NAME=>'列簇名',VERSIONS=>版本個數},{.......} //建立表格(自定義版本數)
查看錶結構
scan 掃描表
> scan '名稱空間:表名' 掃描全表
> scan '名稱空間:表名' ,{COLUMNS => '列簇:列名'} 掃描該表的該列簇下的所有資料
> scan '名稱空間:表名' ,{COLUMNS => '列簇:列名'} 掃描該表的該列簇下該列名的所有資料
> scan '名稱空間:表名' ,{COLUMNS => ['列簇:列名','列簇:列名' ]} 掃描多列資料
> scan '名稱空間:表名' ,{COLUMNS => ‘列簇’,STARTROW=>'rowkey值'} 指定掃描的起始rowkey
> scan '名稱空間:表名' ,{COLUMNS => ‘列簇’,STARTROW=>'rowkey值',STOPROW=>'rowkey值’} 給定掃描資料rowkey的範圍,預設是左閉右開
> scan '名稱空間:表名' ,{LIMIT=>n} 只掃描設定n(正整數)條資料
> scan '名稱空間:表名' ,{COLUMNS => '列簇:列名', LIMIT=>n} 組合使用
get 獲取資料
get獲取的某條資料
scan獲取的是一個範圍內的資料
> get '名稱空間:表名' ,'rowkey值' 獲取某條資料的cell
> get '名稱空間:表名' ,'rowkey值', {COLUMN => '列簇:列名'} 獲取某條資料某個列的cell
>get '名稱空間:表名', 'rowkey值', ['列簇:列名', '列簇:列名'] 獲取指定列的cell
刪除資料
刪除命令並不是立即從hdfs上刪除資料,刪除命令只是對對應的這些cell打上了‘刪除’標籤
打上‘刪除’標籤的cell不能直接scan或get獲取資料
在hbase進行大合併機制時才會徹底從hbase中刪除
> delete '名稱空間:表名','rowkey值' ,'列簇:列名' 刪除某個cell內的所有的版本
> deleteall '名稱空間:表名', 'rowkey值', '列簇:列名' 也看可以刪除某條資料的某個cell所有版本
> deleteall '名稱空間:表名', 'rowkey值' 刪除整條資料
> truncate 'xxx' 清空一張表
version 版本
優點:版本就是儲存了value值的多個歷史記錄,客戶端可以根據需求獲取歷史記錄
建立表時預設的版本數是1個 ,多個版本時scan或get時預設顯示最新版本
>create '名稱空間:表名’,{NAME=>'列簇名',VERSIONS=>版本個數},{.......} //建立表格(自定義版本數)
新增資料
>Put ‘名稱空間:表名’,’rowkey值’,’列簇:列名’,’cell值’
> scan '名稱空間:表名' 預設顯示最新的值
> scan '名稱空間:表名' , { VERSIONS=> n} 指定顯示最新的n個cell的版本
> get '名稱空間:表名',’rowkey值’',{COLUMN =>'列簇:列名', TIMESTAMP=>時間戳} //獲取指定版本的cell的值
刪除表
> disable '名稱空間:表名' 先禁用
> drop '名稱空間:表名' 再刪除
> count '名稱空間:表名' 計算某張表有多少行資料