phoenix5.3.1整合hbase2.6.6

phoenix5.3.1整合hbase2.6.6

创建软件目录

bash 复制代码
mkdir -p ~/opt
cd ~/opt/

下载软件

bash 复制代码
wget -P ~/opt https://downloads.apache.org/phoenix/phoenix-5.3.1/phoenix-hbase-2.6-5.3.1-bin.tar.gz

解压 hbase

bash 复制代码
tar -zxvf ~/opt/phoenix-hbase-2.6-5.3.1-bin.tar.gz -C ~/opt

修改 hbase 目录名称

bash 复制代码
mv ~/opt/phoenix-hbase-2.6-5.3.1-bin ~/opt/phoenix

配置环境变量

bash 复制代码
vim ~/.profile
bash 复制代码
export PHOENIX_HOME=$HOME/opt/phoenix
export PATH=$PATH:$PHOENIX_HOME/bin

完整

bash 复制代码
export NODE_HOME=$HOME/opt/node-v24

export JAVA_HOME=$HOME/opt/jdk-25

export MAVEN_HOME=$HOME/opt/maven

export SCALA_HOME=$HOME/opt/scala-2

export ZOOKEEPER_HOME=$HOME/opt/zookeeper-3

export HDFS_NAMENODE_USER=lhz
export HDFS_SECONDARYNAMENODE_USER=lhz
export HDFS_DATANODE_USER=lhz
export HDFS_ZKFC_USER=lhz
export HDFS_JOURNALNODE_USER=lhz
export HADOOP_SHELL_EXECNAME=lhz

export YARN_RESOURCEMANAGER_USER=lhz
export YARN_NODEMANAGER_USER=lhz

export HADOOP_HOME=$HOME/opt/hadoop-3
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native

export HIVE_HOME=/home/lhz/opt/hive-4
export HCATALOG_HOME=/home/lhz/opt/hive-4/hcatalog

export HBASE_HOME=$HOME/opt/hbase-2

export PHOENIX_HOME=$HOME/opt/phoenix

export PATH=$PATH:$NODE_HOME/bin:$JAVA_HOME/bin:$MAVEN_HOME/bin:$SCALA_HOME/bin:$ZOOKEEPER_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$HCATALOG_HOME/bin:$HCATALOG_HOME/sbin:$HBASE_HOME/bin:$PHOENIX_HOME/bin

使环境变量生效

bash 复制代码
source ~/.profile

删除帮助文档

bash 复制代码
rm -rf $PHOENIX_HOME/docs

复制jar文件到hbase/lib目录

bash 复制代码
scp $PHOENIX_HOME/phoenix-server-hbase-2.6-5.3.1.jar lhz@lihaozhe01:$HBASE_HOME/lib
scp $PHOENIX_HOME/phoenix-server-hbase-2.6-5.3.1.jar lhz@lihaozhe02:$HBASE_HOME/lib
scp $PHOENIX_HOME/phoenix-server-hbase-2.6-5.3.1.jar lhz@lihaozhe03::$HBASE_HOME/lib

分发 phoenix

bash 复制代码
scp -r ~/opt/phoenix lhz@lihaozhe02:~/opt
scp -r ~/opt/phoenix lhz@lihaozhe03:~/opt

修改 hbase 修改配置文件

注意:Phoenix 咱不支持 JDK25 故而降低 hbase配置JDK版本为17

JDK17

bash 复制代码
# 1. 下载 JDK 17
wget -P /home/lhz/opt/ https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz

# 2. 解压
tar -xzf /home/lhz/opt/jdk-17_linux-x64_bin.tar.gz -C /home/lhz/opt/
mv /home/lhz/optjdk-17.0.19 /home/lhz/optjdk-17

# 3. 修改 hbase-env.sh
export JAVA_HOME=/home/lhz/opt/jdk-17

# 4. 重启 HBase
stop-hbase.sh && start-hbase.sh

hbase 环境变量

bash 复制代码
vim hbase-env.sh
bash 复制代码
export JAVA_HOME=/home/lhz/opt/jdk-17
export HBASE_CLASSPATH=/home/lhz/opt/hadoop-3/etc/hadoop
export HBASE_MANAGES_ZK=false
export HBASE_HEAPSIZE=1G
export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP=true

hbase 配置文件

bash 复制代码
vim hbase-site.xml
xml 复制代码
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <!-- HBase数据存储目录,mycluster是根据hdfs-site.xml的dfs.nameservices的value进行配置 -->
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://lihaozhe/hbase</value>
  </property>
  <!-- HBase Master端口 -->
  <property>
    <name>hbase.master</name>
    <value>8020</value>
  </property>
  <!-- zookeeper集群地址 -->
  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>lihaozhe01:2181,lihaozhe02:2181,lihaozhe03:2181</value>
  </property>
  <!-- 是否开启分布式部署,true表示分布式模式,false表示单机模式 -->
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>
  <!-- 是否启用HDFS流能力检查,设置为false可以避免因流能力检查导致的启动异常 -->
  <property>
    <name>hbase.unsafe.stream.capability.enforce</name>
    <value>false</value>
  </property>
  <!-- 是否启用Phoenix Schema与HBase Namespace映射,开启后Phoenix的schema对应HBase的namespace -->
  <property>
    <name>phoenix.schema.isNamespaceMappingEnabled</name>
    <value>true</value>
  </property>
  <!-- 是否将Phoenix系统表映射到HBase Namespace,需配合phoenix.schema.isNamespaceMappingEnabled使用 -->
  <property>
    <name>phoenix.schema.mapSystemTablesToNamespace</name>
    <value>true</value>
  </property>
  <!-- HBase WAL编码器,使用IndexedWALEditCodec以支持Phoenix的二级索引 -->
  <property>
    <name>hbase.regionserver.wal.codec</name>
    <value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
  </property>
