大数据面试题之Flink(1)

目录

Flink架构 

Flink的窗口了解哪些,都有什么区别,有哪几种?如何定义? 

Flink窗口函数,时间语义相关的问题 

介绍下Flink的watermark(水位线),watermark需要实现哪个实现类,在何处定义?有什么作用? 

Flink的窗口(实现)机制 

说下Flink的CEP 

说一说Flink的Checkpoint机制 

Flink的Checkpoint底层如何实现的?savepoint和checkpoint有什么区别? 

Flink的Checkpoint流程 

Flink Checkpoint的作用 


Flink架构 

Apache Flink 是一个开源的流处理和批处理框架,设计用于高吞吐、低延迟、状态管理和容错的分布式计算。Flink 的架构设计使其能够高效地处理无界和有界数据流,支持复杂的事件处理和大规模数据分析。Flink 的核心架构可以分为以下几个关键组件:

1、JobManager(作业管理器):
JobManager 是 Flink 集群的主节点,负责接收提交的作业(Job),对作业进行解析、优化生成执行计划,并将执行计划分发给TaskManager执行。
它还负责资源管理、调度任务、监控TaskManager的状态以及协调检查点(checkpoint)机制,确保作业的容错性。
2、TaskManager(任务管理器):
TaskManager 是 Flink 集群的工作节点,负责真正执行数据处理任务。
每个TaskManager管理着一定数量的插槽(slots),每个插槽可以运行一个或多个线程,代表了TaskManager的并行执行能力。
TaskManager接收来自JobManager的任务指令,执行数据流的处理工作,并与其它TaskManager进行数据交换。
3、DataFlow(数据流):
Flink程序定义了一组数据流转换操作,这些操作形成了一个数据流图(DAG),描述了数据从源头到sink的流动过程。
Flink的数据流模型支持高度灵活的时间概念(event time, ingestion time, processing time),使得时间相关的计算更加精确和强大。
4、Checkpointing & State Management(检查点与状态管理):
Flink通过周期性地创建分布式快照(检查点)来实现容错,保证了在发生故障时能从最近的一个检查点恢复执行,实现状态的一致性。
状态管理允许任务在处理数据时维护中间状态,这对于复杂的流处理逻辑(如窗口聚合、计数、排行等)至关重要。
5、Source & Sink(数据源与数据接收器):
数据源(Source)定义了数据输入的来源,可以是文件系统、消息队列(如Kafka)、数据库等。
数据接收器(Sink)则是数据流的终点,负责将处理后的数据输出到外部系统,如数据库、文件系统或者另一个消息队列。
6、Runtime(运行时):
Flink的运行时系统负责执行DAG,实现了数据流的分布式处理逻辑。它支持流处理和批处理两种模式,并通过一套统一的API和执行模型来实现。
7、Planner & Optimizer(规划器与优化器):
Flink的规划器和优化器负责将用户编写的程序转换成高效的执行计划。这包括逻辑计划的优化、物理执行计划的生成以及资源分配策略等,目的是最小化数据处理的延迟和资源消耗。

Flink的窗口了解哪些,都有什么区别,有哪几种?如何定义? 

1、滚动窗口(Tumbling Window):
这是最简单的窗口类型,它将数据流切分为不重叠的固定大小的窗口。
每个元素只能属于一个窗口,窗口长度固定,且没有重叠。
定义方式:通过 timeWindow(Time.seconds(x)) 或 countWindow(y),其中 x 是时间长度,y 是元素数量。
2、滑动窗口(Sliding Window):
滑动窗口也是固定大小的窗口,但窗口之间可以有重叠。
通过设置窗口长度(Size)和滑动步长(Slide),可以控制窗口的生成频率和数据覆盖范围。
定义方式:timeWindow(Time.seconds(size), Time.seconds(slide)) 或 countWindow(count, slide)。
3、会话窗口(Session Window):
会话窗口用于处理具有静默期的数据流,当数据流中一段时间没有数据到来,则认为一个会话结束,开始一个新的会话。
窗口的开始是第一个事件,结束是最后一个事件加上一个可配置的静默间隔(gap),如果没有更多事件,则窗口关闭。
定义方式:通常使用自定义的 WindowAssigner,如 SessionWindows.withGap(Time.minutes(gap))。
4、全局窗口(Global Window):
全局窗口将所有数据放入一个单一的大窗口中,常用于需要处理整个数据流的场景。
由于数据可能永远不会“结束”,因此通常需要结合触发器(Triggers)来决定何时计算结果。
定义方式:默认情况下,未指定窗口时即为全局窗口,也可以显式使用 globalWindow()。
定义窗口通常涉及以下几个步骤:

 1) 选择KeyBy:首先,确定是否需要按某个键(key)对数据流进行分组,因为窗口操作通常是基于KeyedStream进行的。
 2) 选择WindowAssigner:选择或定义一个WindowAssigner,它负责将输入数据分配到特定的窗口中。
 3) 设置Trigger(可选):触发器定义了窗口何时被触发计算结果,默认情况下,Flink提供了基于时间或计数的触发器,但可以自定义更复杂的触发逻辑。
 4) 应用Window Function:窗口函数定义了在每个窗口上执行的具体计算,如sum、count、average等。
