Flink HA方案介绍

news2024/10/5 21:24:31

1.Flink HA方案介绍

每个Flink集群只有单个JobManager,存在单点失败的情况。Flink有YARN、Standalone和Local三种模式,其中YARN和Standalone是集群模式,Local是指单机模式。但Flink对于YARN模式和Standalone模式提供HA机制,使集群能够从失败中恢复。这里主要介绍YARN模式下的HA方案。

Flink支持HA模式和Job的异常恢复。这两项功能高度依赖ZooKeeper,在使用之前用户需要在“flink-conf.yaml”配置文件中配置ZooKeeper,配置ZooKeeper的参数如下:

high-availability: zookeeper
high-availability.zookeeper.quorum: ZooKeeperIP地址:24002
high-availability.storageDir: hdfs:///flink/recovery

YARN模式

Flink的JobManager与YARN的Application Master(简称AM)是在同一个进程下。YARN的ResourceManager对AM有监控,当AM异常时,YARN会将AM重新启动,启动后,所有JobManager的元数据从HDFS恢复。但恢复期间,旧的业务不能运行,新的业务不能提交。ZooKeeper上还是存有JobManager的元数据,比如运行Job的信息,会提供给新的JobManager使用。对于TaskManager的失败,由JobManager上Akka的DeathWatch机制监听处理。当TaskManager失败后,重新向YARN申请容器,创建TaskManager。

Standalone模式

对于Standalone模式的集群,可以启动多个JobManager,然后通过ZooKeeper选举出leader作为实际使用的JobManager。该模式下可以配置一个主JobManager(Leader JobManager)和多个备JobManager(Standby JobManager),这能够保证当主JobManager失败后,备的某个JobManager可以承担主的职责。如下图所示为主备JobManager的恢复过程。
恢复过程
在这里插入图片描述

TaskManager恢复

对于TaskManager的失败,由JobManager上Akka的DeathWatch机制监听处理。当TaskManager失败后,由JobManager负责创建一个新TaskManager,并把业务迁移到新的TaskManager上。

JobManager恢复

Flink的JobManager与YARN的Application Master(简称AM)是在同一个进程下。YARN的ResourceManager对AM有监控,当AM异常时,YARN会将AM重新启动,启动后,所有JobManager的元数据从HDFS恢复。但恢复期间,旧的业务不能运行,新的业务不能提交。

Job恢复

Job的恢复必须在Flink的配置文件中配置重启策略。当前包含三种重启策略:fixed-delay、failure-rate和none。只有配置fixed-delay、failure-rate,job才可以恢复。另外,如果配置了重启策略为none,但job设置了Checkpoint,默认会将重启策略改为fixed-delay,且重试次数是配置项“restart-strategy.fixed-delay.attempts”配置为“Integer.MAX_VALUE”。
三种策略的具体信息请参考Flink官网:https://ci.apache.org/projects/flink/flink-docs-release-1.15/dev/task_failure_recovery.html。配置策略的参考如下:

restart-strategy: fixed-delay
restart-strategy.fixed-delay.attempts: 3
restart-strategy.fixed-delay.delay: 10 s

以下场景的异常,都会导致job重新恢复:

  • 当JobManager失败后,所有Job会停止,直到新的JobManager起来后,所有Job恢复。
  • 当某一TaskManager失败后,这个TaskManager上的所有作业都将停止,然后等待有可用资源后重启。
  • 当某个Job的Task失败后,整个Job也会重启。

说明: 有关Job的配置重启策略,具体内容请参见https://ci.apache.org/projects/flink/flink-docs-release-1.15/ops/jobmanager_high_availability.html。

2.组件的关系

Flink支持基于YARN管理的集群模式,在该模式下,Flink作为YARN上的一个应用,提交到YARN上执行。Flink基于YARN的集群部署如下图所示。

Flink基于YARN的集群部署
在这里插入图片描述

  1. Flink YARN Client首先会检验是否有足够的资源来启动YARN集群,如果资源足够的话,会将jar包、配置文件等上传到HDFS。
  2. Flink YARN Client首先与YARN Resource Manager进行通信,申请启动Application Master(以下简称AM)的Container,并启动AM。等所有的YARN的Node Manager将HDFS上的jar包、配置文件下载后,则表示AM启动成功。
  3. AM在启动的过程中会和YARN的RM进行交互,向RM申请需要的Task Manager Container,申请到Task Manager Container后,启动TaskManager进程。
  4. 在Flink YARN的集群中,AM与Flink JobManager在同一个Container中。AM会将JobManager的RPC地址通过HDFS共享的方式通知各个TaskManager,TaskManager启动成功后,会向JobManager注册。
  5. 等所有TaskManager都向JobManager注册成功后,Flink基于YARN的集群启动成功,Flink YARN Client就可以提交Flink Job到Flink JobManager,并进行后续的映射、调度和计算处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/744744.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【历史上的今天】7 月 12 日:世界上第一台商用数字计算机;Python 之父卸任 BDFL;Wacom 成立

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 7 月 12 日,在 1854 年的今天,伊士曼柯达公司的创始人、胶卷的发明者乔治伊斯曼(George Eastman )出生&#xf…

NC55 最长公共前缀

