Paimon适配GaussDB开源验证任务心得

举报
shugj 发表于 2024/12/12 14:34:29 2024/12/12
【摘要】 首先先看下任务计划书 ,大概了解了下这个任务的主要工作是通过flink读取paimon写入GaussDB并且数据的验证工作。主要是需要花时间熟悉paimon和flink的架构、环境搭建、扩展新功能和开发简单的界面展示效果。下面介绍下适配过程中的一些关键步骤。开发过程首先参考任务计划书给的参考资料: https://paimon.apache.org/ /和 https://flink.apa...

首先先看下任务计划书 ,大概了解了下这个任务的主要工作是通过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版本的环境才解决问题;问题点:可能是兼容性问题也可能是默认参数需要自定义配置;程序调试映射表参数时也花了不少时间。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。