📜  Apache Flink-体系结构(1)

📅  最后修改于: 2023-12-03 14:39:16.285000             🧑  作者: Mango

Apache Flink-体系结构

Apache Flink是一个分布式数据处理引擎,它支持在所有常见的集群环境中运行,包括独立部署,Hadoop YARN,Apache Mesos和Kubernetes。Flink提供了高吞吐量和低延迟的流处理和批处理,拥有优秀的性能和大规模可靠性,这使得它成为构建实时流式处理应用程序和离线批处理作业的理想选择。

Flink的体系结构

Flink的体系结构基于四个核心组件:作业管理器,资源管理器,任务管理器和数据流引擎。下面是Flink的体系结构图:

flink_architecture

作业管理器 (JobManager)

作业管理器负责接收Flink应用程序的jar文件并将它们转换为作业图,同时调度和管理作业在集群中的执行。作业管理器负责计算Flink算子(Task)在集群中的并行度(Parallelism),将算子尽可能地划分成小的任务,以在不同的任务管理器(TaskManager)上并行处理。作业管理器还负责与客户端和资源管理器进行通信,协调作业的状态检查点和故障恢复。

资源管理器 (ResourceManager)

资源管理器负责管理集群中的所有资源(CPU,内存,网络),动态地将它们分配给不同的任务管理器(TaskManager),并根据作业需求调整这些分配。资源管理器可以调整并行度,以便在优化资源利用率和保持任务吞吐量之间取得平衡。

任务管理器 (TaskManager)

任务管理器是Flink集群中的工作节点,负责执行单个或多个任务(Task)。它们接收作业管理器分配的任务来处理数据并生成输出结果。任务管理器驻留在集群节点上,并负责数据交换,管道管理,操作状态维护和故障恢复。当任务管理器出现故障时,作业管理器会自动重新分配任务到其他健康的TaskManager。

数据流引擎 (DataStream Engine)

数据流引擎负责将高性能的流式处理和批处理算子(Operator)封装为数据流图(DataFlowGraph),并在任务管理器上执行。一个数据流图由多个算子组成,并使用流(Stream)作为输入和输出,从而实现基于事件时间(Event Time)的有界流处理和无界流处理,以及基于批处理的有界批处理。

总结

Apache Flink提供了一种分布式数据处理框架,它在高可靠性,低延迟和大规模的性能方面提供了出色的支持。Flink的体系结构基于四个核心组件(作业管理器,资源管理器,任务管理器和数据流引擎),这些组件一起协作来满足数据处理和分析的不同需求,帮助开发人员构建实时流式处理和离线批处理应用程序。