Flink优化器与源码解析系列--Flink相关基本概念

2022-04-25 15:51:07 浏览数 (1)

背景

Apache Flink是用于分布式流和批处理数据处理的开源平台。Flink的核心是流数据流引擎,可为数据流上的分布式计算提供数据分发,通信和容错能力。Flink在流引擎之上构建批处理,覆盖了本机迭代支持,托管内存和程序优化。本文档适用于Apache Flink 1.10版。

学习Flink就要先从相关基本概念了解,才能更好理解笔者下一篇文章“Flink优化器与源码解析系列--Flink内存模型详解”。才能更好的理解Flink分布式运行原理。

基本概念

  • Flink Application ClusterFlink应用程序集群

Flink应用程序集群是仅执行一个Flink Job专用的Flink Cluster。Flink Cluster的生命周期就是Flink Job的生命周期。在工作模式下,相对于与Flink Session Cluster而言,之前的Flink应用程序集群也称为Flink集群 。

  • Flink Cluster Flink集群

通常由一个Flink Master和一个或多个 Flink TaskManager进程组成的一种分布式系统。

  • Event 事件

事件是有关由应用程序建模的域的状态更改的声明。事件可以是流或批处理应用程序的输入和/或输出。事件是特殊类型的记录。

  • Function 函数

功能由用户实现,并封装Flink程序的应用程序逻辑。大多数函数由相应的运算符包装 。

  • Instance 实例

术语实例用于描述特定类型的(通常的特定实例 操作或功能在运行期间)。由于Apache Flink主要是用Java编写的,因此它对应于Java中的Instance或Object的定义。在Apache Flink的上下文中,术语“ 并行实例”也经常用来强调相同操作符或函数类型的多个实例正在并行运行。

  • Flink Job Flink作业

Flink作业是Flink程序的运行时表示形式。Flink作业既可以提交到长期运行的Flink会话集群,也可以作为独立的Flink应用程序集群启动。

  • Flink JobManager Flink作业管理器

JobManager是Flink Master中运行的组件之一。JobManager负责监督单个作业的任务执行。在历史上,整个Flink Master都称为JobManager。

  • Logical Graph 逻辑图

逻辑图是描述流处理程序的高层次逻辑的有向图。节点是操作符Operators,边edges指示数据流或数据集相应的操作符Operators的输入/输出关系。

  • Managed State 管理状态

管理状态描述了已在框架中注册的应用程序状态。对于管理状态,Apache Flink将特别关注持久性和重新缩放。

  • Flink Master

Flink主机是Flink群集的主机。它包含三个不同的组件:Flink资源管理器,Flink调度程序和 每个运行的Flink Job一个Flink JobManager。

  • Operator 操作符或算子

逻辑图的节点。操作符执行某种操作,通常由Function执行。Sources 和 Sinks是用于数据摄取和数据出口的特殊操作符Operators。

  • Operator Chain 操作链

一个操作符链由两个或多个连续的操作符Operators组成,中间没有任何重新分配。同一操作符链中的操作符Operators无需经过序列化或Flink的网络堆栈即可直接将记录彼此传输。

  • Partition 分区

分区是整个数据流或数据集的独立子集。通过将每个记录分配给一个或多个分区,将数据流或数据集划分为多个分区。任务Task在运行时使用数据流或数据集的分区。改变数据流或数据集分区方式的转换通常称为重新分区repartitioning。

  • Physical Graph 物理图

物理图是转换逻辑图以在分布式运行时中执行的结果。节点是任务,边缘指示数据流或数据集的输入/输出关系或分区。

  • Record 记录

记录是数据集或数据流的组成元素。操作符Operators和函数接收记录作为输入,并发出记录作为输出。

  • Flink Session Cluster Flink会话集群

长期运行的Flink群集,它接受多个Flink作业来执行。此Flink群集的生命周期与每个Flink作业的生命周期有关。以前,Flink Session Cluster Flink会话群集在会话模式下也称为Flink群集。

  • State Backend 后端状态

对于流处理程序,Flink作业的后端状态确定如何在每个TaskManager(TaskManager的Java堆或(嵌入式)RocksDB)上存储其状态,以及如何在检查点checkpoint上写入状态(Flink Master或文件系统的Java堆) )。

  • Sub-Task 子任务

子任务是负责处理数据流分区partition的任务。术语“子任务”强调针对同一操作符或算子Operator or Operator Chain有多个并行任务 。

  • Task 任务

物理图的节点。任务是基本工作单元,由Flink的运行时执行。任务恰好封装了一个操作符或算子Operator or Operator Chain的并行实例 。

  • Flink TaskManager Flink任务管理器

TaskManager是Flink群集的工作进程worker processes。任务Task安排在TaskManager中执行。它们彼此通信以在后续任务之间交换exchange数据。

  • Transformation 转换

将转换应用于一个或多个数据流或数据集,并产生一个或多个输出数据流或数据集。转换可能会更改每个记录的数据流或数据集,但也可能仅更改其分区或执行聚合。尽管操作符或算子Operators和函数Functions是Flink API的“物理”部分,但转换只是API概念。具体而言,大多数转换是由某些操作符或算子Operators实现的

总结

本篇文章介绍Flink相关基本概念,其是学习Flink的开始,更深入理解Flink分布式运行原理和内存模型构成,如何调优内存和故障排除等问题。

0 人点赞