这些窗口机制允许开发者根据具体需求灵活地处理数据流,比如分析过去一分钟内的用户活动、每五秒滑动统计、用户会话内的行为汇总等。

Flink窗口函数,时间语义相关的问题 

一、Flink窗口函数

窗口函数是Flink中用于将多个事件按照时间或其他特征分组,从而将每一组作为整体进行分析的一类算子。窗口是DataStream的逻辑边界,它可以将无限的数据流切分成有限的数据块,以便于进行各种计算和分析。

Flink支持多种类型的窗口函数,包括:

 1) 基于时间的窗口:如滚动时间窗口(tumbling time window)和滑动时间窗口(sliding time window)。滚动时间窗口是固定大小的、不重叠的时间区间;而滑动时间窗口是固定大小的、可重叠的时间区间。
 2) 计数窗口:如滚动计数窗口(tumbling count window)和滑动计数窗口(sliding count window)。这类窗口是基于事件的数量来定义的。
 3) 会话窗口:会话窗口是基于活动间隔来定义的,当事件之间的时间间隔超过设定的阈值时,会话就会结束。
二、Flink时间语义

Flink中的时间语义主要有三种:事件时间(Event Time)、处理时间(Processing Time)和摄入时间(Ingestion Time)。

1、事件时间(Event Time):

  • 定义:事件时间是每个独立事件在产生它的设备上发生的时间,通常在进入Flink之前就已经嵌入在记录中。
  • 特点:基于事件的物理时间或者逻辑时间,可以消除不同系统或数据源之间的时间同步问题,使数据处理结果更符合实际情况。但是,由于网络延迟等原因,数据可能会乱序到达,需要使用水位线(Watermark)机制来处理乱序数据。
  • 应用场景:适用于对时间准确性要求较高的场景,如金融交易、物流追踪等。

2、处理时间(Processing Time):

  • 定义:处理时间是指执行相应操作的机器的系统时间。
  • 特点:处理时间是最简单的时间概念,不需要在流和机器之间进行协调,提供了最佳的性能和最低的延迟。但是,在分布式和异步环境中,处理时间不具有确定性,因为它容易受到记录到达系统的速度以及系统内算子之间流动速度的影响。
  • 应用场景:适用于对实时性要求非常高,但对时间准确性要求不高的场景。

3、摄入时间(Ingestion Time):

  • 定义:摄入时间是数据进入Source算子的时间。
  • 特点:摄入时间仅依赖于数据进入Source算子的时间,因此不会受制于不同算子的计算时间。它避免了不同算子处理速度的影响,同时也不需要使用水位线机制,延迟也较低。
  • 应用场景:适用于需要在数据进入系统后立即进行处理的场景,同时对时间准确性的要求介于事件时间和处理时间之间。

三、水位线(Watermark)机制

在Flink中,水位线(Watermark)是一个基于事件时间的逻辑时钟,用于衡量当前系统事件时间的进展。水位线是一条特殊的数据记录,被插入到数据流中作为一个时间戳的标记点,用于触发窗口的闭合以及定时器的触发。通过水位线,Flink可以正确地处理乱序数据,确保数据的正确性和实时性。

介绍下Flink的watermark(水位线),watermark需要实现哪个实现类,在何处定义?有什么作用? 

在Apache Flink中,Watermark(水位线)是一个特殊的元素,用于处理乱序事件流中的时间。在事件时间(Event Time)处理中,由于网络延迟、系统负载或其他原因,事件可能不会按照它们实际发生的时间顺序到达Flink系统。Watermark机制允许Flink确定某个时间点之前的数据是否都已经到达,从而可以安全地关闭时间窗口并进行计算。

