Apache Hbase 快速入門
本文節選自《Netkiller Database 手札》
第 62 章 Apache Hbase
目錄
- 62.1. 安裝 Apache Hbase
-
- 62.1.1. 單機安裝
- 62.2. Hbase Shell
- 62.3. Web UI
- 62.4. 配置 Apache Hbase
-
- 62.4.1. hbase-env.sh
- 62.5. FAQ
-
- 62.5.1. HBaseConfTool : Unsupported major.minor version 51.0
- 62.5.2. ignoring option PermSize=128m; support was removed in 8.0
62.1. 安裝 Apache Hbase
注意:Apache Hbase 不能使用 OpenJDK 啟動,需要去 Oracle 網站下載 Server JRE
62.1.1. 單機安裝
如果你是第一次安裝Hbase,建議你從單機安裝開始,這樣成功率比較高,不會受挫。Hbase 不比關係型資料庫複雜,只是安裝比較麻煩,一旦安裝號使用起來還是很容易上手的,請直接貼上複製下面的命令即可完成安裝:
cd /usr/local/src wget http://mirrors.hust.edu.cn/apache/hbase/stable/hbase-1.2.6-bin.tar.gz tar zxf hbase-1.2.6-bin.tar.gz cp hbase-1.2.6/conf/hbase-site.xml{,.original} mv hbase-1.2.6 /srv/apache-hbase-1.2.6 ln -s /srv/apache-hbase-1.2.6 /srv/apache-hbase cp /srv/apache-hbase/conf/hbase-env.sh{,.original} cat > /srv/apache-hbase/conf/hbase-env.sh <<EOF export JAVA_HOME=/srv/java #export HBASE_CLASSPATH= export HBASE_MANAGES_ZK=true EOF cat > /srv/hbase/conf/hbase-site.xml <<EOF <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>hbase.rootdir</name> <value>file:///tmp/hbase-${user.name}</value> </property> </configuration> EOF
啟動 Apache Hbase
/srv/apache-hbase/bin/start-hbase.sh
進入 Hbase shell
/srv/apache-hbase/bin/hbase shell
62.2. Hbase Shell
安裝完Apache hbase啟動後就可以進入 hbase shell了,hbase shell 是與Hbase互動的介面。
首先我們做幾個基本操作,例如建立表,寫入資料,讀取資料等等,你會發現Hbase被神話了,操作其實沒有那麼複雜,遠沒有關係型資料庫複雜。
[root@localhost bin]# hbase shell 2017-06-27 21:07:35,524 WARN [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable HBase Shell; enter 'help<RETURN>' for list of supported commands. Type "exit<RETURN>" to leave the HBase Shell Version 1.2.6, rUnknown, Mon May 29 02:25:32 CDT 2017 hbase(main):001:0>
建立一個名為 t1 的表,使用預設名稱空間 namespace=default,這個表有一個column family 為 f1。後面會解釋什麼是 column family,這裡你只要對著操作就可以了。
hbase(main):002:0> create 't1', 'f1'
0 row(s) in 1.2190 seconds
=> Hbase::Table - t1
向t1表插入資料欄位名(key)是r1,資料值 value 是 ‘value’
hbase(main):014:0> put 't1', 'r1', 'f1', 'value'
0 row(s) in 0.0060 seconds
獲取表 t1 ,欄位名(key)為 r1 的資料
hbase(main):032:0> get 't1', 'r1'
COLUMN CELL
f1: timestamp=1498613275013, value=value
1 row(s) in 0.0240 seconds
掃描表相當於 select * from t1
hbase(main):034:0> scan 't1'
ROW COLUMN+CELL
r1 column=f1:, timestamp=1498613275013, value=value
1 row(s) in 0.0140 seconds
刪除表,刪除表之前需要先禁用該表,然後使用drop命令刪除。
hbase(main):036:0> disable 't1'
0 row(s) in 2.2460 seconds
hbase(main):037:0> drop 't1'
0 row(s) in 1.2310 seconds
hbase(main):038:0>
退出 Hbase shell
hbase(main):038:0> exit
[root@localhost bin]#
62.3. Web UI
除了 Web Shell Hbase 還提供了 Web UI 地址是:
http://localhost:16010/master-status
請確保你的防火牆放行了 16010 埠
[root@localhost conf]# iptables-save | grep 16010
-A INPUT -p tcp -m state --state NEW -m tcp --dport 16010 -j ACCEPT
62.4. 配置 Apache Hbase
62.4.1. hbase-env.sh
環境變數配置檔案
HBASE_MANAGES_ZK=true 僅用於單機執行,true表示不使用 Zookeeper
62.5. FAQ
62.5.1. HBaseConfTool : Unsupported major.minor version 51.0
錯誤提示
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/hadoop/hbase/util/HBaseConfTool : Unsupported major.minor version 51.0
解決方案,Hbase 不支援 OpenJDK 更換 Oracle Server JRE 後可以解決。
62.5.2. ignoring option PermSize=128m; support was removed in 8.0
jvm 1.8 之後不再支援PermSize和MaxPermSize選項
[root@localhost hbase]# bin/start-hbase.sh
starting master, logging to /srv/hbase/bin/../logs/hbase-root-master-localhost.localdomain.out
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
解決方案:"-server -Xms2048m -Xmx4096m"