Skip to content

필사 모드: Ubuntu apache phoenix 설치 방법

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

pre checking

phoenix는 HBase 위에서 동작하기 때문에, HBase는 이미 설치되어있어야한다. 설치는 [이 문서](https://www.youngju.dev/blog/202302/hbase_fully_distributed_mode_install) 를 참조하여 설치한다. Phoenix는 HBase와의 version 호환이 중요하다. 내가 이전에 설치한 HBase version은 2.5.3 이다. HBase version을 확인하기 위해서는 HMaster Web UI에 접속하면 페이지 하단에서 HBase version을 확인할 수 있다.

2.5.x version의 HBase는 Phoenix Version 5.1.3을 설치해야 한다. 그 외의 version은 [Phoenix dowonload site](https://phoenix.apache.org/download.html)를 참고해 적절한 version을 찾으면 된다.

Apache Phoenix 설치 방법

HBase가 구축된 상태에서 설치 방법은 비교적 간단하다. 모든 서버에서 아래의 명령어로 피닉스 바이너리를 다운로드하고 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 directory에 넣어준다.

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를 재시작한다.

After Restarting HBase

pheonix 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 table에 pheonix에서 사용하는 다양한 metatable이 생성된 것을 확인할 수 있습니다.

stock_symbol.sql Example 실행해보기.

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

SQLline에서 `!tables`로 조회해보면, `STOCK_SYMBOL`이라는 table이 생성된 것을 확인할 수 있다.

CRUD examples

table의 schema를 보기위해 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 <table_name>` 을 입력합니다.

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를 해보면 insert한 정보가 잘 조회되는 것을 확인할 수 있다.

JOIN

순수 HBase는 Join을 지원하지 않지만, phoenix를 이용하면 join을 사용할 수 있다.

그러나 RDBMS처럼 빠르지는 않다.

`user` table

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` table

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;

현재 단락 (1/73)

phoenix는 HBase 위에서 동작하기 때문에, HBase는 이미 설치되어있어야한다. 설치는 [이 문서](https://www.youngju.dev/blog/202302/hba...

작성 글자: 0원문 글자: 4,492작성 단락: 0/73