天天看點

Hbase基礎(二):HBase 快速入門(HBase安裝與Shell操作)

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的某一列資料:

繼續閱讀