ちょこちょこNoSQLをかじっていっていますが、今度はApache HBaseを使ってみようと思います。
Apache HBase
http://hbase.apache.org/
on HadoopなNoSQLですが、自分はHadoopについては素人。3年くらい前、0.20.Xとかいってた時期に、とりあえず入れてみてWordCountしたくらいの記憶しかありません。まあ、触っていないも同然。
これを機に、ちょっとはHadoop周りに詳しくなれるといいなぁ…。
とは言っても、仕事ではまず使わないんですけどね。
インストール
とりあえず、さわりということで。Getting Startedを見ながら。
*最初はCDH4を使おうとしたのですが、HBaseが起動しなかったのでやめました…
Quick Start/Getting Started
http://hbase.apache.org/book/quickstart.html
ダウンロードページから、現時点での最新版0.95.2をダウンロード。
自分は、「/usr/local/apache-hbase」ディレクトリ配下にインストールしました。
$ cd /usr/local/ $ sudo mkdir apache-hbase $ cd apache-hbase/ $ sudo cp [ダウンロードディレクトリ]/hbase-0.95.2-hadoop2-bin.tar.gz ./. $ sudo tar -zxvf hbase-0.95.2-hadoop2-bin.tar.gz $ sudo rm hbase-0.95.2-hadoop2-bin.tar.gz $ sudo chown -R [HBaseの起動ユーザ].[HBaseの起動ユーザ] hbase-0.95.2-hadoop2 $ sudo ln -s hbase-0.95.2-hadoop2 current
エイリアスを貼っているのは、あくまで自分の好みです。
いずれ擬似分散モードとしたいので、今はconf/hbase-site.xmlは無視して進めます。データが「/tmp」に保存されることも、よしとします。
.bashrcにPATHくらいは通しておきましょうか。
export HBASE_HOME=/usr/local/apache-hbase/current PATH=${HBASE_HOME}/bin:${PATH}
再評価。
$ . .bashrc
以降は、HBaseにPATHを通してあるものとして進めます。
HBaseの起動
以下のコマンドで、HBaseを起動します。
$ start-hbase.sh starting master, logging to /usr/local/apache-hbase/current/logs/hbase-[ユーザ名]-master-[ホスト名].out
ログファイルは、上記のコンソール出力されているファイルと同じディレクトリにある、
hbase-[ユーザ名]-master-ubuntu.log
HBase Shellを使う
それでは、チュートリアルに沿ってHBase Shellを使ってみましょう。
$ hbase shell
超重いんですけど(笑)。
あ、起動した。
$ hbase shell 2013-09-02 22:50:13,410 WARN [main] conf.Configuration: hadoop.native.lib is deprecated. Instead, use io.native.lib.available HBase Shell; enter 'help<RETURN>' for list of supported commands. Type "exit<RETURN>" to leave the HBase Shell Version 0.95.2-hadoop2, rUnknown, Thu Aug 15 13:22:42 PDT 2013 hbase(main):001:0>
このシェル、JRubyだそうですね。
まずは、テーブルとカラムファミリの作成。
hbase(main):001:0> create 'test', 'cf' 2013-09-02 22:53:02,395 WARN [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 0 row(s) in 10.3790 seconds => Hbase::Table - test
作成に、10秒かかってる…。
テーブル一覧。
hbase(main):002:0> list 'test' TABLE test 1 row(s) in 0.0980 seconds => #<#<Class:0x7d01b36a>:0x75a34889>
データの登録。
hbase(main):003:0> put 'test', 'row1', 'cf:a', 'value1' 0 row(s) in 0.0650 seconds hbase(main):004:0> put 'test', 'row2', 'cf:b', 'value2' 0 row(s) in 0.0050 seconds hbase(main):005:0> put 'test', 'row3', 'cf:c', 'value3' 0 row(s) in 0.0040 seconds
Scan。
hbase(main):006:0> scan 'test' ROW COLUMN+CELL row1 column=cf:a, timestamp=1378130074501, value=value1 row2 column=cf:b, timestamp=1378130081263, value=value2 row3 column=cf:c, timestamp=1378130088989, value=value3 3 row(s) in 0.0870 seconds
データの取得。
hbase(main):007:0> get 'test', 'row1' COLUMN CELL cf:a timestamp=1378130074501, value=value1 1 row(s) in 0.0260 seconds
テーブルの無効化。
hbase(main):008:0> disable 'test' 0 row(s) in 1.5360 seconds
テーブルの削除。
hbase(main):009:0> drop 'test' 0 row(s) in 0.2160 seconds
HBase Shellの終了。
hbase(main):010:0> exit
HBaseの終了
以下のコマンドで、HBaseを終了します。
$ stop-hbase.sh
stopping hbase.................
こんなところで。全体的に、自分のPCだとすごく非力な感じがするのですが、これからHadoopを擬似分散モードとかで動かせるかな…?