您的位置:首页 > 教程 > linux > 浅谈Flink容错机制之作业执行和守护进程

浅谈Flink容错机制之作业执行和守护进程

2022-06-19 20:30:03 来源:易采站长站 作者:

浅谈Flink容错机制之作业执行和守护进程

一、作业执行容错Flink的错误恢复机制分为多个级别,即Execution级别的Failover策略和ExecutionGraph级别的JobRestart策略。当出现错误时,Fl...NSR站长之家-易采站长站-Easck.Com

一、作业执行容错

Flink 的错误恢复机制分为多http://www.cppcns.com个级别,即 Execution 级别的 Failover 策略和 ExecutionGraph 级别的 Job Restart 策略。当出现错误时,Flink 会先尝试触发范围小的错误恢复机制,如果仍处理不了才会升级为更大范围的错误恢复机制,具体可以看下面的序列图。NSR站长之家-易采站长站-Easck.Com

浅谈Flink容错机制之作业执行和守护进程NSR站长之家-易采站长站-Easck.Com

当 Task 发生错误,TaskManager 会通过 RPC 通知 JobManager,后者将对应 Execution 的状态转为 failed 并触发 Failover 策略。如果符合 Failover 策略,JobManager 会重启 Execution,否则升级为 ExecutionGraph 的失败。ExecutionGraph 失败则进入 failing 的状态,由 Restart 策略决定其重启(restarting 状态)还是异常退出(failed 状态)。NSR站长之家-易采站长站-Easck.Com

1.1、Task Failover策略

Task Failover策略目前有三个,分别是:RestartAll、RestartIndividualStrategy 和 RestartPipelinedRegionStrategy。NSR站长之家-易采站长站-Easck.Com

RestartAll: 重启全部 Task,是恢复作业一致性的最安全策略,会在其他 Failover 策略失败时作为保底策略使用。目前是默认的 Task Failover 策略。NSR站长之家-易采站长站-Easck.Com

RestartPipelinedRegionStrategy: 重启错误 Task 所在 Region 的全部 Task。Task Region 是由 Task 的数据传输决定的,有数据传输的 Task 会被放在同一个 Region,而不同 Region 之间没有数据交换。NSR站长之家-易采站长站-Easck.Com

RestartIndividualStrategy: 恢复单个 Task。因为如果该 Task 没有包含数据源,这会导致它不能重流数据而导致一部分数据丢失。考虑到至少提供准确一次的投递语义,这个策略的使用范围比较有限,只应用于 Task 间没有数据传输的作业。NSR站长之家-易采站长站-Easck.Com

1.2、Job Restart策略

如果 Task 错误最终触发了 Full Restart,此时 Job Restart 策略将会控制是否需要恢复作业。Flink 提供三种 Job 具体的 Restart Strategy。NSR站长之家-易采站长站-Easck.Com

FixedDelayRestartStrategy: 允许指定次数内的 Execution 失败,如果超过该次数则导致 Job 失败。FixedDelayRestartStrategy 重启可以设置一定的延迟,以减少频繁重试对外部系统带来的负载和不必要的错误日志。NSR站长之家-易采站长站-Easck.Com

FailureRateRestartStrategy: 允许在指定时间窗口内的指定次数内的 Execution 失败,如果超过这个频率则导致 Job 失败。同样地,FailureRateRestartStrategy 也可以设置一定的重启延迟。NSR站长之家-易采站长站-Easck.Com

NoRestartStrategy: 在 Execution 失败时直接让 Job 失败。NSR站长之家-易采站长站-Easck.Com

二、守护进程容错

Flink on YARN 的部署模式,关键的守护进程有 JobManager 和 TaskManager 两个,其中JobManager的主要职责协调资源和管理作业的执行分别为ResourceManager 和 JobMaster 两个守护线程承担,三者之间的关系如下图所示。NSR站长之家-易采站长站-Easck.Com

浅谈Flink容错机制之作业执行和守护进程NSR站长之家-易采站长站-Easck.Com

2.1、TaskManager 的容错