Watermark并不需要实现特定的类,但你可以通过WatermarkGenerator接口来定义如何生成Watermark。然而,在大多数情况下,你并不需要直接实现这个接口,因为Flink提供了默认的Watermark生成器(如AssignerWithPeriodicWatermarks和AssignerWithPunctuatedWatermarks),你可以通过继承这些类来简化Watermark的生成。

Watermark通常在FlatMapFunction、KeyedProcessFunction或其他流处理函数中定义和发出。例如,在使用AssignerWithPeriodicWatermarks时,你可以在extractTimestamp方法中为每个事件提取时间戳,并在getCurrentWatermark方法中定义如何基于已处理的事件来生成Watermark。

Watermark的主要作用有:

1、处理乱序事件:由于网络延迟或其他原因,事件可能会乱序到达。Watermark允许Flink确定某个时间点之前的数据是否都已经到达,从而可以安全地关闭时间窗口并进行计算。
2、控制延迟:Watermark允许你设置一个最大延迟时间,即允许事件延迟到达的最长时间。超过这个时间的事件将被视为迟到事件,并可以根据你的业务逻辑进行处理(例如,忽略它们或将其发送到侧输出流)。
3、触发窗口计算:Watermark的推进会触发基于时间的窗口(如滚动时间窗口和滑动时间窗口)的关闭和计算。当Watermark超过窗口的结束时间时,该窗口就会被关闭并触发相应的计算。
4、状态清理:随着Watermark的推进,Flink可以清理不再需要的状态数据,从而释放内存并提高性能。
总的来说,Watermark是Flink事件时间处理中的一个核心概念,它允许Flink处理乱序事件流并控制延迟,从而提供更准确和可靠的实时数据流处理功能。

Flink的窗口(实现)机制 

Apache Flink 的窗口机制是其处理无界和有界数据流的核心特性之一,它允许用户在无限数据流上执行有限范围的聚合计算,如求和、平均值、最大值等。Flink 提供了几种不同类型的窗口,以及灵活的窗口分配器和触发器,以适应各种业务场景。以下是 Flink 窗口机制的主要组成部分和实现方式:

窗口类型
 1) 时间窗口(TimeWindow):基于时间划分窗口,如每5分钟或每1小时一个窗口。时间窗口可以是滚动窗口(Tumbling Window,不重叠),滑动窗口(Sliding Window,可重叠),或者会话窗口(Session Window,基于静默时间间隔划分)。
 2) 计数窗口(CountWindow):基于数据的数量划分窗口,例如每1000条记录一个窗口,与数据到达的时间无关。
 3) 全局窗口(Global Window):所有数据都属于一个大窗口,通常需要配合触发器来定义何时计算结果,避免无限等待。
窗口分配器(WindowAssigner)

  • WindowAssigner 负责将数据流中的每个元素分配到一个或多个窗口中。例如,TumblingEventTimeWindows.of(Time.seconds(5)) 会将每个事件分配到最近的5秒窗口。

触发器(Trigger)

  • Trigger 决定一个窗口何时应该被“触发”计算结果。默认情况下,时间窗口使用基于水印的机制来处理延迟数据,而计数窗口则在窗口填满时触发。用户也可以自定义触发器来满足特定的业务逻辑。

状态管理

  • 窗口内部的状态(如累加器)由 Flink 的状态后端(State Backend)管理,确保了在故障恢复时状态的一致性和精确性。

水印(Watermarks)

  • 在基于事件时间的处理中,Flink 使用水印来处理乱序事件和定义窗口的结束边界。水印是一种机制,表示到目前为止系统已处理数据的最晚时间戳,用于判断哪些事件是迟到的。

实现机制概览
 1) 数据流入:数据元素进入 Flink 系统,经过 Source 并分配到各个 TaskManager 上的 Task。
 2) 窗口分配:每个 Task 中的 WindowAssigner 根据配置的窗口类型和大小,将数据元素分配到相应的窗口。
 3) 状态累积:元素在窗口内累积,状态(如计数、总和等)被维护在 TaskManager 的状态后端中。
 4) 触发计算:当触发器条件满足(如时间窗口到期、计数窗口满、自定义触发条件等),窗口函数被执行,对窗口内的数据进行聚合计算。
 5) 结果输出:计算结果被输出到下一个操作或直接写入外部系统(如数据库、消息队列)。
 6) 容错与恢复:Checkpoint 机制确保在故障发生时,窗口状态可以被恢复,从而保证计算的精确性。
