A: Phoenix - JDK17 制作&下载
# 一、为什么要做 JDK17 适配
背景
DataGrip 等 IDE 默认使用较高版本的 JDK 运行时;而部分 Phoenix 版本仍依赖旧 JDK 的内部 API。
因此在 JDK17 上需要兼容性构建或替换驱动,否则连接 HBase(通过 ZK 的 Thick 模式)会报错。
常见报错示例(复现于高版本 JDK 的 IDE 环境):
[08004][103] ERROR 103 (08004): Unable to establish connection. 'void sun.misc.Unsafe.putLong(java.lang.Object, int, long)'.
1
# 二、路径选择总览
路径 | 场景 | 成本 | 灵活性 | 产物形态 |
---|---|---|---|---|
方式一:直接下载使用 | 想快速连通、本地验证 | 最低 | 中等(取决于提供版本) | 已编译的 phoenix-client*.jar |
方式二:源码编译 | 企业/生产需要可追溯 | 中等 | 最高(可调依赖与补丁) | 自行产出的兼容 jar |
版本提示
构建参数建议与目标集群保持一致(HBase/Hadoop/Protobuf 版本),避免运行时 Class/ABI 冲突。
# 三、方式一:直接下载使用(开箱即用)
下载地址
Baidu 网盘: https://pan.baidu.com/s/13nGD7gxudpwWiMiE-4x53g?pwd=5xf2 (opens new window)
注意
重要的事情说三遍——解压密码在群公告
重要的事情说三遍——解压密码在群公告
重要的事情说三遍——解压密码在群公告
# 1、DataGrip 驱动替换步骤
- 打开 DataGrip → 数据源 → Phoenix → 驱动文件;
- 移除原有 phoenix* jar;
- 添加下载的 phoenix-client/phoenix-thin-client 兼容包;
- 填写 ZK 连接串与 Schema,点击 Test Connection。
检查点
- JDK 运行时为 IDE 内置;不需外部切换系统 JDK。
- 若仍有冲突,把同名老版本 jar 完全移除,避免“同类不同版本”并存。
# 四、方式二:源码编译(可控可追溯)
# 1、环境准备
- JDK 17(
java -version
确认) - Maven 3.6+(或更高)
- Git
git clone https://github.com/apache/phoenix.git
cd phoenix
1
2
2
# 2、构建命令(与 Bigtop/HBase 对齐)
mvn -T1C clean install -DskipTests \
-Dhbase.profile=2.4 \
-Dhbase.version=2.4.13 \
-Dhadoop.version=3.3.4 \
-Dprotobuf.version=2.5.0 \
-Dprotoc-jar.protocVersion=2.5.0
1
2
3
4
5
6
2
3
4
5
6
参数含义
-Dhbase.profile
、-Dhbase.version
:与目标集群一致;-Dhadoop.version
:匹配集群 Hadoop;-Dprotobuf.*
:老版本 Phoenix 仍依赖 Proto 2.5.0 生态,维持兼容。
# 3、编译产物位置
构建约 15~20 分钟(视网络/CPU 而定),完成后在:
phoenix-assembly/target/
1
可见可分发的 phoenix-client 等 jar:
- 01
- [/metrics/metadata] — 元数据查询和使用 GET09-12
- 02
- [/metrics/metadata] — 请求完整链路解读09-12
- 03
- [/metrics/metadata] — 缓存数据装载 Phoenix09-12