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

Flink 集群重启后,所有的Jobs任务全都没有了。如果快速恢复所有的任务

Flink 集群重启后,所有的Jobs任务全都没有了。大家有没有好的办法快速恢复。

因为我配置了几十个任务,如果重启后任务没有了,我得输入命令【建表语句,同步语句】操作几十次,工作量会非常大。

所以想问问大家,对于这个问题,有什么好的解决方案吗?

展开
收起
汀风说后端 2024-01-04 19:55:20 1233 0
4 条回答
写回答
取消 提交回答
  • Flink 集群重启后,所有的Jobs任务丢失,可以尝试以下几种解决方案:

    1.使用Flink的命令行工具或Web UI重新提交作业:

    • 使用Flink的命令行工具或Web UI重新提交作业。首先确保你已经有了所有作业的依赖项和配置文件,然后使用flink run命令或Flink Web UI来重新提交作业。这样,所有的作业将会重新启动并恢复到之前的执行状态。

    2.检查Flink的状态和日志:

    • 使用Flink的命令行工具或Web UI检查集群的状态,确保所有TaskManager都已正确注册,并且JobManager可以与其通信。同时,查看Flink的日志文件,特别是JobManager和TaskManager的日志,这可能会提供有关作业丢失或无法恢复的更多信息。

    3.联系Flink的支持团队或社区寻求帮助:

    • 如果问题仍然存在,并且你无法恢复之前的作业,可以联系Flink的支持团队或社区寻求帮助。他们可能能够提供更具体的故障排除步骤或解决方案。

    4.配置Flink集群以自动恢复作业:

    • 为了防止Flink作业在集群重启后丢失,可以考虑配置Flink集群以自动恢复作业。例如,你可以配置Flink使用Checkpointing机制来定期保存作业的状态,并在集群重启后从最近的Checkpoint中恢复作业。这需要在Flink配置文件中进行相应的设置。

    5.使用版本控制和代码管理工具管理Flink作业:

    • 对于管理和恢复Flink作业,可以考虑使用版本控制和代码管理工具(如Git)来管理你的Flink代码和配置文件。这样,你可以轻松地跟踪每个作业的版本历史,并在需要时回滚到之前的版本。同时,每次修改或重新提交作业时,都要确保更新版本控制系统中相应的代码和配置文件。
    2024-01-06 22:17:23
    赞同 展开评论 打赏
  • 对于Flink集群重启后任务丢失的问题,可以尝试以下解决方案:

    1. 使用Flink的Checkpoint机制:通过设置合适的Checkpoint间隔和策略,可以将任务的状态定期保存到持久化存储中。当集群重启时,可以从最近的Checkpoint恢复任务状态,从而避免从头开始执行任务。

    2. 使用Flink的Savepoint机制:与Checkpoint类似,Savepoint也是将任务状态保存到持久化存储中。不同之处在于,Savepoint可以手动触发,而Checkpoint是自动触发的。在集群重启前,可以手动创建一次Savepoint,然后在重启后从该Savepoint恢复任务状态。

    3. 使用Flink的任务管理功能:Flink提供了JobManager和TaskManager的管理界面,可以通过这些界面查看和管理正在运行的任务。在集群重启前,可以先停止所有任务,然后在重启后重新提交任务。虽然这样会增加工作量,但可以避免因任务丢失而导致的数据丢失。

    4. 使用脚本自动化操作:为了减少重复的人工操作,可以编写脚本来自动化执行建表语句、同步语句等操作。例如,可以使用Shell脚本或Python脚本来实现这些操作。这样,在集群重启后,只需运行脚本即可快速恢复任务。

    2024-01-05 09:52:34
    赞同 展开评论 打赏
  • Apache Flink 集群重启后,如果之前提交的 Jobs 没有自动恢复,通常是因为没有开启 JobManager 的高可用(HA)模式或者状态持久化功能。在生产环境中,为了确保集群故障或重启时任务能够快速且自动地恢复,Flink 提供了以下关键机制:

    1. JobManager HA

      • 设置 JobManager 高可用模式,使用 ZooKeeper 或其他协调服务保存 JobManager 的元数据和领导节点信息。这样,在主 JobManager 宕机时,可以从备份 JobManager 自动接管并恢复任务。
    2. Checkpointing 和 Savepoints

      • 开启 Checkpoint 功能,并设置适当的 checkpoint 间隔时间,使得作业定期生成 checkpoint。
      • 使用 savepoints 手动或通过配置自动触发将作业的状态保存到持久存储(如 HDFS、S3 等)中。
      • 在集群重启后,可以使用 savepoint 快速恢复作业到上一次检查点状态。

    要实现快速恢复所有任务,可按以下步骤操作:

    • 配置高可用
      flink-conf.yaml 中配置 JobManager 的高可用模式及相关参数,例如:

       high-availability: zookeeper
       high-availability.zookeeper.quorum: zk0:2181,zk1:2181,zk2:2181
      
    • 启用 Checkpoint
      启用并配置好 checkpoint 功能,确保任务状态能够被周期性地持久化。

       state.backend: filesystem
       state.checkpoints.dir: hdfs://namenode:port/flink/checkpoints
       checkpointing.mode: exactly_once
       checkpoint-interval: 60000  # 每60秒进行一次checkpoint
      
    • Savepoint 自动触发或手动创建
      如果未开启自动触发 savepoint 功能,则需要在集群重启前手动为每个作业触发 savepoint,然后在重启后从对应的 savepoint 恢复作业。

    • 集群重启后的恢复流程

      • 确保新的集群具有相同的配置和足够的资源。
      • 使用 savepoint 还原作业:
        ./bin/flink savepoint <jobId> hdfs://namenode:port/flink/savepoints/<savepointPath> --target-dir hdfs://namenode:port/flink/restored-jobs/<jobName>
        ./bin/flink run -s hdfs://namenode:port/flink/restored-jobs/<jobName>/ -d path/to/job.jar
        
      • 若已启用 JobManager HA,且之前的 JobGraph 仍在 ZooKeeper 中,则在集群恢复后,先前提交的 Job 可能会自动启动。

    对于大量作业的管理,还可以考虑编写脚本自动化执行上述恢复过程,根据清单中的作业 ID 和 savepoint 路径逐一进行恢复。同时,推荐结合使用 Flink CLI 或 REST API 来简化操作。

    2024-01-04 21:34:15
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    当Flink集群在Standalone HA模式下重启后,之前正在当Flink集群在Standalone HA模式下重启后,之前正在运行的job和历史job的信息可能会丢失,因为Flink的jobmanager和taskmanager在重启后会重新启动,而他们之前保存的Jobs信息会丢失。要解决这个问题,您可以尝试以下几种方法:

    1. 检查Flink集群的状态,确保它们正常运行。
    2. 使用Flink的rest API来查看Jobs信息。API可以提供关于当前运行和已完成的作业的详细信息。
    3. 利用Flink HistoryServer来查看Jobs信息。HistoryServer是一个Web界面,它提供了有关所有已完成作业的历史信息。
    4. 可以使用Flink的可视化工具(如:Flink Web UI)来查看Jobs信息。

    另外,为了防止这种情况再次发生,您可以在Flink的配置文件flink-conf.yaml中设置重启策略。默认重启策略可以在Flink的配置文件中设置,由restart-strategy参数控制,有fixed-delay(固定延时重启策略)、failure-rate(故障率重启策略)、none(不重启策略)三种可以选择。如果选择的参数不同,对应的其他参数也不同。例如,如果启用了checkpoint且没有配置重启策略,那么就采用固定延时重启策略,此时最大尝试重启次数由Integer.MAX_VALUE参数设置。这样,即使集群重启,作业也不会丢失,可以有效地避免重复输入命令和操作的工作。

    2024-01-04 20:34:11
    赞同 展开评论 打赏

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

相关产品

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

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载