import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** param strs string字符串一维数组* return string字符串*/public String longestCommonPrefix (String[] strs) {int n s…

类和对象(—)

今天,我带来类和对象的基础篇。 目录 面向对象和面向过程类类的概念类的定义类的访问限定符c中struct和class的区别封装类的作用域类的实例化类的存储结构体内存对齐规则【面试题】this指针this指针的概念this指针的特性 【面试题】 面向对象和面向过程 C语言是面向…

[PyTorch][chapter 44][时间序列表示方法3]

简介: word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单、高效,因此引起了很多人的关注。由于 word2vec 的作者 Tomas Mikolov 其主要知识点 目录: word2vec 基本思想 Skip-gram cbow Hierarchical sof…

MedNeXt的一些问题集锦

归纳偏差是一种关于机器学习算法的目标函数的假设,也就是目标函数评分的标准。 归纳偏差是指模型更容易学习到训练数据中的局部和表面特征,而较难捕捉全局和抽象特征。 scalable 可扩展的 network-wide优势??? 深度监…

(论文精读)PRUNING FILTER IN FILTER《滤波器中的剪枝滤波器》

论文地址:原文 代码实现 中文翻译 一、精读论文 论文题目 PRUNING FILTER IN FILTER 论文作者 Fanxu Meng 孟繁续 刊物名称 NeurIPS 2020 出版日期 2020 摘要 剪枝已成为现代神经网络压缩和加速的一种非常有效的技术。现有的剪枝方法可分为两大类:滤波器…

MVC三层架构

1.MVC三层架构 MVC(Model-View-Controller)是一种常见的软件设计模式,用于组织和管理应用程序的代码和逻辑。它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器&#…

营销同质化,博鱼 sports牵手那不勒斯打开新大门

体育营销是企业进入新市场的经典方式,特别是对当今寻求高质量发展的国产品牌而言,从产品出海升级为品牌出海,体育营销可谓是一条必经之路。海信、OPPO、华为等中国品牌通过持续的体育营销不断拉近自身与海外消费者的距离,成功在海…

反常积分定义

目录 反常积分的定义 判断敛散性的方法 方法2: 例题 无界函数的反常积分 判断敛散性的方法 例题 反常积分的定义 该极限存在就表示该反常积分收敛 对于定义3,只有两个都收敛的情况下,原反常积分才收敛。 判断敛散性的方法 始终大的函数形成…

走进USB的U1模式

综述: PCIE有PM和ASPM两种功耗管理模式,USB只有一种 USB有U1/U2/U3三种低功耗模式 本文只针对U1进行分析 如下图所示,为主要状态变换 背景知识 U1是一种低功耗模式,定义的是link的状态不是设备的状态发送LGO_X进入低功耗模式&a…

C++图形开发(12):随机方块的速度和高度

文章目录 1.随机高度2.随机速度3.整段代码4.总结 1.随机高度 那既然是随机,自然少不了随机函数rand()咯~ 详见:C爱好者的自我修养(17):rand()随机函数 那么随机速度就可以是: rect_height rand() % int(height / 4)…

【在 WSL2 GUI 中使用 pulseaudio 播放声音】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、pulseaudio 是什么?二、部署步骤1.下载PulseAudio2.前提条件3.开始配置1.配置pulseaudio2.配置麦克风权限3.配置WSL2外放4.配置WSL2麦克风 总结…

hbase之引入Phoenix

Phoenix简介 Phoenix是HBase的开源SQL皮肤。可以使用标准JDBC API代替HBase客户端API来创建表,插入数据和查询HBase数据。 1)容易集成:如Spark,Hive,Pig,Flume和Map Reduce; 2&#xf…

RocketMQ5.0消息存储<四>_刷盘机制

RocketMQ5.0消息存储<四>_刷盘机制 一、刷盘概览 RocketMQ存储与读写是基于JDK NIO的内存映射机制(MappedByteBuffer),消息存储时首先将消息追加到文件内存映射(commit操作),再根据配置的刷盘策略在不同时间进行刷写到磁盘(flush操作)。同步刷盘,消息提交到文件内…

计算机实习学习总结报告10篇

计算机实习学习总结报告篇1 一、实习单位: 来到实习单位后主要是在门市从事产品的销售和商家间渠道工作。在工作的过程中了解计算机相关行业的发展现状及趋势;熟悉计算机硬件组装、计算机系统及软件安装、局域网搭建;掌握典型计算机网络工程的安装与维护;了解网站…

Linux之Shell进阶(变量和条件判定语句)

文章目录 变量变量的含义变量的定义与使用(重点)只读变量接收用户输入删除变量 条件判断语句 变量 变量的含义 什么是量? 量就是数据. 什么是变量? 数据可以发生改变就是变量。 在一个脚本周期内,其值可以发生改变的量就是变…

python调用钉钉发送告警消息

zabbix和prometheus都能做监控告警调用企业微信和钉钉。那么问题来了做为一名合格的运维和开发人员,脚本发现故障告警,自动调用发送详细告警内容,这点儿东西得会。 效果图如下: 普通发送方式 import requestsdef dingding_info(…

AR 技术应用与管理解决方案:施工建造、机柜扫描、办公室导航

建筑行业作为人类历史上最重要的产业之一,在数字化转型方面同样也在不断推进。图扑软件结合 AR 技术的应用,为建筑行业带来了更加便捷高效的建筑施工过程管理。 传统的建筑施工管理过程中,由于缺乏信息化手段,往往存在资料不全、…

解决microsoft windows 恶意软件删除工具 占用内存高

1、winR快捷键,输入regedit,按回车键进入注册表编辑器 2、定位到 \HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\ 并创建新项MRT 3、 新建DWORD(32)值,命名为DontOffer ThroughWUAU,数值数据为1; 4、以管理员身份运行命令提示符&#x…

vue3的customRef

文章来源:我的博客,欢迎访问,不欢迎攻击,谁攻击谁儿子 customRef 作用:实现一个自定义的ref,并对其依赖项跟踪和更新触发进行显示控制 像是下面的代码一样: <template><div class"lim"><div class"btns"><el-input type"text…