通过上述机制,Flink 实现了对数据流的灵活且高效的窗口处理,支持复杂的事件处理和数据分析场景。

说下Flink的CEP 

Apache Flink 的 Complex Event Processing(CEP)库是一个强大的工具,用于在无界或有界数据流中检测复杂事件模式。Flink CEP 允许用户定义一系列事件模式,并实时地从数据流中识别这些模式,从而快速做出反应或洞察数据中的重要信息。下面是关于 Flink CEP 的几个关键点:

主要功能
 1) 模式匹配:CEP 的核心是其模式匹配能力,它允许用户定义复杂的事件序列(pattern),比如连续事件、不连续事件、事件的顺序、时间间隔约束等。
 2) 实时处理:Flink CEP 集成了 Flink 的强大流处理能力,能够实时处理数据流,即时发现并响应事件模式。
 3) 灵活性:用户可以通过高度灵活的API来定义事件模式,这些模式可以非常简单也可以极其复杂,适应各种业务场景。
 4) 状态管理:利用 Flink 的状态管理机制,CEP 可以处理长时间窗口和历史数据,保持对事件上下文的精确追踪。
 5) 性能优化:Flink CEP 旨在高效处理大量数据流,通过优化的算法减少不必要的计算和存储开销。
使用方法
 1) 定义模式:使用 Pattern 类来定义事件模式。模式可以包括单个事件(简单模式)以及事件间的连接(如 followedBy、notFollowedBy、next 等)和时间约束(如 after、within)。
 2) 创建Pattern Stream:将原始数据流转换为 PatternStream,这是通过将定义好的模式应用到 KeyedStream 上实现的。
 3) 应用CEP:调用 PatternStream#select 或 PatternStream#flatSelect 方法,传入一个或多个 PatternSelectFunction 或 PatternFlatSelectFunction 来处理匹配到的事件模式,并输出结果。
 4) 触发与评估:定义合适的触发策略(Triggers)来控制何时评估窗口内的数据,尽管这更多是Flink窗口机制的一部分,但在CEP中也会影响模式匹配的时机。
应用场景
 1) 异常检测:在金融交易中检测欺诈行为,如短时间内大额交易或不寻常的交易模式。
 2) 物联网(IoT):实时监测设备传感器数据,识别故障前兆或异常行为。
 3) 用户行为分析:在电商或社交媒体中,分析用户浏览、点击、购买等行为序列,发现用户偏好或潜在的营销机会。
 4) 网络安全:实时监控网络流量,检测潜在的攻击模式。
总之,Flink CEP 是一种强大的工具,它使得开发者能够在持续变化的数据流中捕获有价值的信息,适用于需要实时分析和决策的多种应用场景。

说一说Flink的Checkpoint机制 

1. Checkpoint的定义和目的

  • 定义:Checkpoint是作业状态的快照,它包括了作业的整体状态信息,如所有操作符的状态、水印信息和元数据。
  • 目的:Checkpoint的目的是保留作业在某个时刻的一致性状态,以便在发生故障时能够恢复到这个状态。

2. Checkpoint的容错性和状态管理

  • 容错性:当Task Manager或作业的部分任务发生故障时,Flink可以使用Checkpoint来恢复任务的状态,从而保持作业的正确性和一致性。
  • 状态管理:对于有状态的流处理作业,Checkpoint机制可以保存和管理作业的状态,使得作业可以处理无界流数据,并跟踪处理进度。

3. Checkpoint的保证一致性

  • Checkpoint机制与事件时间处理和水印生成一起使用,确保事件的处理是一致的,即使在发生故障或重启后也能保持一致性。

4. Checkpoint的配置和参数

  • Checkpoint间隔:指定了Flink多久执行一次Checkpoint。较短的间隔可以提供更好的容错性,但也会增加开销。
  • 最大同时进行的Checkpoint数量:控制同时进行的Checkpoint的数量。默认情况下,Flink只允许一个Checkpoint运行,但可以根据需求调整该参数。
  • Checkpoint时间限制:设置Checkpoint的最大时间限制。如果Checkpoint在规定时间内未完成,则会被丢弃。
  • 外部化状态:可以配置Checkpoint是否将状态数据保存到外部存储系统(如分布式文件系统)中,以便更好地管理状态的持久化和恢复。

5. Checkpoint与状态后端

  • Flink的Checkpoint机制与状态后端紧密相关。状态后端负责实际存储Checkpoint数据。Flink支持多种状态后端,包括内存、RocksDB、以及将Checkpoint数据存储到分布式文件系统等选项。