如果 ResouceManager 通过心跳超时检测到或者通过集群管理器的通知了解到 TaskManager 故障,它会通知对应的 JobMaster 并启动一个新的 TaskManager 以做代替。注意 ResouceManager 并不关心 Flink 作业的情况,这是 JobMaster 的职责去管理 Flink 作业要做何种反应。NSR站长之家-易采站长站-Easck.Com

如果 JobMaster 通过 ResouceManager 的通知了解到或者通过心跳超时检测到 TaskManager 故障,它首先会从自己的 slot pool 中移除该 TaskManager,并将该 TaskManager 上运行的所有 Tasks 标记为失败,从而触发 Flink 作业执行的容错机制以恢复作业。NSR站长之家-易采站长站-Easck.Com

TaskManager 的状态已经写入 checkpoint 并会在重启后自动恢复,因此不会造成数据不一致的问题。NSR站长之家-易采站长站-Easck.Com

2.2、ResourceManager 的容错

如果TaskManager通过心跳超时检测到 ResourceManager 故障,或者收到 zookeeper 的关于ResourceManager失去leadership通知,TaskManager会寻找新的 leader,ResourceManager 并将自己重启注册到其上,期间并不会中断 Task的执行。NSR站长之家-易采站长站-Easck.Com

如果JobMaster通过心跳超时检测到ResourceManager故障,或者收到 zookeeper 的关于 ResourceManager 失去 leadership 通知,JobMaster 同样会等待新的 ResourceManager 变成 leader,然后重新请求所有的TaskManager。考虑到 TaskManager 也可能成功恢复,这样的话 JobMaster 新请求的 TaskManager 会在空闲一段时间后被释放。NSR站长之家-易采站长站-Easck.Com

ResourceManager上保持了很多状态信息,包括活跃的 container、可用的 TaskManager、TaskManager 和 JobMaster 的映射关系等等信息,不过这些信息并不是 ground truth,可以从与 JobMaster 及 TaskManager 的状态同步中再重新获得,所以这些信息并不需要持久化。NSR站长之家-易采站长站-Easck.Com

2.3、JobMaster 的容错

如果 TaskManager 通过心跳超时检测到 JobMaster 故障,或者收到 zookeeper 的关于 JobMaster 失去 leadership 通知,TaskManager 会触发自己的错误恢复,然后等待新的 JobMaster。如果新的 JobMaster 在一定时间后仍未出现,TaskManager 会将其 slot 标记为空闲并告知 ResourceManager。NSR站长之家-易采站长站-Easck.Com

如果 ResourceManager 通过心跳超时检测到 JobMaster 故障,或者收到 zookeeper 的关于 JobMaster 失去 leadership 通知,ResourceManager 会将其告知 TaskManager,其他不作处理。NSR站长之家-易采站长站-Easck.Com

JobMaster 保存了很多对作业执行至关重要的状态,其中 JobGraph 和用户代码会重新从 HDFS 等持久化存储中获取,checkpoint 信息会从 zookeeper 获得,Task 的执行信息可以不恢复因为整个作业会重新调度,而持有的 slot 则从 ResourceManager 的 TaskManager 的同步信息中恢复。NSR站长之家-易采站长站-Easck.Com

2.4、并发故障

Flink on YARN 部署模式下,因为 JobMaster 和 ResourceManager 都在 JobManager 进程内,如果JobManager 进程出问题,通常是 JobMaster 和 ResourceManager 并发故障,那么 TaskManager 会按以下步骤处理:NSR站长之家-易采站长站-Easck.Com

按照普通的 JobMaster 故障处理。
在一段时间内不断尝试将 slot 提供给新的 JobMaster。
不断尝试将自己注册到 Reswww.cppcns.comourceManager 上。

值得注意的是,新 JobManager 的拉起是依靠 YARN 的 Application attempt 重试机制来自动完成的,而根据 Flink 配置的 YARN Application:keep-containers-across-application-attempts行为,TaskManager 不会被清理,因此可以重新注册到新启动的 Flink ResourceManager 和 JobMaster 中。NSR站长之家-易采站长站-Easck.Com

三、总结