</configuration>

分发配置文件到其它节点

bash 复制代码
scp -r $HBASE_HOME/conf lhz@lihaozhe02:$HBASE_HOME
scp -r $HBASE_HOME/conf lhz@lihaozhe03:$HBASE_HOME

重启HBase

bash 复制代码
stop-hbase.sh
start-hbase.sh

连接Phoenix

bash 复制代码
sqlline.py lihaozhe01,lihaozhe02,lihaozhe03

注意:会出现如下报错信息

bash 复制代码
/usr/bin/env: 'python': No such file or directory
bash 复制代码
whereis python3
bash 复制代码
# 这里是 whereis python3 的 提示信息
python3: /usr/bin/python3
bash 复制代码
sudo ln /usr/bin/python3 /usr/bin/python
bash 复制代码
# 再次连接
sqlline.py lihaozhe01,lihaozhe02,lihaozhe03

显示所有数据库

sql 复制代码
show schemas;

显示所有表

使用 !table 或者 !tables

sql 复制代码
show tables;

创建数据库

phoenix中没有database,有的是schema,相当于mysql中的数据库

sql 复制代码
create schema "lihaozhe";
sql 复制代码
use "lihaozhe";

创建表

https://phoenix.apache.org/columnencoding.html

unsigned_long

sql 复制代码
create table "tb_user"(
 "user_id" varchar primary key,
 "name" varchar,
 "gender" varchar, 
 "home_address" varchar, 
 "company_address" varchar
);
sql 复制代码
create table "tb_emp"(
 "emp_id" varchar primary key,
 "info"."name" varchar,
 "info"."gender" varchar, 
 "logistics"."home_address" varchar, 
 "logistics"."company_address" varchar
) COLUMN_ENCODED_BYTES = 0;

插入数据

sql 复制代码
upsert into "tb_user" values ('1001','lhz','1','jilin','shanxi');
sql 复制代码
upsert into "tb_emp" values ('1001','lhz','1','jilin','shanxi');

显示表

sql 复制代码
show tables;

删除表

sql 复制代码
drop table "tb_user";

表关联

准备

在 hbase 上创建表并插入数据

bash 复制代码
create 'lihaozhe:person', 'info', 'msg'
bash 复制代码
put 'lihaozhe:person',1001,'info:name','user1001'
put 'lihaozhe:person',1001,'info:gender',1
put 'lihaozhe:person',1001,'msg:slogan','hello world'

put 'lihaozhe:person',1002,'info:name','user1002'
put 'lihaozhe:person',1002,'info:gender',0
put 'lihaozhe:person',1002,'msg:slogan','hello'

put 'lihaozhe:person',1003,'info:name','user1003'
put 'lihaozhe:person',1003,'info:gender',1
put 'lihaozhe:person',1003,'msg:slogan','hi'

视图映射

sql 复制代码
create view "person"(
 "person_id" varchar primary key,
 "info"."name" varchar,
 "info"."gender" varchar,
 "msg"."slogan" varchar
) column_encoded_bytes=0;
sql 复制代码
select * from "person";
bash 复制代码
select "info"."name" from "person";
sql 复制代码
drop view "person";

表映射

  1. 当 HBase 中已经存在表时,可以以类似创建视图的方式创建关联表,只需要将create table 改为 create view 即可。
  2. 当 HBase 中不存在表时,可以直接使用 create table 指令创建需要的表,系统将会自动在 Phoenix 和 HBase 中创建 person_infomation 的表,并会根据指令内的参数对表结构进行初始化。
sql 复制代码
create table "person"(
 "person_id" varchar primary key,
 "info"."name" varchar,
 "info"."gender" varchar,
 "msg"."slogan" varchar
) column_encoded_bytes=0;
sql 复制代码
select * from "person";
sql 复制代码
upsert into "person" values('1004','user1004',0,'hw');
sql 复制代码
upsert into "person" ("person_id","gender") values(1001,0);
sql 复制代码
drop table "person";

退出

bash 复制代码
!quit
相关推荐
盈飞无限21 分钟前
AI智能SPC重构制程管控逻辑,打造质量硬核底座
大数据·人工智能·重构
qq_3651853125 分钟前
2026B 端工业抖音代运营公司测评:技术驱动破解制造企业获客困局
大数据·人工智能·物联网·制造
java1234_小锋1 小时前
【免费】基于Spark实时医疗健康数据监测与疾病预测系统(Java版本+可视化大屏+Kafka+SpringBoot+Vue3) 锋哥原创出品,必属精品
大数据·spark·kafka·实时医疗健康数据监测·实时疾病预测系统
编程风暴1 小时前
数据分析实习投递渠道实操模板:回复率对比+匹配度自检表+case-by-case机制
大数据·数据挖掘·数据分析
love530love1 小时前
Ubuntu系统通过Homebrew安装Lightpanda完整实战教程(含端口占用排坑)
大数据·linux·运维·人工智能·elasticsearch·搜索引擎
慧新软件2 小时前
外贸GEO内容矩阵搭建:覆盖客户全决策阶段
大数据
ha_lydms2 小时前
Hologres 简介
大数据·hadoop·阿里云·mapreduce·yarn·dataworks·hologres
zcmodeltech2 小时前
供热系统模型多工况控制系统设计:基于STM32与Modbus RTU的热源-管网-末端联动方案
大数据·stm32·单片机·嵌入式硬件·制造·数据库系统
TMT星球4 小时前
虎鲸文娱春苗编剧计划全面升级,已孵化20个剧本进入前期开发
大数据·人工智能
天国梦12 小时前
自习室智能化升级避坑指南:天学网AI智习室方案实测与选型建议
大数据·人工智能