Flink架构及其工作原理(很详细)
作者头像
  • 邱茜茜
  • 2019-11-24 12:52:15 5

Flink 架构与实战技巧

更多关于大数据架构和实战经验,欢迎关注我们的公众号【大数据与机器学习】,一起成长!

目录

  • 系统架构
  • 数据传输
  • 事件时间处理
  • 状态管理
  • 检查点、保存点及状态恢复

系统架构

Flink 是一款专注于分布式流处理的框架,它在处理大规模数据时表现出色。为了满足分布式系统的需求,Flink 需要处理资源分配、任务调度、数据存储以及故障恢复等关键问题。

Flink 组件
  • JobManager:负责接收应用程序请求,包括 StreamGraph、JobGraph 和 JAR 文件,并将其转换为 ExecutionGraph。JobManager 类似于 Spark 的 Driver,负责资源请求、任务调度和元数据管理。
  • ResourceManager:通常与 Yarn 集成,负责监控 TaskManager 的状态,并根据需要启动或关闭 TaskManager。
  • TaskManager:类似于 Spark 的 Executor,运行多个任务线程,并负责数据缓存与交换。
  • Dispatcher:提供 REST 接口,接收客户端的应用程序提交请求,并负责启动 JobManager 和提交应用程序。

任务(Task)是调度的基本单位,由一个线程执行,内部包含一个或多个操作符(Operator)。操作符之间可以形成操作链(Operation Chain),前提是它们需要相同的并发度并且数据传输方式一致。

资源管理

Flink 使用 Slot 作为资源管理的基本单位,每个 Slot 包含了一定数量的资源。一个 TaskManager 可以拥有多个 Slot,Slot Sharing Group 使得多个任务可以在同一个 Slot 中运行。然而,Slot Sharing Group 并不能完全保证资源隔离,因此在实际应用中,通常会采用一个任务一个 Slot 的策略。


数据传输

Flink 中的任务执行涉及到数据在不同任务之间的传输。每个 TaskManager 会使用 Buffer 来存储和传输数据。当发送方和接收方位于不同的进程中时,操作系统网络栈会介入进行数据传输。每对 TaskManager 之间会保持永久的 TCP 连接,以便于数据交换。

数据传输过程中,如果接收方的处理速度低于发送方的发送速度,可能会导致数据积压。在这种情况下,Flink 会利用 Local Exchange 和 Remote Exchange 机制来应对背压问题。


事件时间处理

在 Flink 中,事件时间处理依赖于事件的时间戳和水印(Watermark)。水印是一种特殊的记录,用来指示事件时间的进展。水印必须是递增的,并且可以用来判断迟到数据。

水印与事件时间

水印是由 Operator 接收并处理的特殊记录。任务内部的定时器服务会根据水印的 timestamp 更新外部的事件时间钟。定时器会在事件时间钟小于水印 timestamp 时触发回调,从而释放记录并返回结果。

只有 ProcessFunction 可以读取和修改时间戳或水印。这种机制允许任务根据事件时间来处理数据,从而实现精确的一次性状态一致性。


状态管理

在 Flink 中,状态管理是指任务维护并用于计算的所有数据。这些状态可以被分类为 Operator State 和 Keyed State。

  • Operator State:由同一并行任务处理的所有记录可以访问相同的状态,但其他任务或操作符无法访问。
  • Keyed State:具有相同键的记录共享一个状态。

Flink 提供了几种状态类型,包括 Value State、List State、Map State 和 Broadcast State。状态后端决定了状态如何存储、访问和维护。常见的状态后端包括 MemoryStateBackend、FsStateBackend 和 RocksDBStateBackend。


检查点、保存点及状态恢复

检查点机制

Flink 的检查点机制基于 Chandy-Lamport 分布式快照算法。检查点屏障(Checkpoint Barrier)由 JobManager 生成,并带有检查点 ID。当源任务收到检查点信息时,会暂停发送记录,并触发状态后端对本地状态的检查点,然后广播检查点 ID 到所有下游任务。

恢复机制

在恢复过程中,Flink 会利用检查点机制来恢复任务状态。检查点机制还可以通过 Savepoints 功能来暂停作业,方便调试和迁移作业。


希望以上内容对您有所帮助,如果您有任何疑问或需要进一步的信息,请随时联系我们。

    本文来源:图灵汇
责任编辑: : 邱茜茜
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
架构原理及其详细工作Flink
    下一篇