發表文章

目前顯示的是 六月, 2015的文章

hbase shell (2)

在hbase中, 有些時候我們須查詢某一欄位的數值是否更新,
在這個情況下, 應該如何利用hbase shell的方式查詢呢?
如果我們確知row-key的名稱, 我們可以利用get的方式執行:

hbase(main):005:0> get 'UserTable', 'B8:8D:12:1A:59:76'
[...]
10 row(s) in 0.4240 seconds

甚至指定欄位, 例如:
hbase(main):008:0> get 'UserTable', 'B8:8D:12:1A:59:76', {COLUMN=>['x', 'y']}
COLUMN                CELL
 x:                   timestamp=1434519293316, value=12.847539358614743
 y:                   timestamp=1434519293316, value=28.36858703324554
2 row(s) in 0.0100 seconds

然而, 若是row-key為自動產生 (由寫入程式決定),  或是, 不知道row-key的資訊 (例如: 使用者的MAC位址), 應該如何查詢呢?

[shell script] 重新啟動hbase叢集

對於hbase而言, 若是發生無法挽救的錯誤,
導致需要重新啟動hbase叢集, 一直以來都是麻煩的事情...
尤其, 這還牽涉到HDFS的資料同步,
因此, 若是要重新格式化hbase叢集需要經過以下步驟:
1. 關閉hbase (注意HMaster, 可能會沒有回應...)
2. 關閉hadoop
3. 清除各節點上hbase和hadoop的資料
4. 格式化hadoop namenode
5. 啟動hadoop
6. 啟動hbase

由於目前所使用的雲端環境不是非常穩定,
有時會所有虛擬機同時重新啟動, 導致hbase叢集也必須重啟...
因此, 我在hbase master節點上寫了一支shell script,
把重啟hbase叢集自動化執行