Skip to content

필사 모드: Ubuntu Apache Phoenixインストール方法

日本語
0%
정확도 0%
💡 왼쪽 원문을 읽으면서 오른쪽에 따라 써보세요. Tab 키로 힌트를 받을 수 있습니다.
원문 렌더가 준비되기 전까지 텍스트 가이드로 표시합니다.

事前確認

PhoenixはHBase上で動作するため、HBaseが既にインストールされている必要がある。インストールは[このドキュメント](https://www.youngju.dev/blog/202302/hbase_fully_distributed_mode_install)を参照して行う。PhoenixはHBaseとのバージョン互換性が重要だ。以前インストールしたHBaseのバージョンは2.5.3だ。HBaseのバージョンを確認するには、HMaster Web UIにアクセスするとページ下部でHBaseバージョンを確認できる。

2.5.xバージョンのHBaseにはPhoenix Version 5.1.3をインストールする必要がある。その他のバージョンは[Phoenixダウンロードサイト](https://phoenix.apache.org/download.html)を参考に適切なバージョンを見つければよい。

Apache Phoenixのインストール方法

HBaseが構築された状態であれば、インストール方法は比較的簡単だ。すべてのサーバーで以下のコマンドでPhoenixバイナリをダウンロードしてuntarする。

wget https://dlcdn.apache.org/phoenix/phoenix-5.1.3/phoenix-hbase-2.5-5.1.3-bin.tar.gz

tar -zxvf phoenix-hbase-2.5-5.1.3-bin.tar.gz

その後、生成された`phoenix-hbase-2.5-5.1.3-bin`フォルダの`phoenix-server-hbase-2.5-5.1.3.jar`ファイルを、HMasterとRegionServerがインストールされたすべてのサーバーのlibディレクトリに配置する。

cd phoenix-hbase-2.5-5.1.3-bin

cp phoenix-server-hbase-2.5.jar /usr/local/hbase/lib/

cp phoenix-server-hbase-2.5-5.1.3.jar /usr/local/hbase/lib/

その後、HBaseを再起動する。

HBase再起動後

Phoenix sqlline.pyで接続する

[SQLLine manual](https://julianhyde.github.io/sqlline/manual.html)

phoenix-hbase-2.5-5.1.3-bin/binフォルダ内の`hbase-site.xml`ファイルを、接続したいHBaseのhbase-site.xmlに変更する。その後、以下のように実行するとPhoenixにJDBC経由で接続できる。

./sqlline.py

接続が成功すると、以下のようにHBaseテーブルにPhoenixが使用する様々なメタテーブルが作成されたことを確認できる。

stock_symbol.sqlの例を実行してみる

python sqlline.py latte01,latte02,latte03 ../examples/STOCK_SYMBOL.sql

SQLLineで`!tables`で照会すると、`STOCK_SYMBOL`というテーブルが作成されたことを確認できる。

CRUDの例

テーブルのスキーマを確認するためにdescribeを実行する。

0: jdbc:phoenix:> !describe STOCK_SYMBOL

+-----------+-------------+--------------+-------------+-----------+-----------+-------------+---------------+----------------+----------------+----------+---------+------------+---------------+------------------+-------------------+--------+

| TABLE_CAT | TABLE_SCHEM | TABLE_NAME | COLUMN_NAME | DATA_TYPE | TYPE_NAME | COLUMN_SIZE | BUFFER_LENGTH | DECIMAL_DIGITS | NUM_PREC_RADIX | NULLABLE | REMARKS | COLUMN_DEF | SQL_DATA_TYPE | SQL_DATETIME_SUB | CHAR_OCTET_LENGTH | ORDINA |

+-----------+-------------+--------------+-------------+-----------+-----------+-------------+---------------+----------------+----------------+----------+---------+------------+---------------+------------------+-------------------+--------+

| | | STOCK_SYMBOL | SYMBOL | 12 | VARCHAR | null | null | null | null | 0 | | | null | null | null | 1 |

| | | STOCK_SYMBOL | COMPANY | 12 | VARCHAR | null | null | null | null | 1 | | | null | null | null | 2 |

+-----------+-------------+--------------+-------------+-----------+-----------+-------------+---------------+----------------+----------------+----------+---------+------------+---------------+------------------+-------------------+--------+

PKを確認するには`!primarykeys テーブル名`を入力する。

0: jdbc:phoenix:> !primarykeys STOCK_SYMBOL

+-----------+-------------+--------------+-------------+---------+---------+-------------+-----------+-----------+-------------+---------+---------------+

| TABLE_CAT | TABLE_SCHEM | TABLE_NAME | COLUMN_NAME | KEY_SEQ | PK_NAME | ASC_OR_DESC | DATA_TYPE | TYPE_NAME | COLUMN_SIZE | TYPE_ID | VIEW_CONSTANT |

+-----------+-------------+--------------+-------------+---------+---------+-------------+-----------+-----------+-------------+---------+---------------+

| | | STOCK_SYMBOL | SYMBOL | 1 | | A | 12 | VARCHAR | null | 12 | |

+-----------+-------------+--------------+-------------+---------+---------+-------------+-----------+-----------+-------------+---------+---------------+

SELECT

0: jdbc:phoenix:> select * from STOCK_SYMBOL;

+--------+----------------+

| SYMBOL | COMPANY |

+--------+----------------+

| CRM | SalesForce.com |

+--------+----------------+

UPSERT

SQLLineでUPSERT時に注意すべき点は、ダブルクォートはエラーを発生させるため、シングルクォートを使用しなければならないことだ。

0: jdbc:phoenix:> UPSERT INTO STOCK_SYMBOL VALUES ('CRM2', 'youngju.dev');

1 row affected (0.1 seconds)

0: jdbc:phoenix:> UPSERT INTO STOCK_SYMBOL (SYMBOL, COMPANY) VALUES ('CRM3', 'chaos.and.order');

1 row affected (0.036 seconds)

0: jdbc:phoenix:> select * from STOCK_SYMBOL;

+--------+-----------------+

| SYMBOL | COMPANY |

+--------+-----------------+

| CRM | SalesForce.com |

| CRM2 | youngju.dev |

| CRM3 | chaos.and.order |

+--------+-----------------+

3 rows selected (0.054 seconds)

SELECTを実行すると、挿入した情報が正しく照会されることを確認できる。

JOIN

純粋なHBaseはJoinをサポートしないが、Phoenixを利用すればJoinを使用できる。

ただし、RDBMSほど高速ではない。

`user`テーブル

CREATE TABLE IF NOT EXISTS users (

user_id INTEGER NOT NULL,

first_name VARCHAR,

last_name VARCHAR,

age INTEGER,

CONSTRAINT pk_users PRIMARY KEY (user_id)

);

`orders`テーブル

CREATE TABLE IF NOT EXISTS orders (

order_id INTEGER NOT NULL,

user_id INTEGER,

product_name VARCHAR,

order_date DATE,

CONSTRAINT pk_orders PRIMARY KEY (order_id)

);

SELECT users.first_name, users.last_name, orders.product_name, orders.order_date

FROM users

JOIN orders ON users.user_id = orders.user_id;

クイズ

Ubuntu Apache Phoenixインストール方法

SQLLineでUPSERT時に注意すべき点は、ダブルクォートはエラーを発生させるため、シングルクォートを使用しなければならないことだ。

SELECTを実行すると、挿入した情報が正しく照会されることを確認できる。

純粋なHBaseはJoinをサポートしないが、Phoenixを利用すればJoinを使用できる。

ただし、RDBMSほど高速ではない。 userテーブル ordersテーブル

현재 단락 (1/78)

PhoenixはHBase上で動作するため、HBaseが既にインストールされている必要がある。インストールは[このドキュメント](https://www.youngju.dev/blog/202302...

작성 글자: 0원문 글자: 4,746작성 단락: 0/78