Flink根本原理 + WebUI分析 + 常见标题分析

[复制链接]
发表于 2026-2-24 16:49:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
Flink 概述

Flink 是一个用于举行大规模数据处置惩罚的开源框架,它提供了一个流式的数据处置惩罚 API,支持多种编程语言和运行时环境。Flink 的核心长处包罗:

  • 低耽误:Flink 可以在毫秒级的时间内处置惩罚数据,提供了低耽误的数据处置惩罚本领。
  • 高吞吐:吞吐量巨大。
  • 分布式盘算:Flink 支持分布式盘算,它可以在大规模集群上运行,并提供了高可用和容错机制。
  • 流式数据处置惩罚:Flink 基于流式数据处置惩罚模子,支持实时数据处置惩罚和数据增量更新。
  • 变乱驱动:Flink 的盘算引擎是基于变乱驱动的,它使用消息通报机制来处置惩罚数据。
Flink 的数据处置惩罚流程

Flink 的数据处置惩罚流程包罗以下几个步调:

  • 数据输入:Flink 可以从各种数据源中读取数据,如 Kafka、HDFS 等。
  • 数据转换:Flink 可以使用 DataStream API 或 SQL API 对数据举行转换和处置惩罚。
  • 数据分区:Flink 可以根据数据的属性或规则对数据举行分区,以便在分布式集群上举行处置惩罚。
  • 数据传输:Flink 可以使用网络传输机制将数据传输到其他节点或历程。
  • 数据输出:Flink 可以将处置惩罚后的数据写入到各种数据存储中,如 Kafka、HDFS 等。
Flink架构分析

Flink 运行时由两种范例的历程构成:一个 JobManager 和一个大概多个 TaskManager。

JobManager

类似于司令官,分配工作给干活的士兵(TaskManager),听取士兵的报告,当士兵失败时做出规复等反应。
JobManager 具有很多与调和 Flink 应用步伐的分布式实行有关的职责:它决定何时调理下一个 task(或一组 task)、对完成的 task 或实行失败做出反应、调和 checkpoint、而且调和从失败中规复等等。这个历程由三个差异的组件构成:

  • ResourceManager
  • ResourceManager 负责 Flink 集群中的资源提供、接纳、分配 - 它管理 task slots,这是 Flink 集群中资源调理的根本单位。
  • Dispatcher
  • Dispatcher 提供了一个 REST 接口,用来提交 Flink 应用步伐实行,并为每一个提交的作业启动一个新的 JobMaster。它还运行 Flink WebUI 用来提供作业实行信息。
  • JobMaster
  • 1个JobMaster 负责管理1个JobGraph的实行。Flink 集群中可以同时运行多个作业,每个作业都有本身的 JobMaster。
    始终至少有一个 JobManager。高可用(HA)设置中大概有多个 JobManager,此中一个始终是 leader,其他的则是 standby(请参考 高可用(HA))。
TaskManager

TaskManager(也称为 worker):实行JobManager分配过来的任务,并向JobManager报告。taskManager之间也会互换数据
TaskManager中会有一到多个task slot, task slot是资源调理的最小单位, task slot 的数目表现并发处置惩罚task的数目。假设1个task有N个算子,那么实行这个task的slot 就会实行N个算子(直到竣事)。
Client

Client 不是运行时和步伐实行的一部分,而是用于准备数据流并将其发送给 JobManager。
Task和算子(Operator)

非分布式场景


假设步伐现在须要依次颠末以下算子:source->map->keyBy->window->apply->Sink,如果每个算子都用1个线程实行的话,一共有多达6个线程,不但导致线程间切换、缓冲数据会有不小的开销,还低落了吞吐量。
为低落线程切换、缓冲的开销,Flink会把可以在同一个线程中实行的算子,链在一起,我们管他叫“算子链”。如图有3个算子链:source+map是1个算子链,keyBy+window+apply是1个算子链,sink是一个。每个算子链会由1个Task来实行。
统计下数目:共有3个Task,会占用3个Task Slot实行。
线程数从6缩减成3个,低落了线程间切换、缓冲数据的开销。
把哪些算子“链”在一起,是可以设置的。
分布式场景


分布式场景下,工作会有多个taskManager共同完成工作。如图所示,当前并行度为2.
统计下数目:共有5个Task,每个Task会被分配到1个Task Slot上实行,以是会占用5个Slot。
以是Task Slot的数目,决定了可以并行实行多少个Task。
Task Slots 和资源

1个TaskManager下的task slots共享CPU资源,但内存会分开。
1个TaskManager都是一个 JVM 历程,这导致TaskManager下的slot会共享TCP毗连和心跳信息。

Task Slot共享办理壅闭标题

