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
10001PIKACHU4061030

準備

用意するもの

  • 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

参照