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
相关推荐
芯小途202629 分钟前
影视 AIGC 素材管理:改到第 108 版,为什么「块级去重」能把 TB 级素材压回百 GB(附估算脚本)
大数据·aigc
IanSkunk42 分钟前
视光中心建设复盘:从流程断层到组织能力的落地路径
大数据·人工智能
fanged1 小时前
Yocto1--环境搭建和验证
大数据·搜索引擎·嵌入式
微石科技2 小时前
社区卫生中心慢病管理怎么做?宁波微石科技智慧医康系统:一个平台管住趋势、随访、患者
大数据·人工智能·科技
大大大大晴天2 小时前
K8S 在大数据里的真正价值:适用场景、收益边界与不适合的地方
大数据·云原生
跨境小彭2 小时前
Temu半托管运营复盘:批量备货自动化实操解决方案
大数据·运维·自动化·跨境电商·temu
千里码aicood3 小时前
【区块链】一种面向稀疏车流量场景的车联网共识算法设计与实现
大数据
科技小E3 小时前
国标GB28181视频平台EasyGBS监控为什么会“瞎”:视频质量诊断EasyVQD如何揪出黑屏卡顿偏色
大数据·人工智能·音视频
2601_960017624 小时前
胶黏剂PLM选型指南:为什么垂直行业专用PLM更合适
大数据·人工智能