Flink中JobManager和TaskManager的职责是什么?

提问者:帅平 问题分类:面试刷题
Flink中JobManager和TaskManager的职责是什么?
2 个回答
曾经多难忘
曾经多难忘
TaskManager的职责是:
1、任务执行
执行JobManager分配的具体任务(如Map、Filter、Window等算子),处理数据流中的记录。
支持多线程并行,每个Slot运行一个任务子集(Subtask)。
2、资源隔离
通过Slot机制划分内存、CPU等资源,每个Slot独立运行任务,避免资源竞争。
向JobManager注册Slot并汇报资源状态,供任务调度使用。
3、数据传输与交换
与其他TaskManager直接通信,完成数据的分区(Partitioning)、Shuffle等操作。
使用网络栈(如基于Netty)高效传输流式数据。
4、状态管理与检查点
本地状态存储(如内存、RocksDB),定期将状态持久化到外部存储(如HDFS)。
响应JobManager的检查点指令,完成快照生成和恢复。
5、心跳与健康上报
定期向JobManager发送心跳信号,确认存活状态。
上报任务执行进度、异常事件等信息。
发布于:1个月前 (05-16) IP属地:
离不开天空的云
离不开天空的云
JobManager的职责是:
1、作业协调与调度
接收用户提交的作业(如JAR文件或DAG执行计划),解析并生成逻辑数据流图(Logical Dataflow Graph)。
将逻辑图优化为物理执行图(Execution Graph),拆分为可并行执行的任务(Task)。
将任务调度到TaskManager的Slot(资源槽)上运行,确保资源合理分配。
2、故障恢复与容错
协调检查点(Checkpoint)和保存点(Savepoint)的触发,确保状态一致性。
在任务失败时,重新调度任务并从最近的检查点恢复状态,保障Exactly-Once语义。
3、资源管理
与资源管理器(如YARN、Kubernetes)协作,申请或释放TaskManager资源。
监控TaskManager的资源使用情况(如Slot数量),动态调整任务分配。
4、作业生命周期管理
控制作业的启动、暂停、取消等操作。
收集作业指标(如吞吐量、延迟),提供监控接口(如Web UI、REST API)。
5、高可用性(HA)
在HA模式下,通过ZooKeeper等协调服务实现主备切换,避免单点故障。
发布于:1个月前 (05-16) IP属地:
我来回答