6. Checkpoint的实现原理

  • Flink的Checkpoint机制原理来自"Chandy-Lamport algorithm"算法(分布式快照算法)的一种变体:异步barrier快照(asynchronous barrier snapshotting)。
  • Barrier是Flink Checkpoint中的一个核心概念,由流数据源注入数据流中,并作为数据流的一部分与数据记录一起往下游流动。Barriers将流里的记录分隔为一段一段的记录集,每一个记录集都对应一个快照。
  • 当一个算子从所有输入流都接收到一个快照(n)的barrier时,它首先会生成该算子的状态快照,然后往该算子的所有下游广播一个barrier。

7. Checkpoint的总体过程

  1. 初始化:JobManager向所有source节点触发Checkpoint,source节点在数据流中安插Checkpoint barrier。
  2. 广播barrier:source节点向下游广播barrier,下游的task只有收到所有input的barrier才会执行相应的Checkpoint。
  3. 状态备份:当task完成state备份后,会将备份数据的地址(state handle)通知给Checkpoint coordinator。
  4. 收集确认:下游的sink节点收集齐上游的barrier之后,会执行本地快照,并通知Checkpoint coordinator。
  5. 全局完成:当Checkpoint coordinator收集齐所有task的state handle,就认为这一次的Checkpoint全局完成了,并向持久化存储中再备份一个Checkpoint meta文件。

8. Checkpoint的语义

  • Flink Checkpoint支持两种语义:Exactly_Once和At_Least_Once。这两种语义的区别主要在于对barrier对齐方式的处理。Flink默认的Checkpoint语义是Exactly_Once。

Flink的Checkpoint底层如何实现的?savepoint和checkpoint有什么区别? 

Apache Flink 的 Checkpoint 机制是其核心容错策略之一,用于在分布式计算过程中定期创建流应用的状态快照,以确保在遇到故障时能够从最近的一个检查点恢复,从而达到 Exactly-Once 的处理语义。以下是 Flink Checkpoint 的底层实现原理和 Savepoint 与 Checkpoint 的区别概述:

Checkpoint 的底层实现
 1) 触发机制:Checkpoint 的触发是由 JobManager 控制的,按照用户配置的时间间隔(例如,每隔5分钟)或特定条件自动发起。JobManager 向 Source 任务发送一个 Checkpoint 开始的 barrier(屏障),这个 barrier 随着数据流一起向下传递,直到所有任务都接收到它。
 2) 状态快照:当一个任务接收到 barrier 时,它会将当前状态(如算子状态、窗口状态等)的快照保存下来。对于有状态的操作,Flink 利用状态后端(如 MemoryStateBackend、RocksDBStateBackend)来完成状态的持久化。状态快照的生成可以是增量的,即仅保存自上次 Checkpoint 后发生变化的部分状态。
 3) 一致性保证:为了确保所有任务在同一个检查点上,barrier 必须按照数据流的拓扑顺序传递,确保了跨任务状态的一致性。一旦所有任务都完成了状态快照的创建,JobManager 就会通知所有 TaskManager 确认 Checkpoint 完成,并记录下这个检查点的元数据,用于故障恢复。
Savepoint 与 Checkpoint 的区别
 1) 目的不同:

  • Checkpoint 主要是为系统容错设计的,用于在故障发生时自动恢复,确保作业的连续性和状态的准确性。
  • Savepoint 则更多是为了用户操作准备的,例如在升级作业版本、修改作业拓扑、迁移作业到其他集群时,用户可以手动触发 Savepoint 保存当前作业状态,便于后续恢复作业时保持原有状态不变。

 2) 触发方式:

  • Checkpoint 是由系统根据配置自动周期性触发的,无需用户干预。
  • Savepoint 需要用户手动触发,通常通过命令行工具或API调用来执行。

 3) 存储和生命周期管理:

  • Checkpoint 的存储位置、保留策略等由系统管理,通常只保留最近几个成功的 Checkpoint。
  • Savepoint 存储位置由用户指定,且通常需要手动管理其生命周期,用户可以选择永久保存或手动删除。

 4) 使用场景:

  • Checkpoint 适用于持续运行且需要自动恢复的生产作业。
  • Savepoint 更适合在进行作业维护、升级或迁移等计划性操作时使用。

虽然 Savepoint 在实现上基于 Checkpoint 的机制,但它们在使用目的、触发方式和管理策略上有所区别,分别满足了不同的应用场景需求。

