Flink基础整理

发布于:2025-05-08 ⋅ 阅读:(16) ⋅ 点赞:(0)


前言

提示:下面是根据网络或AI整理:


1.Flink系统架构

  • 用户在客户端提交作业(Job)到服务端。
  • 服务端为分布式的主从架构。
    • Dispatcher 服务负责提供 REST 接口来接收 Client 提交的 Job,运行 Web UI,并负责启动和派发 Job 给 JobManager。
    • Resource Manager 负责计算资源(TaskManager)的管理,其调度单位是 slots。
    • JobManager 负责整个集群的任务管理、资源管理、协调应用程序的分布执行,将任务调度到 TaskManager 执行、检查点(checkpoint)的创建等工作。
    • TaskManager(worker)负责 SubTask 的实际执行,提供一定数量的 Slots,Slots 数就是 TM 可以并发执行的task数。当服务端的 JobManager 接收到一个 Job 后,会按照各个算子的并发度将 Job 拆分成多个 SubTask,并分配到 TaskManager 的 Slot 上执行。
      在这里插入图片描述

2.编程模型(API层次结构)

在这里插入图片描述

  • 最底层提供了有状态流:可以自定义状态信息和处理逻辑,但是也需要你自己管理状态的生命周期,容错,一致性等问题。
  • 核心开发层:包括 DataStream API 和 DataSet API,它们提供了常见的数据转换,分组,聚合,窗口,状态等操作。这个层级的 api 适合大多数的流式和批式处理的场景。
  • 声明式 DSL 层:是以表为中心的声明式 DSL,其中表可能会动态变化(在表达流数据时)。Table API 提供了例如 select、project、join、group-by、aggregate 等操作
  • 结构化层:SQL API,它是最高层的 api,可以直接使用 SQL 语句进行数据处理,无需编写 Java 或 Scala 代码。这个层级的 api 适合需要快速响应业务需求,缩短上线周期,代码可移植性和可阅读性高,和自动调优的场景,但也最不灵活和最不具有表现力。

3.DataSet和DataStream区别

在这里插入图片描述

4.Flink的批流统一

概念: 批流统一是指Flink提供了一种统一的API和执行引擎,使得批处理(Batch Processing)和流处理(Stream Processing)可以使用相同的API进行编程,并且共享相同的执行计划和优化策略。这一特性简化了开发流程,减少了代码重复,同时提高了系统的灵活性和性能(一套代码处理流或批数据)。
体现在以下几个方面:

  • 统一的API:无论是处理有限的数据集(批处理)还是无限的数据流(流处理),开发者都可以使用同一套API进行编程。
  • 统一的执行引擎:Flink的执行引擎能够自动识别输入数据是批数据还是流数据,并选择合适的执行模式。
  • 统一的状态

网站公告

今日签到

点亮在社区的每一天
去签到