flink主要组件及高可用配置

背景

flink不论运行在哪种环境,例如Yarn,Mesos,Kebernute以及独立集群,每个应用都会包含重要的几个组件,本文就来讲述下flink的主要组件以及如何实现flink的高可用配置

flink主要组件

在这里插入图片描述
如图所示,flink主要由Dispatcher,JobManager,ResourceManager,TaskManager是个组件组成,以下我们大概说一下他们的主要用途:
Dispatcher: 主要用于接收提交过来的应用程序Jar包,随后Dispatcher就会启动应用的JobManager开始启动flink引用,备注: 在Yarn中,Dispatcher这个角色的工作由ResourceManager角色完成
JobManager: flink应用的大脑,它负责生成Job Graph,并根据具体的ExecutionGraph申请相应的处理槽来执行任务,此外,他会负责检查点的生成等工作
ResourceManager:资源提供者,通过他可以分配到对应的TaskManager处理槽,这样这些处理槽就可以提供给flink任务使用了
TaskManager: 具体flink并行任务的执行者,他会完成数据的处理工作,比如除了输入记录并输出处理结果

高可用配置

TaskManager挂掉:
当TaskManager挂掉之后,JobManager可以知道运行在上面的任务失败了,此时JobManager就会通过ResourceManager申请另外的处理槽,如果成功,只需要在新申请的处理槽上处理失败的任务即可,如果申请处理槽失败,JobManager将会使用重启的策略尝试着申请足够的处理槽
JobManager挂掉:
JobManager挂掉后,这个flink应用的所有任务都会自动取消掉,JobManager需要从Zookeeper中恢复元数据以及检查点路径等管理职责所需的信息,因此接管的JobManager会完成以下的工作:
1.从zookeeper中获取元数据:包括JobGraph执行图存储路径,Jar文件存储路径以及最新检查点的存储路径等信息
2.重新申请作业执行所需的处理槽,也就是向ResourceManager重新申请处理任务所需的处理槽
3.使用最新检查点数据恢复应用的执行.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一些 Flink 面试题及其答案: 1. 什么是 FlinkFlink 是一个分布式的流处理引擎,可以处理无限数据流和有限数据集。它提供了高效的处理、低延迟、高可用性、精确的状态管理和灵活的部署方式,可以应用于多种场景中,如实时数据分析、实时数据处理、流式 ETL 等。 2. Flink主要特点是什么? Flink主要特点包括: - 支持精确的状态管理,可以处理大规模的有状态流处理任务; - 支持低延迟的流处理,可以处理实时数据,并且具有高吞吐量; - 支持多种处理模式,如窗口、流分组、流连接等,可以应用于多种场景; - 支持多种数据源和数据格式,如 Kafka、Hadoop、HBase、Avro、Parquet 等; - 支持多种部署模式,如本地模式、集群模式、YARN 模式、Mesos 模式等。 3. Flink 的架构是什么样子的? Flink 的架构主要包括以下几个组件: - JobManager:负责接收用户提交的作业,并且将作业分配给 TaskManager 执行; - TaskManager:负责执行具体的任务,包括数据读取、数据计算、数据输出等; - ResourceManager:负责管理 Flink 集群的资源,包括 CPU、内存、网络等; - BlobManager:负责管理 Flink 集群的二进制文件,如用户上传的 jar 包、配置文件等; - WebUI:提供 Web 界面,可以查看 Flink 集群的运行状态、作业状态等。 4. Flink 支持哪些数据源和数据格式? Flink 支持多种数据源和数据格式,如 Kafka、Hadoop、HBase、Avro、Parquet 等。此外,Flink 还支持自定义数据源和数据格式,用户可以根据自己的需要进行扩展。 5. Flink 的 Window 是怎么实现的? Flink 的 Window 可以分为两种类型:基于时间的 Window 和基于数量的 Window。基于时间的 Window 是通过设置一段时间范围来划分数据流,比如 5 秒钟的窗口,可以将 5 秒钟内的数据统计一次;基于数量的 Window 是通过设置一定数量的数据来划分数据流,比如 1000 条数据的窗口,可以将每 1000 条数据统计一次。Flink 的 Window 实现主要是通过 Trigger 和 Evictor 两个概念来完成的。Trigger 用于触发 Window 的计算,Evictor 用于清除过期的数据。 6. Flink 的 Checkpoint 是什么?有什么作用? Flink 的 Checkpoint 是一种机制,用于实现精确的状态管理。Checkpoint 可以将所有 TaskManager 中的状态数据保存到稳定的存储介质中,以便在发生故障时进行恢复。Checkpoint 的作用包括: - 提供精确的状态管理,可以保证数据的准确性和完整性; - 支持快速的恢复,可以在故障发生时尽快恢复数据; - 支持有限的重演,可以在故障发生后重新运行一段时间的数据。 7. Flink 的并行度是什么?如何设置并行度? Flink 的并行度是指在一个任务中并行执行的 TaskManager 的数量。并行度可以提高任务的处理效率,但是过高的并行度可能会导致内存和网络开销过大。并行度可以通过设置 TaskManager 的数量来进行调整,也可以通过设置算子的并行度来进行调整。 8. Flink 的时间语义是什么? Flink 的时间语义分为 EventTime、IngestionTime 和 ProcessingTime 三种。EventTime 是指事件发生的时间,通常是由数据本身携带的时间戳;IngestionTime 是指数据进入 Flink 系统的时间,通常是由 Flink 自动为数据生成的时间戳;ProcessingTime 是指数据被处理的时间,通常是由 TaskManager 本地的系统时间戳。不同的时间语义适用于不同的场景,EventTime 适用于需要按照事件发生的时间进行处理的场景,IngestionTime 适用于需要保证数据顺序的场景,ProcessingTime 适用于对处理延迟要求不高的场景。 9. Flink 的 Watermark 是什么?有什么作用? Flink 的 Watermark 是一种机制,用于处理乱序事件。Watermark 可以理解为一个时间戳,表示在这个时间之前的事件已经全部到达。Watermark 的作用包括: - 用于触发基于时间的 Window 的计算; - 用于处理乱序事件,保证数据的正确性; - 用于优化内存和网络开销,可以及时清除过期的数据。 10. Flink 的优缺点是什么? Flink 的优点包括: - 支持精确的状态管理,可以处理大规模的有状态流处理任务; - 支持低延迟的流处理,可以处理实时数据,并且具有高吞吐量; - 支持多种处理模式,如窗口、流分组、流连接等,可以应用于多种场景; - 支持多种数据源和数据格式,如 Kafka、Hadoop、HBase、Avro、Parquet 等; - 支持多种部署模式,如本地模式、集群模式、YARN 模式、Mesos 模式等。 Flink 的缺点包括: - 学习成本较高,需要掌握大量的概念和 API; - 部署和调试比较复杂,需要了解系统架构和配置参数; - 对硬件资源要求较高,需要配置较高的内存和网络带宽; - 对数据质量要求较高,需要保证数据的正确性和完整性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值