paimon流式数据湖平台

192.168.10.102=hadoop102
192.168.10.103=hadoop103
192.168.10.104=hadoop104

Paimon是一个流数据湖平台,具有高速数据摄取,变更日志跟踪和高效的实时分析的能力
支持数据库变更日志(cdc)的流式同步或来自离线数据的批量插入和修改

低成本 高可靠性 可扩展的元数据服务

安装部署

提前安装好hive

hive3.x入门-CSDN博客

提前安装好flink集群

flink1.17入门-CSDN博客
提前安装好hadoop集群

hadoop3入门(1)-CSDN博客t

提前安装好spark

spark入门(1)-CSDN博客 

下载paimon的jar包

https://repository.apache.org/content/groups/snapshots/org/apache/paimon/paimon-flink-1.17/0.5-SNAPSHOT/paimon-flink-1.17-0.5-20230906.001916-146.jar

3台机器都配置


把paimon的jar包,上传到自己的flink的lib目录

cd /opt/module/flink-1.17.1/lib

修改配置


cd /opt/module/flink-1.17.1/conf
vi flink-conf.yaml

#解决中文乱码,1.17之前参数是env.java.opts
env.java.opts.all: -Dfile.encoding=UTF-8
classloader.check-leaked-classloader: false
taskmanager.numberOfTaskSlots: 4

execution.checkpointing.interval: 10s
state.backend: rocksdb
state.checkpoints.dir: hdfs://hadoop102:8020/ckps
state.backend.incremental: true

进入hadoop的目录把jar包拷贝到flink中 

cd /opt/module/hadoop-3.3.6/share/hadoop/mapreduce
cp hadoop-mapreduce-client-core-3.3.6.jar /opt/module/flink-1.17.1/lib/

在102启动flink yarn session 

cd /opt/module/flink-1.17.1/bin
./yarn-session.sh -d

启动之后会在3台机器上 随机选择一台显示YarnSessionClusterEntrypoint进程 

在102启动flink的sql客户端 

./sql-client.sh -s yarn-session

设置显示模式 

SET 'sql-client.execution.result-mode' = 'tableau';

查看yarn控制台 

http://hadoop103:8088/cluster

 点击详细

进入flink控制台 

catalog

Paimon catalog可以持久化元数据
文件系统默认:将元数据和表文件存储在文件系统中 
hive:在hive中存储元数据,用户可以直接从hive访问表

默认的文件系统

启动客户端

cd /opt/module/flink-1.17.1/bin
./sql-client.sh -s yarn-session

CREATE CATALOG fs_catalog WITH (
    'type' = 'paimon',
    'warehouse' = 'hdfs://hadoop102:8020/paimon/fs'
);

USE CATALOG fs_catalog;

 

hive存储 

下载jar包到flink的lib目录下

cd /opt/module/flink-1.17.1/lib

wget https://repo.maven.apache.org/maven2/org/apache/flink/flink-sql-connector-hive-3.1.2_2.12/1.15.3/flink-sql-connector-hive-3.1.2_2.12-1.15.3.jar

启动hive,确保9083端口启动

nohup hive --service metastore & 

启动sql客户端

cd /opt/module/flink-1.17.1
bin/sql-client.sh -s yarn-session

CREATE CATALOG hive_catalog WITH (
    'type' = 'paimon',
    'metastore' = 'hive',
'uri' = 'thrift://hadoop102:9083',
'hive-conf-dir' = '/opt/module/hive/conf',
    'warehouse' = 'hdfs://hadoop102:8020/paimon/hive'
);

创建初始化sql文件,启动客户端不会丢失catalog 

cd /opt/module/flink-1.17.1

vi aa.sql

CREATE CATALOG hive_catalog WITH (
    'type' = 'paimon',
    'metastore' = 'hive',
'uri' = 'thrift://hadoop102:9083',
'hive-conf-dir' = '/opt/module/hive/conf',
    'warehouse' = 'hdfs://hadoop102:8020/paimon/hive'
);

CREATE CATALOG fs_catalog WITH (
    'type' = 'paimon',
    'warehouse' = 'hdfs://hadoop102:8020/paimon/fs'
);

SET 'sql-client.execution.result-mode' = 'tableau';

启动sql客户端 并初始化sql文件 

cd /opt/module/flink-1.17.1
bin/sql-client.sh -s yarn-session -i aa.sql

管理表 

在catalog中创建的表就是paimon的管理表,由catalog管理,当表从catalog删除的时候,表文件也将删除,类似hive的内部表

进入文件系统

use catalog fs_catalog;

创建联合主键

CREATE TABLE test (
    user_id BIGINT,
    item_id BIGINT,
    behavior STRING,
    dt STRING,
    hh STRING,
    PRIMARY KEY (dt, hh, user_id) NOT ENFORCED
);

 

创建分区表,按照dt和hh分区,分区字段必须是主键

CREATE TABLE test_p (
    user_id BIGINT,
    item_id BIGINT,
    behavior STRING,
    dt STRING,
    hh STRING,
    PRIMARY KEY (dt, hh, user_id) NOT ENFORCED
) PARTITIONED BY (dt, hh); 

创建表的其他方式

复制其他表 创建表 

CREATE TABLE test1(
    user_id BIGINT,
    item_id BIGINT
);


CREATE TABLE test2 AS SELECT * FROM test1;

CREATE TABLE test_aa LIKE test1;

复制表并指定分区 

CREATE TABLE test2_p WITH ('partition' = 'dt') AS SELECT * FROM test_p; 

创建表之后,inser into插入的数据以.orc后缀

CREATE TABLE test3(
       user_id BIGINT,
       item_id BIGINT
) WITH ('file.format' = 'orc');

insert into test3 values(1,2);

创建表之后,inser into插入的数据以.parquet后缀

CREATE TABLE test3_op WITH ('file.format' = 'parquet') AS SELECT * FROM test3; 

创建表 指定主键

CREATE TABLE test_pk WITH ('primary-key' = 'dt,hh') AS SELECT * FROM test;


创建表指定主键和分区

CREATE TABLE test_all WITH ('primary-key' = 'dt,hh', 'partition' = 'dt') AS SELECT * FROM test_p;

 

插入分区数据

insert into test_p PARTITION(dt='2023-07-02',hh='1') VALUES(4,4, 'bb');

设置批处理

就是查询的时候 不卡主,直接把结束的位置也展示出来

SET 'execution.runtime-mode' = 'batch'; 

flink cdc


flink cdc 就是把别的地方的表同步到paimon中

在自己的mysql的my.conf文件下配置下面的内容,开启binlog,并重启mysql

[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server=utf8
## 设置server_id,同一局域网中需要唯一
server_id=1
## 开启二进制日志功能
log-bin=mall-mysql-bin
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=row
#开启gtid模式
gtid-mode=on
#强制gtid一致性,开启后对特定的create table不支持          
enforce-gtid-consistency=on
#从库binlog记录主库同步的操作日志
log-slave-updates=1

添加flink cdc连接器 

cd /opt/module/flink-1.17.1/lib
wget https://repo1.maven.org/maven2/com/ververica/flink-sql-connector-mysql-cdc/2.4.0/flink-sql-connector-mysql-cdc-2.4.0.jar
wget https://repository.apache.org/content/groups/snapshots/org/apache/paimon/paimon-flink-action/0.5-SNAPSHOT/paimon-flink-action-0.5-20230906.001916-132.jar

先把之前的yarn-session清除掉

重启yarn-session 和sql 客户端 

cd /opt/module/flink-1.17.1
bin/yarn-session.sh -d

bin/sql-client.sh -s yarn-session -i aa.sql

同步单个表

参数说明:

配置

描述

--warehouse

Paimon仓库路径

--database

Paimon Catalog中的数据库名称。

--table

Paimon 表名称。

--partition-keys

Paimon 表的分区键。如果有多个分区键,请用逗号连接,例如“dt,hh,mm”。

--primary-keys

Paimon 表的主键。如果有多个主键,请用逗号连接,例如“buyer_id,seller_id”。

--computed-column

计算列的定义。参数字段来自 MySQL 表字段名称。

--mysql-conf

Flink CDC MySQL 源表的配置。每个配置都应以“key=value”的格式指定。主机名、用户名、密码、数据库名和表名是必需配置,其他是可选配置。

--catalog-conf

Paimon Catalog的配置。每个配置都应以“key=value”的格式指定。

--table-conf

Paimon 表sink的配置。每个配置都应以“key=value”的格式指定。

cd /opt/module/flink-1.17.1

bin/flink run \
    /opt/module/flink-1.17.1/lib/paimon-flink-action-0.5-20230906.001916-132.jar \
    mysql-sync-table \
    --warehouse hdfs://hadoop102:8020/paimon/hive \
    --database shucang \
    --table t_user_cdc7 \
    --primary-keys id \
    --mysql-conf hostname=192.168.10.104 \
    --mysql-conf server-time-zone=Asia/Shanghai \
    --mysql-conf username=root \
    --mysql-conf password=123456 \
    --mysql-conf port=13306 \
    --mysql-conf database-name=shucang \
    --mysql-conf table-name='t_user' \
    --catalog-conf metastore=hive \
    --catalog-conf uri=thrift://hadoop102:9083 \
    --table-conf bucket=1 \
    --table-conf changelog-producer=input \
--table-conf sink.parallelism=1

进入sql客户端,在对应的catalogs下面的数据库查看表

show catalogs;
use catalog hive_catalog;
show databases;
use shucang;
show tables;
select * from t_user_cdc7;

 

同步所有表

bin/flink run \
    /opt/module/flink-1.17.1/lib/paimon-flink-action-0.5-20230906.001916-132.jar \
    mysql-sync-database \
    --warehouse hdfs://hadoop102:8020/paimon/hive \
    --database shucang \
    --mysql-conf hostname=192.168.10.104 \
    --mysql-conf server-time-zone=Asia/Shanghai \
    --mysql-conf username=root \
    --mysql-conf password=123456 \
    --mysql-conf database-name=shucang \
    --mysql-conf port=13306 \
    --catalog-conf metastore=hive \
    --catalog-conf uri=thrift://hadoop102:9083 \
    --table-conf bucket=1 \
    --table-conf changelog-producer=input \
--table-conf sink.parallelism=1 

进入sql客户端 在对应的catalogs下面的数据库查看表

show catalogs;
use catalog hive_catalog;
show databases;
use shucang;
show tables;

集成hive

在hive目录下创建auxlib目录,并下载jar包

mkdir /opt/module/hive/auxlib
cd  /opt/module/hive/auxlib

wget https://repository.apache.org/content/groups/snapshots/org/apache/paimon/paimon-hive-connector-3.1/0.5-SNAPSHOT/paimon-hive-connector-3.1-0.5-20230906.001916-143.jar

 然后进入hive目录启动hive

bin/hive

可以看到paimon下的表都同步过来了 

show databases;

use shucang;

show tables;

集成spark

进入spark的jars目录下载jar包

cd /opt/module/spark-3.0.0-bin-hadoop3.2/jars
wget https://repository.apache.org/content/groups/snapshots/org/apache/paimon/paimon-spark-3.3/0.5-SNAPSHOT/paimon-spark-3.3-0.5-20230906.001916-143.jar

 文件系统默认

启动spark

cd /opt/module/spark-3.0.0-bin-hadoop3.2/bin
./spark-sql --conf spark.sql.catalog.fs=org.apache.paimon.spark.SparkCatalog --conf spark.sql.catalog.fs.warehouse=hdfs://hadoop102:8020/paimon/fs

可以看到表已经从fs同步过来了 

use fs.default;

show tables;

 

hive的catalog

启动spark

./spark-sql \
    --conf spark.sql.catalog.hive=org.apache.paimon.spark.SparkCatalog \
    --conf spark.sql.catalog.hive.warehouse=hdfs://hadoop102:8020/paimon/hive \
    --conf spark.sql.catalog.hive.metastore=hive \
    --conf spark.sql.catalog.hive.uri=thrift://hadoop102:9083 

可以看到hive的catalog下的表也同步过来了 

use hive.default;

show databases;

use shucang;

show tables; 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值