继续上面的例子,1个Task被分配到1个Slot中:

如许会有1个标题:只有Source\Map拿到数据后,keyBy操纵才华开始处置惩罚,这会导致keyBy地点算子有大概空闲。
为办理如许一个标题,Flink使用了Slot共享:slot被多个Task共享,如下图:

通过Slot共享,将示例中的根本并行度从 2 个增长到 6 个,让每个Slot都可以实行Source算子,如许Source地点的Slot就不会壅闭别的Slot了。如许可以充实使用Slot的资源,同时确保繁重的Task们在 TaskManager 之间公中分配。
小总结:

1. Flink通过将多个算子链在一起,镌汰了线程之间的切换开销
2. 将任务分配到多个TaskManager上,进步了处置惩罚的速率
3. 末了通过Slot共享,确保Slot之间不会壅闭,充实让Slot繁忙起来。

WebUI界面+常见标题排查思绪

通过Web UI,可以看到TaskManager、Slot的数目用于速率调优,也可以检察日记用于标题排查。
Flink的Web UI界面的地点是http://localhost:8081,此中localhost是JobManager的主机地点,8081是JobManager的Web UI端标语。在欣赏器中输入这个地点,就可以访问Flink的Web UI界面了。
集群概览:检察任务是否正常运行、资源是否须要扩容

点击1个Job检察Job详情:

点击1个算子检察算子详情:检察数据倾斜、反压等性能标题

TaskManager:可以检察TaskManager的日记排查标题,注意蛋疼的是标题不肯定出现在哪个TaskManager上。

JobManager:

Flink 的容错机制

Flink 的容错机制是通过 Checkpointing 实现的。Checkpointing 允许用户在处置惩罚流式数据时定期生存状态,以便在出现故障时规复状态。Flink 的容错机制包罗以下几个步调:

  • 界说 Checkpointing 计谋:用户须要界说 Checkpointing 的频率和生存状态的位置。
  • 触发 Checkpointing:在处置惩罚数据时,Flink 会根据界说的 Checkpointing 计谋触发 Checkpointing。
  • 规复状态:在出现故障时,Flink 会根据生存的 Checkpointing 规复状态。
Flink 的应用场景

Flink 可以应用于多种场景,如:

  • 实时数据处置惩罚:Flink 可以用于实时数据处置惩罚,如实时监控监控、实时分析等。
  • 数据洗濯:Flink 可以用于数据洗濯,如数据去重、数据洗濯等。
  • 数据分析:Flink 可以用于数据分析,如数据统计、数据发掘等。
  • 数据集成:Flink 可以用于数据集成,如数据同步、数据迁移等。
Flink常见算子

Flink 的常见算子包罗:

  • Source:从上游网络数据
  • Sink:发送数据给卑鄙
  • Map:对输入数据举行转换操纵,如数据洗濯、数据格式化等。
  • FlatMap:对输入数据举行扁平化操纵,将一个数据项转换为多个数据项。
  • Filter:对输入数据举行筛选操纵,只保存符合条件的数据项。
  • KeyBy:对输入数据举行分组操纵,根据指定的键对数据举行分组。
  • Reduce:对输入数据举行聚合操纵,将多个数据项聚合为一个数据项。
  • Window:对输入数据举行窗口操纵,将数据按照指定的窗口巨细举行分组。
  • Union:对多个输入数据举行归并操纵,将多个数据聚集并为一个数据集。
  • Split:对输入数据举行分裂操纵,将一个数据集分裂为多个数据集。
  • Join:对多个输入数据举行毗连操纵,将多个数据集按照指定的键举行毗连。
  • SQL:对输入数据举行 SQL 查询操纵,使用 SQL 语句对数据举行查询和分析。
    这些算子可以组合使用,以实现更复杂的数据处置惩罚逻辑。
总结

Flink 是一个用于举行大规模数据处置惩罚的开源框架,它提供了一个流式的数据处置惩罚 API,支持多种编程语言和运行时环境。Flink 的核心特点包罗流式数据处置惩罚、变乱驱动、分布式盘算、低耽误等。Flink 的核心组件包罗 DataStream API、SQL API、Stateful Stream Processing、Checkpointing 等。Flink 的数据处置惩罚流程包罗数据输入、数据转换、数据分区、数据传输、数据输出等。Flink 的状态管理是通过 Stateful Stream Processing 实现的,它允许用户在处置惩罚流式数据时维护状态。Flink 的容错机制是通过 Checkpointing 实现的,它允许用户在处置惩罚流式数据时定期生存状态,以便在出现故障时规复状态。Flink 可以应用于多种场景,如实时数据处置惩罚、数据洗濯、数据分析、数据集成等。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表