HBase建立在Hadoop檔案系統(HDFS)之上的分散式、面向列的資料庫。
畢竟HBase是抄的Google的,因此,會有和Goolge的技術有一些對應關係:
- HBase作為Google Bigtable的開源實現
- Google Bigtable利用GFS作為其檔案儲存系統類似,則HBase利用Hadoop HDFS作為其檔案儲存系統
- Google通過執行MapReduce來處理Bigtable中的海量資料,同樣,HBase利用Hadoop MapReduce來處理HBase中的海量資料
- Google Bigtable利用Chubby作為協同服務,HBase利用Zookeeper作為對應。
安裝
下載http://apache.claz.org/hbase/2.0.1/並解壓:
tar xfz FILE
cd FILE
複製程式碼
設定配置
配置檔案在conf/hbase-site.xml內,貼上內容:
<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///User/lcj/hbase</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/User/lcj/testuser/zookeeper</value>
</property>
</configuration>
複製程式碼
到其中即可。其中的最後一級別目錄,無需自己建立,Hbase會自動建立的。
設定環境變數
在你啟動HBase之前,需要先設定JAVA_HOME
環境變數。HBase提供了一箇中心機制 conf/hbase-env.sh,編輯此檔案,取消註釋以下行JAVA_HOME
,並將其設定為您的作業系統的適當位置。如果是MAC的話,可以使用$(/usr/libexec/java_home)
來查詢即可。
export JAVA_HOME=$(/usr/libexec/java_home)
複製程式碼
然後,啟動HBase:
conf/hbase-env.sh
複製程式碼
應該可以看到如下輸出:
running master, logging to /Users/lcj/Downloads/hbase-2.0.1/bin/../logs/hbase-lcj-master-july.local.out
複製程式碼
執行命令:
jps
複製程式碼
看到
37004 HMaster
複製程式碼
這說明HBase已經啟動。要是看不到,請看troubleshooting一節。
##驗證
使用HBase shell來驗證(啟動起來,還是有點慢,需要耐心):
./bin/hbase shell
複製程式碼
建立一個表。使用該“create”命令來建立一個新的表。您必須指定表名稱和ColumnFamily名稱:
create `test`, `cf`
複製程式碼
列出關於您的表的資訊,通過使用“list”命令來實現:
list `test`
複製程式碼
把資料放到你的表中
put `test`, `row1`, `cf:a`, `value1`
put `test`, `row2`, `cf:b`, `value2`
put `test`, `row3`, `cf:c`, `value3`
複製程式碼
一次掃描表中的所有資料
scan `test`
複製程式碼
獲取一行的資料:
get `test`, `row1`
複製程式碼
刪除表:
drop `test`
停止服務:
./bin/stop-hbase.sh
複製程式碼
trouble shooting :
- 要是啟動hbase失敗,它並不會在命令列提示,而是在hbase-lcj-master-july.local.log內輸出錯誤訊息,因此需要留意此檔案內的錯誤。比如我曾經把conf/hbase-site.xml內的目錄配錯,導致hbase啟動不了。
查詢ip addr本地的方法:
ifconfig | grep "inet " | grep -Fv 127.0.0.1 | awk `{print $2}`
複製程式碼
錯誤的處理:
zookeeper.ClientCnxn: Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL
複製程式碼
評價:這個安裝的方法,真的是一堆問題,放棄。!