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

想咨询一个Flink CDC问题,flink on yarn的情况下 我设置获取数据是从2天之前数?

想咨询一个Flink CDC问题,flink on yarn的情况下 我设置获取数据是从2天之前数据开始,如果我flink断开重启的话,他开始的时间节点是从自动重启的前2天开始,还是从我部署的时间的前2天开始?image.png

展开
收起
cuicuicuic 2023-07-02 17:01:00 47 0
2 条回答
写回答
取消 提交回答
  • 在 Flink on YARN 模式下,如果您设置获取数据是从 2 天之前开始,当 Flink 任务断开重启时,它会从最近的检查点开始恢复,而不是从部署时的时间节点开始。这意味着任务会从最近一次成功生成的检查点开始,而不是您部署任务的时间节点之前的 2 天。

    如果您希望任务始终从部署时的时间节点开始获取数据,而不是最近的检查点,可以考虑以下两种方式:

    1. 使用保存点(savepoint):在部署任务后的第一个检查点生成之前,手动创建一个保存点,并将其用作任务的起始点。保存点相当于一个任务状态的快照,可用于后续任务的恢复。在重启任务时,使用保存点进行任务的恢复,使其从指定的时间节点开始消费数据。

    2. 调整任务的时间语义:Flink 支持事件时间(Event Time)、处理时间(Processing Time)和摄取时间(Ingestion Time)三种时间语义。默认情况下,任务使用处理时间作为时间语义。您可以根据需求将时间语义切换为事件时间或摄取时间,并使用适当的水印策略来指定数据的时间属性。通过调整时间语义,可以使任务从部署时的时间节点开始处理数据。

    需要注意的是,在任何情况下,Flink 任务的起始位置都是根据检查点或保存点来确定的,而不是根据部署时的时间节点。因此,为了实现从指定时间开始消费数据,您需要结合保存点或调整时间语义来进行设置

    2023-07-30 11:30:30
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    在 Flink on YARN 模式下,如果您设置获取数据是从 2 天之前开始,那么当 Flink 任务断开重启时,它会从最近的检查点开始恢复,而不是从部署时的时间节点开始。这意味着,如果 Flink 任务在 2 天之前已经正常运行并进行了检查点,则重新启动时会从最近的检查点开始恢复,而不是从您部署时的时间节点开始。
    如果您希望 Flink 任务始终从部署时的时间节点开始获取数据,而不是最近的检查点,可以在启动 Flink 任务时,指定 --from-earliest-offset 参数,例如:
    Copy
    flink run -m yarn-cluster -yn 2 -ys 4 -yjm 1024 -ytm 1024 -c com.example.MyCDCJob my-cdc-job.jar --from-earliest-offset
    这样,Flink 任务会始终从最早的数据开始获取,而不是从最近的检查点开始恢复。
    需要注意的是,使用 --from-earliest-offset 参数会导致 Flink 任务从最早的数据开始获取,这可能会导致数据量过大、任务运行时间过长等问题。因此,在设置 --from-earliest-offset 参数时,需要根据实际情况进行权衡和调整。

    2023-07-30 10:24:11
    赞同 展开评论 打赏

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

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    深度学习+大数据 TensorFlow on Yarn 立即下载
    Docker on Yarn 微服务实践 立即下载
    深度学习+大数据-TensorFlow on Yarn 立即下载