3 Star 18 Fork 5

htu/bigdata2024

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

HBase整合Phoenix

创建软件目录

mkdir -p /opt/soft
cd /opt/soft

下载软件

wget https://dlcdn.apache.org/phoenix/phoenix-5.1.3/phoenix-hbase-2.5-5.1.3-bin.tar.gz

解压 hbase

tar -zxvf phoenix-hbase-2.5-5.1.3-bin.tar.gz

修改 hbase 目录名称

mv phoenix-hbase-2.5-5.1.3-bin phoenix

配置环境变量

vim /etc/profile
export PHOENIX_HOME=/opt/soft/phoenix
export PATH=$PATH:$PHOENIX_HOME/bin

完整

export JAVA_HOME=/opt/soft/jdk-8

export ZOOKEEPER_HOME=/opt/soft/zookeeper-3

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

export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

export HADOOP_HOME=/opt/soft/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 HBASE_HOME=/opt/soft/hbase-2

export PHOENIX_HOME=/opt/soft/phoenix

export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin:$PHOENIX_HOME/bin

使环境变量生效

source /etc/profile

复制jar文件到hbase/lib目录

scp /opt/soft/phoenix/phoenix-server-hbase-2.5-5.1.3.jar root@lihaozhe01:/opt/soft/hbase-2/lib
scp /opt/soft/phoenix/phoenix-server-hbase-2.5-5.1.3.jar root@lihaozhe02:/opt/soft/hbase-2/lib
scp /opt/soft/phoenix/phoenix-server-hbase-2.5-5.1.3.jar root@lihaozhe03:/opt/soft/hbase-2/lib

重启HBase

stop-hbase.sh
start-hbase.sh

连接Phoenix

sqlline.py lihaozhe01,lihaozhe02,lihaozhe03

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

/usr/bin/env: ‘python’: No such file or directory
whereis python3
# 这里是 whereis python3 的 提示信息
python3: /usr/bin/python3
ln /usr/bin/python3 /usr/bin/python
# 再次连接
sqlline.py lihaozhe01,lihaozhe02,lihaozhe03

sqlline

显示所有数据库

show schemas;

显示所有表

使用 !table 或者 !tables

show tables;

创建数据库

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

create schema "lihaozhe";

会出现以下错误:

image-20230508214910100

原因是需要在hbase的conf目录中的hbase-site.xml配置一个参数:

此参数是phoenix的schema和hbase的nameSpace命名空间做映射。

phoenix.schema.isNamespaceMappingEnabled将它设置成true

  <property>
    <name>phoenix.schema.isNamespaceMappingEnabled</name>
    <value>true</value>
  </property>
  <property>
    <name>phoenix.schema.mapSystemTablesToNamespace</name>
    <value>true</value>
  </property>
  <property> 
    <name>hbase.regionserver.wal.codec</name> 
    <value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value> 
  </property>

分发 hbase-site.xml 到其它节点

scp /opt/soft/hbase-2/conf/hbase-site.xml root@lihaozhe02://opt/soft/hbase-2/conf/
scp /opt/soft/hbase-2/conf/hbase-site.xml root@lihaozhe03://opt/soft/hbase-2/conf/

分发时之后重启 habse

再次创建schema: 注意:schema lihaozhe" 加双引号映射到hbase会是小写的,不加双引号默认都是大写的

create schema "lihaozhe";

image-20230508215705511

use "lihaozhe";

创建表

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

unsigned_long

create table "tb_user"(
 "user_id" varchar primary key,
 "name" varchar,
 "gender" varchar, 
 "home_address" varchar, 
 "company_address" varchar
);
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;

插入数据

upsert into "tb_user" values ('1001','lhz','1','jilin','shanxi');
upsert into "tb_emp" values (1001,'lhz',1,'jilin','shanxi');

显示表

show tables;

image-20230509100943807

删除表

drop table "tb_user";

image-20230509093341919

表关联

准备

在 hbase 上创建表并插入数据

create 'lihaozhe:person', 'info', 'msg'
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'

视图映射

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

表映射

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

退出

!quit

image-20230508171442519

马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/htu-soft/bigdata2024.git
git@gitee.com:htu-soft/bigdata2024.git
htu-soft
bigdata2024
bigdata2024
master

搜索帮助