大数据学习之Flink、10分钟了解Flink的核心组件以及它们的工作原理

 第一章、Flink的容错机制

第二章、Flink核心组件和工作原理

第三章、Flink的恢复策略

第四章、Flink容错机制的注意事项

第五章、Flink的容错机制与其他框架的容错机制相比较


目录

第二章、Flink核心组件和工作原理

Ⅰ、核心组件

1. Checkpoint组件:

2. Savepoint组件:

3. Barrier组件

4. State Backend组件

5. Recovery Strategy组件

6.‌Failover Strategy组件

7.‌Job Restart Strategy组件

Ⅱ、核心组件的工作原理

1. Checkpoint工作原理:

2. Savepoint工作原理:


第二章、Flink核心组件和工作原理

Ⅰ、核心组件

  • Flink的容错机制的核心组件包括CheckpointSavepoint。等等.. .. ..

1. Checkpoint组件:

一致性检查点

  • Checkpoint是用于容错和恢复的机制

  • CheckpointFlink实现容错机制最核心的功能组件,也是Flink四大基石之一,它在数据流处理过程中定期捕获作业状态的快照,并将其存储在可靠的存储系统中。

  • 当作业发生故障时,Flink 可以从最近的 Checkpoint 恢复,重新处理数据流,以保证数据的完整性和一致性。Checkpoint 的频率和大小可以通过配置参数进行设置。

2. Savepoint组件:

保存点

  • Savepoint则是用备份机制,于手动恢复的点。

  • SavepointFlink提供的一种备份机制,用于将作业的状态保存到一个指定的位置。

  • 与 Checkpoint 不同,Savepoint 不是为了容错而设计的,而是为了在升级作业或修改作业时能够恢复到之前的状态。通过创建一个 Savepoint,用户可以确保在升级或修改作业后能够回滚到之前的状态,而不会丢失数据或影响数据处理的正确性。

3. Barrier组件

分界线

  • 在检查点过程中,Flink使用分界线来确保到达某个检查点之前的所有数据变更都被包含在该检查点中

  • 分界线是一种特殊的‌数据形式‌,它沿着数据流向下传递,当所有相关的任务都收到了分界线,那么就可以认为该检查点完成了。

4. State Backend组件

状态后端

  • 状态后端是负责存储和管理任务状态的组件。

  • Flink支持多种状态后端实现,包括内存状态后端MemoryStateBackend‌、‌文件系统状态后端FsStateBackend‌和‌RocksDB状态后端RocksDBStateBackend等。

  • 状态后端负责将任务的状态保存到检查点,并在故障发生时从检查点恢复数据状态。

5. Recovery Strategy组件

恢复策略

  • 恢复策略定义了在发生故障时,如何从检查点恢复数据状态

  • Flink提供了多种恢复策略,包括固定延时重启策略失败率重启策略等,

  • 用户可以根据应用的需求进行定制。

6.‌Failover Strategy组件

故障恢复策略

故障恢复策略是Flink容错机制的一部分,它规定了在单个任务失败时,应如何恢复。Flink支持多种故障恢复策略,如RestartAllRestartIndividualStrategyRestartPipelinedRegionStrategy等,这些策略决定了在任务失败时应重启哪些任务。

7.‌Job Restart Strategy组件

作业重启策略

作业重启策略是Flink容错机制的另一个重要组成部分,它规定了在作业级别发生故障时应如何恢复Flink提供了多种作业重启策略,如FixedDelayRestartStrategyFailureRateRestartStrategyNoRestartStrategy等,这些策略决定了在作业失败时应如何重启作业。

Ⅱ、核心组件的工作原理

1. Checkpoint工作原理:

CheckpointFlink 实现容错机制最核心的功能。

