概要

HBaseにはRESTで操作する機能が用意されている。通常はライブラリに頼るのでこれを直接使うことはあまりなさそうだけど、嗜みとして(あとRESTとcurlの練習代わりに)触ってみる。

CDH3使用。ところどころcurlでリクエスト。

@CretedDate 2012/03/26
@Versions CDH3u3, HBase0.90.4

導入

とりあえずCDH3を利用。動作はローカルモード。

こんな感じでインストールした。

起動

以下のコマンドで起動。

$ hbase rest start

上記コマンドは内部的にはorg.apache.hadoop.hbase.rest.Mainを叩いている。

8080ポートで立ち上がる。ポートを指定する場合は下記のような感じ。

$ hbase rest start -p 8089

試しに接続してみると、テーブル一覧が表示される。

http://localhost:8080/

以下、いろいろ情報を取得してみる

ドキュメントはこの辺を参照した。

レスポンスの形式

ルートディレクトリにリクエストするとテーブル一覧が表示される。

http://localhost:8080/

table1
table2

この時、ヘッダに「Acctpt: text/xml」を指定するとXMLで結果が返る。

$ curl -H "Accept: text/xml" http://localhost:8080/

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><TableList><table name="table1"/><table name="table2"/></TableList>

JSONを指定する場合はこんな感じ。

$ curl -H "Accept: application/json" http://localhost:8080/

バージョン情報

http://sancce:8080/version

rest 0.0.2 [JVM: Oracle Corporation 1.7.0-21.0-b17] [OS: Linux 3.1.0-7.fc16.x86_64 amd64] [Server: jetty/6.1.26] [Jersey: 1.4]

テーブルの作成

column1というカラムを持った、table1というテーブルを作ってみる。

$ curl -X PUT -H "Content-Type: application/json" -d '{"@name":"table1", "ColumnSchema":[{"name":"column1"}]}' http://localhost:8080/table1/schema

テーブルの削除

$ curl -X DELETE http://localhost:8080/table1/schema

スキーマの詳細

「/テーブル名/schema」でスキーマの詳細が表示される。

http://localhost:8080/table1/schema

{ NAME=> 'table1', IS_META => 'false', IS_ROOT => 'false', COLUMNS => [ { NAME => 'column1', BLOCKSIZE => '65536', BLOOMFILTER => 'NONE', BLOCKCACHE => 'true', COMPRESSION => 'NONE', VERSIONS => '3', REPLICATION_SCOPE => '0', TTL => '2147483647', IN_MEMORY => 'false' } ] }

データの登録

「row=row1, family=column1, qualifier=q1, value=value1」みたいなデータを登録する

データはbase64エンコードをかけて送る。

$ echo "value1" | base64
dmFsdWUxCg==

$ curl -X PUT -H "Content-Type: application/json" -d '{"Row":{"@key":"$KEY","Cell":{"@column":"Y$COLUMN","$":"value"} } }' http://localhost:8080/table1/row1/column1:q1

データの取得

$ curl http://localhost:8080/table1/row1/column1:q1

value1