1. 启动 HBase 容器
bash
docker run -d \
--name hbase-phoenix \
-p 2181:2181 \
-p 16000:16000 \
-p 16010:16010 \
-p 16020:16020 \
-p 16030:16030 \
harisekhon/hbase:1.3
2. 部署 Phoenix Server Jar
bash
# 复制 Phoenix 安装包到容器
docker cp "D:\soft\phoenix-hbase-1.3-4.16.1-bin.tar.gz" hbase-phoenix:/
# 解压
docker exec hbase-phoenix tar -xzf /phoenix-hbase-1.3-4.16.1-bin.tar.gz -C /
# 部署 Phoenix Server Jar 到 HBase lib
docker exec hbase-phoenix cp /phoenix-hbase-1.3-4.16.1-bin/phoenix-server-hbase-1.3-4.16.1.jar /hbase/lib/
3. 配置 HBase
HBase 默认 RegionServer 绑定到 127.0.0.1:16201(镜像覆盖了默认端口),需要修改配置使外部客户端可访问:
xml
<!-- 绑定到 0.0.0.0,使 Docker 端口映射生效 -->
<property>
<name>hbase.regionserver.ipc.address</name>
<value>0.0.0.0</value>
</property>
<property>
<name>hbase.master.ipc.address</name>
<value>0.0.0.0</value>
</property>
<!-- 覆盖默认端口 16201 → 16020,与 Docker 映射一致 -->
<property>
<name>hbase.regionserver.port</name>
<value>16020</value>
</property>
<!-- 向 ZooKeeper 注册 localhost,使外部客户端可连接 -->
<property>
<name>hbase.regionserver.hostname</name>
<value>localhost</value>
</property>
一键注入命令:
bash
docker exec hbase-phoenix bash -c "sed -i '/<\/configuration>/i\ <property>\n <name>hbase.regionserver.ipc.address</name>\n <value>0.0.0.0</value>\n </property>\n <property>\n <name>hbase.master.ipc.address</name>\n <value>0.0.0.0</value>\n </property>\n <property>\n <name>hbase.regionserver.port</name>\n <value>16020</value>\n </property>\n <property>\n <name>hbase.regionserver.hostname</name>\n <value>localhost</value>\n </property>' /hbase/conf/hbase-site.xml"
4. 重启 HBase
bash
docker exec hbase-phoenix /hbase/bin/stop-hbase.sh
docker exec hbase-phoenix /hbase/bin/start-hbase.sh