它能够根据配置周期性地基于Stream中各个Operator 的状态来生成快照,这些状态数据会被定期持久化存储下来。当Flink程序一旦意外崩溃时,可以从这些快照进行恢复,修正因为故障带来的程序数据状态中断。在Checkpoint过程中,会在多个分布式Stream Source中插入一个Barrier标记,这些Barrier会根据Stream中的数据记录一起流向下游的各个Operator。当一个Operator接收到一个Barrier时,它会暂停处理Stream中新接收到的数据记录。当所有Stream中的Barrier都已经到达该Operator,这时所有的Barrier在时间上看来是同一个时刻点(表示已经对齐),在等待所有Barrier到达的过程中,Operator的Buffer中可能已经缓存了一些比Barrier早到达Operator的数据记录(Outgoing Records),这时该Operator会将数据记录(Outgoing Records)发射(Emit)出去,作为下游Operator的输入,最后将Barrier对应快照发射(Emit)出去作为此次Checkpoint的结果数据。

  1. 周期性触发:Checkpoint 是定期触发的,通常每隔一定数量的数据记录或一定时间间隔触发一次。这个频率可以根据需要进行配置,但一般来说,太频繁的 Checkpoint 会增加资源消耗,而太稀少的 Checkpoint 则可能无法满足容错的需求。

  2. 数据同步:在 Checkpoint 触发时,Flink 会暂停数据流的处理,并将已经处理的数据记录写入到持久化存储中。这个过程需要确保数据记录的一致性,避免出现数据丢失或重复的情况。

  3. 状态持久化:除了数据记录之外,Checkpoint 还会将各个 Operator 的状态信息也写入到持久化存储中。这些状态信息包括 Operator 的内部状态、缓冲区中的数据等。通过将状态信息持久化,Flink 可以在故障发生时,利用最新的 Checkpoint 进行恢复,保证数据的完整性和一致性。

  4. 数据校验:为了确保 Checkpoint 的正确性和完整性,Flink 还会对写入持久化存储的数据记录和状态信息进行校验。校验通常使用一些哈希算法或其他校验机制进行数据完整性的验证。

  5. 恢复机制:当 Flink 作业发生故障时,Flink 会根据配置的恢复策略,从最新的Checkpoint中读取数据记录和状态信息,并将作业恢复到 Checkpoint 时的状态。这个过程可以确保数据的完整性和一致性,避免因故障导致的数据丢失或不一致。

补充:

  • Apache Flink 中,Operator 是数据流处理的基本单元,负责处理一部分数据流。

    每个 Operator 根据其功能和需求,会对输入的数据进行相应的转换和处理。

  • Operator的作用:

    • 数据转换:将一个或多个数据流转换成新的数据流。这个过程中,Operator 会对输入的数据进行各种计算和转换,以满足后续处理的需求。

    • 数据处理:根据具体需求,Operator 可以进行各种数据处理操作,例如过滤、聚合、连接等。这些操作可以帮助用户实现更复杂的数据处理逻辑。

    • 数据分发:Operator 负责将处理后的数据发送到下游的 Operator 或存储系统。在这个过程中,Operator 会根据配置的策略,将数据发送到不同的目标,实现数据的分布式处理和存储。

2. Savepoint工作原理:

Savepoint 是用户触发的一种机制,它创建了程序全局状态的一个镜像。与Checkpoint不同,Savepoint不是为了容错而设计的,而是为了在升级作业或修改作业时能够恢复到之前的状态。通过创建一个 Savepoint,用户可以确保在升级或修改作业后能够回滚到之前的状态,而不会丢失数据或影响数据处理的正确性。当触发 Savepoint 时,Flink 会将作业的状态保存到一个指定的位置,这个状态包含了作业的所有状态信息,包括各个 Operator 的状态。用户可以使用 Savepoint 来恢复作业到之前的状态,重新处理数据流。

  1. 触发 Savepoint:用户通过触发Savepoint,通知Flink 将当前作业的状态保存到指定的位置。这个操作是手动的,需要用户显式地触发

  2. 保存状态:Flink 会将当前作业的状态信息保存到指定的存储系统中。这些状态信息包括各个 Operator 的状态、缓冲区中的数据等。

  3. 生成快照:Savepoint 触发时,Flink 会生成一个快照,这个快照包含了当前作业的状态信息。这个快照可以被视为一个一致性的状态,表示在 Savepoint 触发时的作业状态。

  4. 恢复状态:当需要从 Savepoint 恢复作业时,Flink 会从快照中读取状态信息,并将作业恢复到 Savepoint 触发时的状态。这样就可以保证在升级或修改作业后,能够回滚到之前的状态,而不会丢失数据或影响数据处理的正确性。

你可能感兴趣的:(大数据,Flink,数据库,网络,服务器)