开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

请问flinkcdc中关于oracle cdc 大表任务执行完全量阶段之后的资源回收的问题咋解决?

请问flinkcdc中关于oracle cdc 大表任务执行完全量阶段之后的资源回收的问题咋解决,第一次全量+增量阶段因为表数据量特别多所以分配的并行数和taskmanger内存比较大,后续增量同步我理解不用这么高的内存了,想把资源空余出来给别的任务用,但是改低内存配置和并行数后任务又重新执行全量阶段的split chunk了,这个怎么解决?

展开
收起
十一0204 2023-07-19 17:25:55 106 0
2 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    在 Flink CDC 中,当 Oracle CDC 任务执行完全量阶段后,您需要进行资源回收以避免资源泄漏和浪费。以下是一些建议:

    关闭 CDC 任务
    在完全量任务执行完成后,您可以关闭 CDC 任务以释放相关资源。您可以通过调用 close() 方法关闭 Flink CDC 任务,例如:

    Copy
    jobExecutionResult.getJobClient().stopWithSavepoint(true, savepointDirectory);
    在这里,jobExecutionResult 是 StreamExecutionEnvironment.execute() 方法的返回结果,savepointDirectory 是保存点目录的路径。

    关闭数据库连接
    在关闭 CDC 任务之前,您需要确保所有数据库连接都已关闭。如果您使用的是 Flink CDC 提供的 OracleCdcSource,则可以在 close() 方法中关闭数据库连接,例如:

    Copy
    public void close() throws Exception {
    super.close();
    if (this.oracleCdcReader != null) {
    this.oracleCdcReader.close();
    }
    }
    在这里,oracleCdcReader 是 OracleCdcReader 类的一个实例,它负责与 Oracle 数据库进行通信。

    清理临时文件和目录
    在执行完 CDC 任务后,Flink CDC 可能会在本地磁盘上创建一些临时文件和目录。您可以在关闭 CDC 任务后清理这些文件和目录,例如:

    Copy
    FileUtils.deleteDirectory(new File(tempDirectory));
    在这里,tempDire

    2023-07-29 20:09:33
    赞同 展开评论 打赏
  • 意中人就是我呀!

    "改低内存配置和并行数后,你做了savepoint了吗?没有就停止cdc任务之前,你需要savepoint,然后你才可以降低配置,重新启动任务从savepoint启动。
    https://ververica.github.io/flink-cdc-connectors/master/content/connectors/mysql-cdc.html,在动态加表这里,一样的处理办法。此回答整理至钉群“Flink CDC 社区”。"

    2023-07-19 18:41:20
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关电子书

更多
PostgresChina2018_樊文凯_ORACLE数据库和应用异构迁移最佳实践 立即下载
PostgresChina2018_王帅_从Oracle到PostgreSQL的数据迁移 立即下载
Oracle云上最佳实践 立即下载

相关镜像