Skip to content

整合Phoenix

1. Phoenix简介

Phoenix是HBase的开源SQL皮肤。可以使用标准JDBC API代替HBase客户端API来创建表,插入数据和查询HBase数据。

2. 为什么使用Phoenix

官方给的解释为:在Client和HBase之间放一个Phoenix中间层不会减慢速度,因为用户编写的数据处理代码和 Phoenix编写的没有区别(更不用说你写的垃圾的多),不仅如此Phoenix对于用户输入的SQL同样会有大量的优化手段(就像hive自带sql优化器一样)。
Phoenix在5.0版本默认提供有两种客户端使用(瘦客户端和胖客户端),在5.1.2版本安装包中删除了瘦客户端,本文也不再使用瘦客户端。而胖客户端和用户自己写HBase的API代码读取数据之后进行数据处理是完全一样的。

3. 安装Phoenix

3.1 下载Phoenix

访问https://phoenix.apache.org/download.html ,下载对应hbase版本的Phoenix:
Alt text

3.2 上传并解压

sh
[jack@hadoop102 software]$ tar -xvf phoenix-hbase-2.6-5.2.1-bin.tar.gz -C ../module/
[jack@hadoop102 software]$ cd ../module/
[jack@hadoop102 module]$ mv phoenix-hbase-2.6-5.2.1-bin/ phoenix-5.2.1

3.3 复制server包并拷贝到各个节点的hbase/lib

sh
[jack@hadoop102 phoenix-5.2.1]$ ll
总用量 419884
drwxr-xr-x. 3 jack jack      4096 6月  12 2023 bin
drwxr-xr-x. 2 jack jack      4096 6月  12 2023 docs
drwxr-xr-x. 2 jack jack      4096 6月  12 2023 examples
drwxrwxr-x. 2 jack jack      4096 2月  28 19:04 lib
-rw-r--r--. 1 jack jack    144911 6月  12 2023 LICENSE
-rw-r--r--. 1 jack jack     10564 6月  12 2023 NOTICE
-rw-r--r--. 1 jack jack 159466446 6月  12 2023 phoenix-client-embedded-hbase-2.6-5.2.1.jar
lrwxrwxrwx. 1 jack jack        43 6月  12 2023 phoenix-client-embedded-hbase-2.6.jar -> phoenix-client-embedded-hbase-2.6-5.2.1.jar
-rw-r--r--. 1 jack jack 133209838 6月  12 2023 phoenix-client-lite-hbase-2.6-5.2.1.jar
lrwxrwxrwx. 1 jack jack        39 6月  12 2023 phoenix-client-lite-hbase-2.6.jar -> phoenix-client-lite-hbase-2.6-5.2.1.jar
-rw-r--r--. 1 jack jack  62861678 6月  12 2023 phoenix-mapreduce-byo-shaded-hbase-hbase-2.6-5.2.1.jar
lrwxrwxrwx. 1 jack jack        54 6月  12 2023 phoenix-mapreduce-byo-shaded-hbase-hbase-2.6.jar -> phoenix-mapreduce-byo-shaded-hbase-hbase-2.6-5.2.1.jar
-rw-r--r--. 1 jack jack  11381870 6月  12 2023 phoenix-pherf-5.2.1.jar
lrwxrwxrwx. 1 jack jack        23 6月  12 2023 phoenix-pherf.jar -> phoenix-pherf-5.2.1.jar
-rw-r--r--. 1 jack jack  62849406 6月  12 2023 phoenix-server-hbase-2.6-5.2.1.jar
lrwxrwxrwx. 1 jack jack        34 6月  12 2023 phoenix-server-hbase-2.6.jar -> phoenix-server-hbase-2.6-5.2.1.jar

[jack@hadoop102 phoenix-5.2.1]$ cp phoenix-server-hbase-2.6-5.2.1.jar ../hbase-2.6.1/lib/
[jack@hadoop102 phoenix-5.2.1]$ xsync /opt/module/hbase-2.6.1/lib/ phoenix-server-hbase-2.6-5.2.1.jar

3.4 配置环境变量

sh
# phoenix
export PHOENIX_HOME=/opt/module/phoenix-5.2.1
export PHOENIX_CLASSPATH=$PHOENIX_HOME
export PATH=$PATH:$PHOENIX_HOME/bin

3.5 重启HBase

3.6 连接Phoenix

sh
[jack@hadoop102 phoenix-5.2.1]$ ./bin/sqlline.py 
2025-02-28T22:22:07,838 WARN  [main] impl.MetricsConfig: Cannot locate configuration: tried hadoop-metrics2-phoenix.properties,hadoop-metrics2.properties
2025-02-28T22:22:08,085 WARN  [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2025-02-28T22:22:08,281 WARN  [main] client.ZKConnectionRegistry: ZKConnectionRegistry is deprecated. See https://hbase.apache.org/book.html#client.rpcconnectionregistry
sqlline version 1.9.0
0: jdbc:phoenix:> !table
+-----------+-------------+------------+--------------+---------+-----------+---------------------------+----------------+-------------+-----------------+
| TABLE_CAT | TABLE_SCHEM | TABLE_NAME |  TABLE_TYPE  | REMARKS | TYPE_NAME | SELF_REFERENCING_COL_NAME | REF_GENERATION | INDEX_STATE | IMMUTABLE_ROWS  |
+-----------+-------------+------------+--------------+---------+-----------+---------------------------+----------------+-------------+-----------------+
|           | SYSTEM      | CATALOG    | SYSTEM TABLE |         |           |                           |                |             | false           |
|           | SYSTEM      | CHILD_LINK | SYSTEM TABLE |         |           |                           |                |             | false           |
|           | SYSTEM      | FUNCTION   | SYSTEM TABLE |         |           |                           |                |             | false           |
|           | SYSTEM      | LOG        | SYSTEM TABLE |         |           |                           |                |             | true            |
|           | SYSTEM      | MUTEX      | SYSTEM TABLE |         |           |                           |                |             | true            |
|           | SYSTEM      | SEQUENCE   | SYSTEM TABLE |         |           |                           |                |             | false           |
|           | SYSTEM      | STATS      | SYSTEM TABLE |         |           |                           |                |             | false           |
|           | SYSTEM      | TASK       | SYSTEM TABLE |         |           |                           |                |             | false           |
|           | SYSTEM      | TRANSFORM  | SYSTEM TABLE |         |           |                           |                |             | false           |
+-----------+-------------+------------+--------------+---------+-----------+---------------------------+----------------+-------------+-----------------+
0: jdbc:phoenix:>