Flink 容错机制确保了 Flink 的可靠性和持久性,具体来说它包括作业执行的容错和守护进程的容错两个方面。在作业执行容错方面,Flink 提供 Task 级别的 Failover 策略和 Job 级别的 Restart 策略来进行故障情况下的自动重试。在守护进程的容错方面,在on YARN 模式下,Flink 通过内部组件的心跳和 YARN 的监控进行故障检测。TaskManager 的故障会通过申请新的 TaskManager 并重启 Task 或 Job 来恢复,JobManager 的故障会通过集群管理器的自动拉起新 JobManager 和 TaskManager 的重新注册到新 leader JobManager 来恢复。NSR站长之家-易采站长站-Easck.Com

以上就是浅谈Flink容错机制之作业执行和守护进程的详细内容,更多关于Flink容错机制 作业执行和守护进程的资料请关注我们其它相关文章!NSR站长之家-易采站长站-Easck.Com

如有侵权,请联系QQ:279390809 电话:15144810328

相关文章

  • Linux下用GHOST来做系统备份

    Linux下用GHOST来做系统备份

    在Windows系统下备份我们可以用GHOST工具软件完成,Linux系统不能完全依赖于GHOST工具,一则是GHOST本身是有版权的软件,二是GHOST只支持ext2、ext3文件系统的Linux分区,不支持reiserfs、xfs等
    2019-10-25
  • 给 FreeBSD 12.1 安装 GNOME3 图形界面

    给 FreeBSD 12.1 安装 GNOME3 图形界面

    FreeBSD是一个完全开放的、安全的系统,可以Do it yourself的系统。但是个人还是不喜欢呆板的命令行界面,所有就给 FreeBSD 12.1 安装 GNOME3 图形界面。 开始操作,启动FreeBSD 12.1,以root身份
    2019-10-27
  • Ubuntu Studio一个不错的操作系统

    Ubuntu Studio一个不错的操作系统

    Ubuntu Studio 是一个基于 Ubuntu 而面向音频、视频及图形爱好者的操作系统。本次推出的 Ubuntu Studio 为 7.04 版,目前仅支持 Intel i386 兼容的处理器。 Ubuntu Studio 从大量的开源多媒体创作程序
    2019-10-25
  • 最受欢迎的10款Linux免费游戏

    最受欢迎的10款Linux免费游戏

    图为在Linux下运行的免费游戏America's Army 如果你认为 Linux下没有什么好游戏的话,那就错了!我们来看看Linux下最受欢迎的10款游戏吧,而且这些游戏都是完全免费的! # skyreal update(06-12
    2019-10-25
  • compiz fusion特效使用心得(附3D桌面图)

    compiz fusion特效使用心得(附3D桌面图)

    3D桌面图 LINUX发行版就是好,当大多数人还在沉迷于那些什么风格图标鸟玻璃效果甚至孜孜不倦津津乐道的时候,Linux的高手们已经悄悄为我们开启了一个桌面系统3D的时代。 当我第一次
    2019-10-25
  • Ubuntu 下aMule 的安装配置

    Ubuntu 下aMule 的安装配置

    aMule 是一个类似于 eMule 的多平台 P2P 客户端程序。以下将简略叙述 aMule 在 Ubuntu 中的安装及配置 [High ID] 与 [KAD] 的过程。 安装: sudo apt-get install amule sudo apt-get install amule-utils 如果需要
    2019-10-25
  • JMeter jp@gc - stepping thread group插件

    JMeter jp@gc - stepping thread group插件

    这是一个出单接口压力测试的小例子,了解一下压力测试最最基础的基础。出单接口是用来保险出单的,不需要在UI界面下一步下一步的出单,接口一调数据入库完事~~~。再啰嗦一句接
    2019-10-27
  • Ubuntu 下使用K3B软件刻录光盘(图)

    Ubuntu 下使用K3B软件刻录光盘(图)

    不知大家会不会在Ubuntu下刻录光盘呢?k3b是KDE环境下的一个CD/DVD刻录软件,有非常容易使用的界面,功能比较齐全。用起来感觉就象是win下的Nero一样简单自然,比ubuntu里原来的刻录CD方式
    2019-10-25