3.1 Hbase安裝前
3.1.1 啟動Zookeeper
首先保證Zookeeper叢集的正常部署,并啟動之:
3.1.2 啟動Hadoop
Hadoop叢集的正常部署并啟動:
3.1.3 HBase的解壓
解壓HBase到指定目錄:
3.2 HBase的安裝
3.2.1 HBase的配置
修改HBase對應的配置檔案。
1)HBase-env.sh修改内容: 可不用改 因為profile已經把JAVA_HOME設為全局了!
2)HBase-site.xml修改内容:
3)regionservers:
4)軟連接配接hadoop配置檔案到HBase:
3.2.2 分發HBase到其他節點
3.3 HBase服務的啟動
1.啟動方式1
提示:如果叢集之間的節點時間不同步,會導緻regionserver無法啟動,抛出ClockOutOfSyncException異常。
修複提示:
a、同步時間服務
請參看幫助文檔:《尚矽谷大資料技術之Hadoop入門》
b、屬性:hbase.master.maxclockskew設定更大的值
2.啟動方式2
對應的停止服務:
3.4 檢視HBase頁面
啟動成功後,可以通過“host:port”的方式來通路HBase管理頁面,例如:http://hadoop102:16010
使用hbase shell可以進入一個shell指令行界面!
4.1 其他操作
1.檢視叢集狀态
使用status可以檢視叢集狀态,預設為summary,可以選擇‘simple’和‘detailed’來檢視詳情。
2.檢視版本
3.檢視操作使用者及組資訊
4.檢視表操作資訊
5.檢視幫助資訊
6.檢視具體指令的幫助
注意引号是必須的!
4.2 表的操作
4.2.1. list
list後可以使用*等通配符來進行表的過濾!
4.2.2 create
建立表時,需要指定表名和列族名,而且至少需要指定一個列族,沒有列族的表是沒有任何意義的。
建立表時,還可以指定表的屬性,表的屬性需要指定在列族上!
格式:
create '表名', { NAME => '列族名1', 屬性名 => 屬性值}, {NAME => '列族名2', 屬性名 => 屬性值}, …
如果你隻需要建立列族,而不需要定義列族屬性,那麼可以采用以下快捷寫法:
create'表名','列族名1' ,'列族名2', …
4.2.3 desc
4.2.4 disable
停用表後,可以防止在對表做一些維護時,用戶端依然可以持續寫入資料到表。一般在删除表前,必須停用表。
在對表中的列族進行修改時,也需要停用表。
disable_all ‘正規表達式’ 可以使用正則來比對表名。
is_disabled 可以用來判斷表是否被停用。
4.2.5 enable
和停用表類似。enable ‘表名’用來啟用表,is_enabled ‘表名’用來判斷一個表是否被啟用。
enable_all ‘正規表達式’可以通過正則來過濾表,啟用複合條件的表。
4.2.6. exists
4.2.7. count
4.2.8. drop
删除表前,需要先disable表,否則會報錯。ERROR: Table xxx is enabled. Disable it first.
4.2.9 truncate
4.2.10 get_split
擷取表所對應的Region個數。每個表在一開始隻有一個region,之後記錄增多後,region會被自動拆分。
4.2.11 alter
alter指令可以修改表的屬性,通常是修改某個列族的屬性。
alter ‘表名’, ‘delete’ => ‘列族名’
4.3 資料操作
4.3.1 scan
scan指令可以按照rowkey的字典順序來周遊指定的表的資料。
scan ‘表名’:預設目前表的所有列族。
scan ‘表名’,{COLUMNS=> [‘列族:列名’],…} : 周遊表的指定列
scan '表名', { STARTROW => '起始行鍵', ENDROW => '結束行鍵' }:指定rowkey範圍。如果不指定,則會從表的開頭一直顯示到表的結尾。區間為左閉右開。
scan '表名', { LIMIT => 行數量}: 指定傳回的行的數量
scan '表名', {VERSIONS => 版本數}:傳回cell的多個版本
scan '表名', { TIMERANGE => [最小時間戳, 最大時間戳]}:指定時間戳範圍
注意:此區間是一個左閉右開的區間,是以傳回的結果包含最小時間戳的記錄,但是不包含最大時間戳記錄
scan '表名', { RAW => true, VERSIONS => 版本數}
顯示原始單元格記錄,在Hbase中,被删掉的記錄在HBase被删除掉的記錄并不會立即從磁盤上清除,而是先被打上墓碑标記,然後等待下次major compaction的時候再被删除掉。注意RAW參數必須和VERSIONS一起使用,但是不能和COLUMNS參數一起使用。
scan '表名', { FILTER => "過濾器"} and|or { FILTER => "過濾器"}: 使用過濾器掃描
4.3.2 put
put可以新增記錄還可以為記錄設定屬性。
put '表名', '行鍵', '列名', '值'
put '表名', '行鍵', '列名', '值',時間戳
put '表名', '行鍵', '列名', '值', { '屬性名' => '屬性值'}
put '表名', '行鍵', '列名', '值',時間戳, { '屬性名' =>'屬性值'}
4.3.3 get
get支援scan所支援的大部分屬性,如COLUMNS,TIMERANGE,VERSIONS,FILTER
4.3.4 delete
删除某rowkey的全部資料:
删除某rowkey的某一列資料: