Paimon适配GaussDB开源验证任务心得
首先先看下任务计划书 ,大概了解了下这个任务的主要工作是通过flink读取paimon写入GaussDB并且数据的验证工作。主要是需要花时间熟悉paimon和flink的架构、环境搭建、扩展新功能和开发简单的界面展示效果。下面介绍下适配过程中的一些关键步骤。开发过程首先参考任务计划书给的参考资料: https://paimon.apache.org/ /和 https://flink.apache.org/ 。 把官网看了下。 官网上是支持很多...
1、环境部署
1)、linux上基本环境java
2)、搭建paimon、flink、hadoop等架构环境,通过apache官网下载paimon、flink、hadoop软件包,上传到esc服务器上部署安装
- paimon-flink-1.17-1.0-20241207.002728-69.jar
- flink-1.17.2-bin-scala_2.12.tgz
- hadoop-3.3.4.tar.gz
hadoop环境部署
问题点:因为后续要使用flink的yarn-session环境,部署好的yarn-site.xml中yarn.nodemanager.resource.memory-mb和yarn.nodemanager.resource.cpu-vcores的默认值-1(理论是服务器内存80%),我的服务器该参数未生效导致远小于flink需要的slot资源,在后续启动flink的sql-client -s yarn-session会因为资源不足报错;
解决方案:修改yarn-site.xml配置,三台服务器配置8核16GB;
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>12288</value> <!-- 例如设置为12GB -->
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>6</value> <!-- 例如设置为8个核心 -->
</property>
flink部署
问题点1:在启动sql-client时默认的jobmanager.memory.process.size: 1600m小于推荐值导致启动报错
解决方案:修改成2GB左右
jobmanager.memory.process.size: 2000m
paimon部署
将paimon-flink-1.17-1.0-20241207.002728-69.jar依赖拷贝到flink的lib目录下即可,三台节点都需要
/opt/module/flink-1.17.2/lib/paimon-flink-1.17-1.0-20241207.002728-69.jar
小结:paimon部署简单,主要去官网找到对应flink版本的jar包
2、程序开发
1)、拷贝依赖包
- hadoop-mapreduce-client-core-3.3.4.jar(服务器中 cd /opt/module/hadoop-3.3.4/share/hadoop/mapreduce 查找)
- postgresql-9.2-1004-jdbc4.jar(访问GaussDB数据的jdbc)
2)、启动yarn-session -d ,提交到yarn资源管理器中生成appliction任务
3)、启动sql-client.sh -s yarn-session ,进入命令行交互界面
a、先设置select结果的展示参数
SET 'sql-client.execution.result-mode' = 'tableau';
b、在默认catalog中直接连接器类型是paimon的映射表
建表语句
create table paimon_test (
id string,
name string
) with (
'connector' = 'paimon', -- 连接paimon的类型
'path' = 'hdfs://hostname:8020/paimon/fs', -- hdfs的地址
'auto-create' = 'true' -- 必填
);
执行建表语句
c、在默认catalog中建GaussDB数据库中的映射表,配置如下
建表语句
create table t1_dest (
id string,
name string
) with (
'connector' = 'jdbc',
'url' = 'jdbc:postgresql://hostname:port/database', -- 数据库ip:端口/库名
'table-name' = '*.t1_dest', -- schema.table (模式 + 表)
'username' = '*', -- 用户
'password' = '*' -- 密码
);
执行语句
d、向paimon类型的表插入数据,并查询验证
insert into paimon_test values('1','小王');
insert into paimon_test values('2','老李');
e、从类型paimon的表读取数据写入GaussDB数据库表t1_dest
insert into t1_dest select * from paimon_test;
执行语句,并且查询GaussDB中t1_dest表的数据结果
问题点:跨catalog无法访问表;由于paimon和GaussDB在不同的catalog无法在同一个sql执行;最终在default_catalog建立两张映射表才解决
开发总结
本任务适配中,hadoop环境搭建较为繁琐和复杂,以及需要兼容的flink环境;在早期搭建的是flink1.18.0版本的环境,由于执行yarn-session.sh的时候提交到yarn资源管理器就报错,重新搭建了flink1.17.2版本的环境才解决问题;问题点:可能是兼容性问题也可能是默认参数需要自定义配置;程序调试映射表参数时也花了不少时间。
- 点赞
- 收藏
- 关注作者
评论(0)