Flink的Checkpoint流程 

Flink的Checkpoint流程是一个确保分布式流式处理作业容错性和一致性的重要机制。以下是Flink Checkpoint流程的详细解释,按照分点表示和归纳:

1、初始化Checkpoint:

  • Checkpoint由JobMaster的CheckpointCoordinator发起。
  • 当JobMaster的状态转换为运行状态时,CheckpointCoordinator开始调度并触发Checkpoint。
  • 定时调度器(如ScheduledTrigger)负责按照配置的间隔定时触发Checkpoint。

2、触发Checkpoint:

  • CheckpointCoordinator通过RPC(远程过程调用)向所有SourceTask发送TriggerCheckpoint请求。
  • SourceTask在收到请求后,开始Checkpoint流程。

3、广播Checkpoint Barrier:

  • SourceTask向下游广播Checkpoint Barrier。这个Barrier是实现Chandy-Lamport分布式快照算法的核心,用于在数据流中标记一个快照的开始和结束。
  • Barrier在数据流中传递,确保在Barrier之前的所有事件都被处理完毕,并且Barrier之后的事件不会被包含在当前的Checkpoint中。

4、快照状态:

  • 当task(包括SourceTask和非SourceTask)收到所有上游input的Barrier后,开始执行状态快照。
  • 状态快照包括task的当前状态(如变量值、缓冲区数据等),并将这些状态数据备份到外部存储系统(如HDFS、RocksDB等)。
  • 状态快照分为同步和异步两个阶段:
  1. 同步阶段:task执行状态快照,并写入外部存储系统。这通常涉及对状态的深拷贝、写入状态的元数据信息和状态本身等步骤。
  2. 异步阶段:执行同步阶段创建的异步任务(如FutureTask),并向Checkpoint Coordinator发送ACK(确认)响应。

5、收集快照结果:

  • Sink节点在收集齐上游的Barrier后,执行本地快照,并将快照结果通知给Checkpoint Coordinator。
  • Checkpoint Coordinator持续收集所有task的快照结果,直到所有task都完成快照并发送ACK响应。

6、完成Checkpoint:

  • 当Checkpoint Coordinator收集齐所有task的ACK响应后,认为这一次的Checkpoint全局完成。
  • Checkpoint Coordinator向持久化存储中再备份一个Checkpoint meta文件,该文件记录了这次Checkpoint的元信息。

7、通知和恢复:

  • 一旦Checkpoint完成,Checkpoint Coordinator会向所有task发送通知,告知它们Checkpoint已完成。
  • 如果作业发生故障或需要恢复,Flink可以利用最近的Checkpoint来恢复作业到一致的状态。

总结:Flink的Checkpoint流程通过协调各个task的状态快照,确保了在分布式流式处理作业中数据的容错性和一致性。Checkpoint机制是Flink实现Exactly-Once语义的关键组成部分。

Flink Checkpoint的作用 

Apache Flink 中的 Checkpoint 机制具有以下几个关键作用:

1、数据容错与恢复:最核心的作用是在处理数据流时提供容错能力。当系统发生故障(如硬件故障、软件错误等)时,Flink 能够利用 Checkpoint 将应用状态恢复到最近的一个成功 Checkpoint 状态,从而保证数据处理的连续性和精确性,实现 Exactly-Once 的处理语义。
2、状态一致性保障:通过全局的分布式快照(Snapshot)技术,Checkpoint 确保了整个数据流处理管道中所有任务的状态是一致的,即在快照时刻,所有任务看到的是同一个逻辑上的数据视图。
3、动态调整并行度:Checkpoint 记录了每个任务的进度信息,这意味着在需要调整作业并行度以优化性能或适应资源变化时,可以从 Checkpoint 恢复,保证状态的连续性和正确性,而不会丢失已经处理的数据或重复处理。
4、长期状态保存与恢复:尽管主要服务于故障恢复,Checkpoint 也支持将状态保存较长时间,这对于需要从较早时间点恢复作业或者进行数据分析的场景非常有用。
5、自动化与无侵入性:Checkpoint 是由 Flink 自动管理和执行的,对用户代码透明,开发者不需要显式地在代码中添加容错逻辑,简化了应用程序的开发和维护。
6、高性能与低延迟:Flink 的 Checkpoint 实现尽量减少对正常数据处理流程的影响,采用异步和增量的方式创建状态快照,力求在保证数据一致性和完整性的同时,最小化对处理延迟的影响。
综上所述,Checkpoint 是 Flink 实现高度可靠、高性能数据流处理的重要机制,它确保了在分布式环境中的数据处理既准确又健壮。

