Apache Phoenixのインストール手順

Apache Phoenixは、HBase上でSQLクエリを可能にするレイヤーを提供し、NoSQLデータベースであるHBaseをリレーショナルデータベースのように扱うことを可能にします。ここでは、PhoenixとHBaseを連携させるための基本的なインストールと設定の手順を解説します。

1. Apache Phoenixバイナリの準備と配置

まず、Apache Phoenixのバイナリパッケージをダウンロードし、システム上の任意のディレクトリに展開します。一般的な配置場所として、/usr/local/ディレクトリ以下にphoenixという名前で配置する例を示します。

# 例: ダウンロードしたアーカイブ(例: apache-phoenix-4.13.0-HBase-1.3-bin.tar.gz)をサーバーにアップロード
# その後、/usr/local/ へ展開
tar -zxvf apache-phoenix-4.13.0-HBase-1.3-bin.tar.gz -C /usr/local/

# 展開されたディレクトリ名を簡潔にするため、'phoenix' にリネーム
mv /usr/local/apache-phoenix-4.13.0-HBase-1.3-bin /usr/local/phoenix

上記コマンド例のバージョン番号(4.13.0-HBase-1.3)は、お使いのPhoenixおよびHBaseのバージョンに合わせて適宜変更してください。

2. HBaseライブラリへのPhoenix JARファイルの展開

PhoenixがHBaseと連携して動作するためには、PhoenixのサーバーサイドコンポーネントをHBaseのクラスパスに追加する必要があります。これにより、HBaseのリージョンサーバーがPhoenixのデータモデルとクエリ処理を理解し、実行できるようになります。

# PhoenixサーバーJARファイルをHBaseのlibディレクトリにコピー
cp /usr/local/phoenix/phoenix-4.13.0-HBase-1.3-server.jar /usr/local/hbase/lib/

# PhoenixコアJARファイルもHBaseのlibディレクトリにコピー(一部のバージョンや設定で必要となる場合があります)
cp /usr/local/phoenix/phoenix-core-4.13.0-HBase-1.3.jar /usr/local/hbase/lib/

これらのJARファイルは、HBaseクラスタ内のすべてのHBaseリージョンサーバーノードに配置する必要があります。

3. HBaseサービスの再起動

HBaseのlibディレクトリに新しいJARファイルを追加した後は、HBaseクラスタを再起動して、これらの変更をHBaseサービスに反映させる必要があります。

# HBaseを停止します
/usr/local/hbase/bin/stop-hbase.sh

# HBaseを開始します
/usr/local/hbase/bin/start-hbase.sh

クラスタ環境の場合、すべてのHBaseサービス(MasterとRegionServer)が適切に再起動されたことを確認してください。

4. Phoenix接続の検証

最後に、Phoenixのコマンドラインツールsqlline.pyを使用して、HBaseとの接続が正常に確立されているかを確認します。

/usr/local/phoenix/bin/sqlline.py hadoop1  # 'hadoop1' はHBaseが動作しているホスト名またはZooKeeperクォーラムを指定します

接続が成功すると、以下のような出力が表示されます。途中でSLF4Jに関する警告が表示されることがありますが、通常は機能上の問題はありません。

Setting property: [incremental, false]
Setting property: [isolation, TRANSACTION_READ_COMMITTED]
issuing: !connect jdbc:phoenix:hadoop1 none none org.apache.phoenix.jdbc.PhoenixDriver
Connecting to jdbc:phoenix:hadoop1
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/local/phoenix/phoenix-4.13.0-HBase-1.3-client.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/local/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
17/11/16 11:09:37 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Connected to: Phoenix (version 4.13)
Driver: PhoenixEmbeddedDriver (version 4.13)
Autocommit status: true
Transaction isolation: TRANSACTION_READ_COMMITTED
Building list of tables and columns for tab-completion (set fastconnect to true to skip)...
92/92 (100%) Done
Done
sqlline version 1.2.0
0: jdbc:phoenix:hadoop1> !tables
+------------+--------------+-------------+---------------+----------+------------+----------------------------+-----------------+
| TABLE_CAT  | TABLE_SCHEM  | TABLE_NAME  |  TABLE_TYPE   | REMARKS  | TYPE_NAME  | SELF_REFERENCING_COL_NAME  | REF_GENERATION  |
+------------+--------------+-------------+---------------+----------+------------+----------------------------+-----------------+
|            | SYSTEM       | CATALOG     | SYSTEM TABLE  |          |            |                            |                 |
|            | SYSTEM       | FUNCTION    | SYSTEM TABLE  |          |            |                            |                 |
|            | SYSTEM       | SEQUENCE    | SYSTEM TABLE  |          |            |                            |                 |
|            | SYSTEM       | STATS       | SYSTEM TABLE  |          |            |                            |                 |
+------------+--------------+-------------+---------------+----------+------------+----------------------------+-----------------+

上記の出力のように、!tablesコマンドを実行してPhoenixのシステムテーブル(例: SYSTEM.CATALOG)が表示されれば、PhoenixとHBaseの連携は正しく設定されています。sqlline.pyセッションを終了するには、Ctrl+Dを押してください。

タグ: Apache Phoenix Apache HBase SQL-on-HBase Big Data

9月24日 00:49 投稿