整合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:
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:>