引用:https://www.nowcoder.com/discuss/353159520220291072

通义千问、文心一言

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

文本超长省略的几种方式(vue)

第一种&#xff0c;纯css 在给容器设置宽度后&#xff0c;使用css来省略文本超长部分&#xff0c;但是这样就看不到全部的内容 <template><div class"content"><div class"text">{{ text }}</div></div> </template>&…

Vue3 登录成功,浏览器存在toke,再次访问/login路由到/index 首页页面

文章目录 目录 文章目录 流程 小结 概要流程技术细节小结 概要 首先需要清楚知道浏览器localstorage和Session storage的区别 localStorage 和 sessionStorage 是 HTML5 提供的两种客户端存储数据的方法&#xff0c;它们在使用和生命周期上有一些区别&#xff1a; 1. 生命周期…

1.回溯算法.题目

1.回溯算法.题目 题目9.子集问题10.子集||11.递增子序列12.全排列13.全排列||14.回溯算法去重问题的另外一个写法15.重新安排行程16.N皇后 总结去重方式的不同 题目 9.子集问题 &#xff08;题目链接&#xff09; 给定一组不含重复元素的整数数组 nums&#xff0c;返回该数组…

宝塔linux网站迁移步骤

网站迁移到新服务器步骤 1.宝塔网站迁移&#xff0c;有个一键迁移工具&#xff0c;参考官网 宝塔一键迁移API版本 3.0版本教程 - Linux面板 - 宝塔面板论坛 (bt.cn)2 2.修改域名解析为新ip 3.如果网站没有域名&#xff0c;而是用ip访问的&#xff0c;则新宝塔数据库的wp_o…

mysql主键自增连续新增时报错主键重复-Duplicate entry “x” for key PRIMARY

mysql主键自增连续新增时报错主键重复 1、mysql数据库设置数据库主键自增的规律 id -- AUTO_INCREMENT2、可视化工具查看自增没问题 3、问题描述 新增第一个时操作成功&#xff0c;新增第二个时候操作失败报错&#xff1a; Duplicate entry “x” for key PRIMARY4、分析&a…

[BUUCTF从零单排] Web方向 02.Web入门篇之『常见的搜集』解题思路(dirsearch工具详解)

这是作者新开的一个专栏《BUUCTF从零单排》&#xff0c;旨在从零学习CTF知识&#xff0c;方便更多初学者了解各种类型的安全题目&#xff0c;后续分享一定程度会对不同类型的题目进行总结&#xff0c;并结合CTF书籍和真实案例实践&#xff0c;希望对您有所帮助。当然&#xff0…

手把手教你考下39张免费亚马逊AWS证书和学习徽章

小李哥目前共考了39项亚马逊云(AWS)徽章&#xff0c;这也是普通用户可考的全部徽章。这篇文章会介绍如何报名、复习、通过这39张徽章提升云计算基本技能&#xff0c;了解全球第一大云厂亚马逊云科技前沿技术。这篇文章在领英爆&#x1f525;&#xff0c;有将近100k浏览量和11k的…

Linux:系统安全及应用

目录 一、系统账号管理 1.1、系统账号清理 1.2、密码安全控制 1.3、命令历史限制 二、限制su命令用户 三、PAM安全认证 四、sudo机制提升权限 4.1、sudo机制介绍 4.2、用户别名案例 4.3、启用sudo操作日志 4.4、其他案列sudo 4.5、开关机安全控制 4.6、限制更改GR…

root密码忘了怎么办(从系统引导过程解决)

目录 1.Linux系统密码忘记 2.系统引导过程 2.1 systemd 2.2 GRUB和GRUB2 2.3 运行级别 3.修复MBR扇区故障和GRUB引导故障 3.1 MBR扇区故障 3.2 GRUB引导故障 1.Linux系统密码忘记 我们在生活中经常遇到这类困扰&#xff0c;就是某个账号还是账户密码忘了&#xff0c;这…

Docker 部署 Nacos v2.3.2 版本

文章目录 Github官网文档Nacos 生态图Nacos Dockerdocker-compose.ymlapplication.propertiesNacos 官方示例 Github https://github.com/alibaba/nacos 官网 https://nacos.io/ 文档 https://nacos.io/docs/latest/what-is-nacos/ Nacos 生态图 Nacos Docker 镜像&…

