请描述Apache Flink的整体架构,并列举其核心组件,说明它们各自承担的功能。
考察说明
考查对Flink架构组成及组件协作的掌握程度。
回答思路
- 【回答框架 1】Flink采用主从架构,核心组件包括JobManager、TaskManager和Client。JobManager负责作业调度、检查点协调和故障恢复,TaskManager执行任务并管理本地资源。
- 【回答框架 2】Client负责提交作业,将JobGraph发送给JobManager,不参与运行时计算。
- 【回答框架 3】TaskManager内部以Slot为单位划分资源,每个Slot运行一个任务子任务,Slot数量决定并行度上限。
- 【回答框架 4】作业执行时,Client提交JobGraph,JobManager转换为ExecutionGraph并分发到TaskManager,TaskManager间通过Netty进行数据交换,完成流式计算。
- 【回答框架 5】Flink还包含Dispatcher和ResourceManager(如YARN或K8s集成),用于集群管理和资源分配,增强扩展性。
- 【关键点 1】JobManager负责调度与容错,TaskManager负责执行与数据传输。
- 【关键点 2】Client仅提交作业,不参与计算。
- 【关键点 3】Slot是TaskManager资源分配的基本单元。
- 【关键点 4】ResourceManager负责与外部资源系统(如YARN)交互,动态分配资源。
- 【易错点 1】不可混淆JobManager与ResourceManager职责,前者管作业,后者管资源。
- 【易错点 2】Slot并非线程,它只是资源划分单元,实际执行由任务线程完成。