Hbase:Javaからの利用
出典: LunaBiblos
Software > DataBase > KeyValueストア > HBaseの利用 > Hbase:Javaからの利用
目次 |
概要
JavaからHbaseへの接続方法を解説します。なおEclipseの詳細な解説などは省きます。
今回利用した環境
- Windows Vista SP2 32bit
- Java 1.6.11 / Eclipse 3.4.1
- Hadoop 0.20.1 / Hbase 0.20.0
今回利用したTable
- Table名:Pokemon
項目1~3はColumnFamilyのみ。項目4、5はColumnFamily+Columnです。
| KEY/ROW | 項目1:NAME | 項目2:HEIGHT | 項目3:WEIGHT | 項目4:Skill:Attack | 項目5:Skill:Defense |
|---|---|---|---|---|---|
| 10001 | PIKACHU | 40 | 6 | 10 | 30 |
準備
用意するもの
- Java 1.6.x以上
- 利用するHbase Clusterで利用されているhbase-site.xml
- 下記のJAR。JARはそれぞれHadoopやHbaseをInstallしたServerにあります。(JARのVerはHadoop 0.20.1/Hbase 0.20.0の物です)
- Hadoop/Hbase Clusterの構築に従ってInstallした場合、Pathは下記の様になっていると思います。
- ${HADOOP_HOME} = 「/home/${user}/hadoop/」
- ${HBASE_HOME} = 「/home/${user}/hbase/」
| JAR名 | 場所 |
|---|---|
| hadoop-0.20.1-core.jar | ${HADOOP_HOME} |
| hbase-0.20.0.jar | ${HBASE_HOME} |
| commons-logging-1.0.4.jar | ${HBASE_HOME}/lib/ |
| log4j-1.2.15.jar | ${HBASE_HOME}/lib/ |
| zookeeper-r785019-hbase-1329.jar | ${HBASE_HOME}/lib/ |
Hbase0.20.1を利用している場合、Client側もhbase-0.20.1.jarを利用してください。0.20.0と0.20.1では互換性がない様です
接続方法
まず上記のJARをclassPathに追加します。続いて接続用hbase-site.xmlを用意しますが、単独環境か分散環境かで少し手順が違います。
単独環境への接続
接続先のServerなどから[hbase-default.xml]をDownloadし、そのファイルの名前を「hbase-site.xml」に変更してください。
続いて「hbase-site.xml」中の下記の値を変更します。編集を終えたらこのXMLを任意の場所に保存します。(今回はC直下に配置)
| hbase.zookeeper.quorum | ${単独環境Serverのホスト名orIP} |
疑似或いは完全分散環境への接続
Clusterで利用されているhbase-site.xmlをダウンロードしてください。 そしてこのhbase-site.xmlをClient側にも設置します。(今回はC直下に配置)
SourceCode
package hbaseConnect;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.util.Bytes;
public class PokemonGet{
public static void main(String[] args) throws Exception {
// 設定ファイルを用いてHbaseへ接続
HBaseConfiguration conf = new HBaseConfiguration();
conf.addResource(new Path("C:\\hbase-site.xml"));
HBaseAdmin admin = new HBaseAdmin(conf);
// 接続情報を用いてTable「Pokemon」からDataを取得
HTable hTable = new HTable(conf, "Pokemon");
// 取得した「Pokemon」からKey「10001」のDataを取得する
Get g = new Get(Bytes.toBytes("10001"));
Result r = hTable.get(g);
// 取得したKey「10001」から項目「NAME」のDataを取得する
byte[] value = r.getValue(Bytes.toBytes("NAME"));
String valueStr = Bytes.toString(value);
// 取得したKey「10001」から項目「Skill:Attack」のDataを取得する
byte[] value2 = r.getValue(Bytes.toBytes("Skill"),Bytes.toBytes("Attack"));
String valueStr2 = Bytes.toString(value2);
// 取得した文字列を出力する
System.out.println(valueStr + " ATK:" + valueStr2);
}
}
実行結果
※最初にZooKeeperのLogが表示されます。 PIKACHU ATK:10