《信创数据库沙龙上海站:共话发展,智启未来》

2024 年 6 月 29 日周六 14:00&#xff0c;信创数据库沙龙在上海市徐汇区建国西路 285 号科投大厦 13 楼金星厅成功举办。本次活动吸引了众多学术界和产业界的专家、学者以及技术爱好者参与。 活动中&#xff0c;多位嘉宾带来了精彩分享。薛晓刚探讨了 Oracle 在国内的前景&a…

Java全套智慧校园系统源码:微信小程序+电子班牌 让教育更智能化的一套数字化校园管理系统源码

Java全套智慧校园系统源码&#xff1a;微信小程序电子班牌 让教育更智能化的一套数字化校园管理系统源码 智慧校园管理系统是一种利用科技手段优化学校教育和管理的平台。它可以涵盖多个方面&#xff0c;例如教学、管理、服务等。其中包括智能化教室、智慧校园卡、校园安全监控…

基于flask的闪现、g对象、蓝图

【 一 】闪现&#xff08;flash&#xff09; # 1 flask中得闪现存放数据的地方&#xff0c;一旦取了&#xff0c;数据就没了-实现跨请求间传递数据 # 2 django中有没有类似的东西&#xff1f;message 消息框架# 3 基本使用1 设置&#xff1a;flash(欢迎你、欢迎来到澳门赌场&a…

Dns被莫名篡改的问题定位(笔记)

引言&#xff1a;最近发现用户的多台机器上出现了Dns被莫名修改的问题&#xff0c;从系统事件上看并未能正常确定到是那个具体软件所为&#xff0c;现在的需求就是确定和定位哪个软件具体所为。 解决思路&#xff1a; 首先到IPv4设置页面对Dns进行设置&#xff1a;通过ProcExp…

昇思25天学习打卡营第8天|MindSpore-SSD目标检测

SSD目标检测介绍 SSD,全称Single Shot MultiBox Detector,是Wei Liu在ECCV 2016上提出的一种目标检测算法。使用Nvidia Titan X在VOC 2007测试集上,SSD对于输入尺寸300x300的网络,达到74.3%mAP(mean Average Precision)以及59FPS;对于512x512的网络,达到了76.9%mAP ,超…

短视频电商源码怎么选择

随着移动互联网的迅猛发展&#xff0c;短视频电商成为了一种热门的商业模式。很多商家和创业者都希望能够快速搭建一个短视频电商平台来推广和销售自己的产品。然而&#xff0c;选择合适的短视频电商源码并不是一件容易的事情。在选择之前&#xff0c;有一些关键因素需要考虑。…

STC8/32 软硬件I2C通讯方式扫描I2C设备地址

STC8/32 软硬件I2C通讯方式扫描I2C设备地址 📄主要用于检测挂载在I2C总线上的设备。在驱动I2C设备之前,如果能扫描到该设备,说明通讯设备可以连接的上,在提前未知I2C地址的情况下,可以方便后面的驱动代码的完善。 🔬扫描测试效果:(测试mpu6050以及ssd1306 i2c oled )…

本科学历|艺术创业公司经理限定美国西部访问学者申请成功

U经理属于自费访学&#xff0c;本科学历&#xff0c;无文章及课题&#xff0c;但有较丰富的艺术创意及艺术教育实际操作经验&#xff0c;要求申美国西部地区的学校。最终我们为其获得俄勒冈州立大学访问学者邀请函。之前拟定的申请设想全部实现&#xff1a;西部地区、专业契合、…

【Lua小知识】Vscode中Emmylua插件大量报错的解决方法

起因 Vscode写Lua用的好好的&#xff0c;最近突然出现了大量报错。 看报错是有未定义的全局变量&#xff0c;这里查日志才发现是由于0.7.5版本新增诊断启用配置&#xff0c;所以导致了原先好的代码&#xff0c;现在出现了大量的报错。 解决方案一 最直接的方法当然是在配置中直…

【单片机毕业设计选题24040】-基于STM32的蓝牙防丢器设计

系统功能: 系统上电后显示“欢迎使用蓝牙防丢系统请稍后”两秒钟显示正常界面&#xff0c;如果蓝牙正常连接OLED显示Connected, 蓝牙未连接则显示DisConnected同时蜂鸣器报警 蓝牙正常连接后在APP上每隔三秒显示一个Connected 系统功能框图: 主要功能模块原理图: 电源时钟…