词汇表

词汇表 #

Flink Application 集群是专用的 Flink Cluster,仅从 Flink Application 执行 Flink JobsFlink Cluster 的寿命与 Flink Application 的寿命有关。

Flink Job 集群是专用的 Flink Cluster,仅执行一个 Flink JobFlink Cluster 的寿命与 Flink Job 的寿命有关。

一般情况下,Flink 集群是由一个 Flink JobManager 和一个或多个 Flink TaskManager 进程组成的分布式系统。

Event #

Event 是对应用程序建模的域的状态更改的声明。它可以同时为流或批处理应用程序的 input 和 output,也可以单独是 input 或者 output 中的一种。Event 是特殊类型的 Record

ExecutionGraph #

Physical Graph

Function #

Function 是由用户实现的,并封装了 Flink 程序的应用程序逻辑。大多数 Function 都由相应的 Operator 封装。

Instance #

Instance 常用于描述运行时的特定类型(通常是 Operator 或者 Function)的一个具体实例。由于 Apache Flink 主要是用 Java 编写的,所以,这与 Java 中的 InstanceObject 的定义相对应。在 Apache Flink 的上下文中,parallel instance 也常用于强调同一 Operator 或者 Function 的多个 instance 以并行的方式运行。

一个 Flink 应用程序是一个 Java 应用程序,它从 main() 方法(或通过一些其他方式)提交一个或多个 Flink Jobs。 提交 jobs 通常是通过调用 ExecutionEnvironment 的 execute() 方法来完成的。

一个应用程序的作业可以提交给一个长期运行的 Flink Session Cluster,或者提交到一个专用的 Flink Application Cluster,或提交到 Flink Job Cluster

Flink Job 表示为 runtime 的 logical graph(通常也称为数据流图),通过在 Flink Application 中调用 execute() 方法来创建和提交 。

JobGraph #

Logical Graph

Flink JobManager 是 Flink Cluster 的主节点。它包含三个不同的组件:Flink Resource Manager、Flink Dispatcher、运行每个 Flink JobFlink JobMaster

JobMaster 是在 Flink JobManager 运行中的组件之一。JobManager 负责监督单个作业 Task 的执行。以前,整个 Flink JobManager 都叫做 JobManager。

JobResultStore #

JobResultStore 是一个 Flink 组件,它将全局终止(已完成的、已取消的或失败的)作业的结果保存到文件系统中,从而使结果比已完成的作业更长久。 这些结果然后被 Flink 用来确定作业是否应该在高可用集群中被恢复。

Logical Graph #

逻辑图是一种有向图,其中顶点是 算子,边定义算子的输入/输出关系,并对应于数据流或数据集。通过从 Flink Application 提交作业来创建逻辑图。

逻辑图通常也称为数据流图

Managed State #

Managed State 描述了已在框架中注册的应用程序的托管状态。对于托管状态,Apache Flink 会负责持久化和重伸缩等事宜。

Operator #

Logical Graph 的节点。算子执行某种操作,该操作通常由 Function 执行。Source 和 Sink 是数据输入和数据输出的特殊算子。

Operator Chain #

算子链由两个或多个连续的 Operator 组成,两者之间没有任何的重新分区。同一算子链内的算子可以彼此直接传递 record,而无需通过序列化或 Flink 的网络栈。

Partition #

分区是整个数据流或数据集的独立子集。通过将每个 Record 分配给一个或多个分区,来把数据流或数据集划分为多个分区。在运行期间,Task 会消费数据流或数据集的分区。改变数据流或数据集分区方式的转换通常称为重分区。

Physical Graph #

Physical graph 是一个在分布式运行时,把 Logical Graph 转换为可执行的结果。节点是 Task,边表示数据流或数据集的输入/输出关系或 partition

Record #

Record 是数据集或数据流的组成元素。OperatorFunction接收 record 作为输入,并将 record 作为输出发出。

长时间运行的 Flink Cluster,它可以接受多个 Flink Job 的执行。此 Flink Cluster 的生命周期不受任何 Flink Job 生命周期的约束限制。以前,Flink Session Cluster 也称为 session modeFlink Cluster,和 Flink Application Cluster 相对应。

State Backend #

对于流处理程序,Flink Job 的 State Backend 决定了其 state 是如何存储在每个 TaskManager 上的( TaskManager 的 Java 堆栈或嵌入式 RocksDB),以及它在 checkpoint 时的写入位置( Flink JobManager 的 Java 堆或者 Filesystem)。

Sub-Task #

Sub-Task 是负责处理数据流 PartitionTask。“Sub-Task"强调的是同一个 Operator 或者 Operator Chain 具有多个并行的 Task 。

Task #

Task 是 Physical Graph 的节点。它是基本的工作单元,由 Flink 的 runtime 来执行。Task 正好封装了一个 Operator 或者 Operator Chainparallel instance

TaskManager 是 Flink Cluster 的工作进程。Task 被调度到 TaskManager 上执行。TaskManager 相互通信,只为在后续的 Task 之间交换数据。

Transformation #

Transformation 应用于一个或多个数据流或数据集,并产生一个或多个输出数据流或数据集。Transformation 可能会在每个记录的基础上更改数据流或数据集,但也可以只更改其分区或执行聚合。虽然 OperatorFunction 是 Flink API 的“物理”部分,但 Transformation 只是一个 API 概念。具体来说,大多数(但不是全部)Transformation 是由某些 Operator 实现的。

UID #

A unique identifier of an Operator, either provided by the user or determined from the structure of the job. When the Application is submitted this is converted to a UID hash.

UID hash #

A unique identifier of an Operator at runtime, otherwise known as “Operator ID” or “Vertex ID” and generated from a UID. It is commonly exposed in logs, the REST API or metrics, and most importantly is how operators are identified within savepoints.