Flink运行架构与作业执行流程解析
需积分: 5 89 浏览量
更新于2024-08-03
收藏 1.74MB PDF 举报
"这份PDF文件包含了关于Flink面试的相关问题,涵盖了Flink的运行架构以及作业执行流程。"
Flink的运行架构是一个分布式流处理框架,其核心组件包括Client、JobManager和TaskManager。当Flink集群启动时,JobManager和一个或多个TaskManager会随之启动。JobManager作为整个系统的协调中心,它接收由Client提交的任务,进行任务调度并将优化后的执行计划分配给各个TaskManager。TaskManager则是实际执行任务的工作节点,它们维护了槽位(Slots)以并行执行任务。
Client是提交任务的应用程序,可以运行在任何能够与JobManager通信的机器上。在提交Job后,Client可以选择结束进程或等待结果返回。JobManager扮演的角色类似于Storm中的Nimbus,它负责整体的作业调度和检查点协调。JobManager从Client接收Job和相关资源,生成优化的执行图,并将Task分发到TaskManager执行。
TaskManager在启动时预设了固定的槽位数,每个槽位可以运行一个Task。当JobManager分配任务给TaskManager时,TaskManager会启动相应的线程,与上游Task建立Netty连接,接收并处理数据。Task之间的数据交换是以流的形式进行的。
Flink作业的执行流程通常在YARN模式下以Per-job或Session方式进行。对于Per-job模式,作业提交首先会在本地Client中将代码转换为可提交的JobGraph。然后,Client向资源管理系统(如YARN)申请资源,启动Application Master (AM)。如果是Session模式,这一步可以省略,因为Session模式下AM已经预创建。
接着,YARN分配资源,启动AM。Client将Job提交给Dispatcher,Dispatcher会启动一个新的JobManager线程。JobManager向Flink的ResourceManager(RM)申请Task执行所需的slot。在Session模式下,这个步骤可以跳过,因为Session模式下slot资源已经在集群中预分配。
RM向YARN请求资源以启动TaskManager。YARN响应,分配Container来启动TaskManager。Flink的RM接着向TM申请slot资源,TM提供可用的slot给JobManager。最后,JobManager将Task提交给TaskManager,TaskManager在新的线程中执行这些任务。
这个流程展示了Flink如何在分布式环境中高效地管理和执行流处理任务,确保数据的实时处理和容错能力。理解这个架构和流程对于理解和优化Flink应用程序至关重要。
2021-06-01 上传
2020-09-22 上传
2021-06-09 上传
2022-11-05 上传
2021-04-20 上传
2024-04-09 上传
2022-03-22 上传
2023-02-07 上传
2024-04-14 上传
邢一
- 粉丝: 3382
- 资源: 223
最新资源
- 平尾装配工作平台运输支撑系统设计与应用
- MAX-MIN Ant System:用MATLAB解决旅行商问题
- Flutter状态管理新秀:sealed_flutter_bloc包整合seal_unions
- Pong²开源游戏:双人对战图形化的经典竞技体验
- jQuery spriteAnimator插件:创建精灵动画的利器
- 广播媒体对象传输方法与设备的技术分析
- MATLAB HDF5数据提取工具:深层结构化数据处理
- 适用于arm64的Valgrind交叉编译包发布
- 基于canvas和Java后端的小程序“飞翔的小鸟”完整示例
- 全面升级STM32F7 Discovery LCD BSP驱动程序
- React Router v4 入门教程与示例代码解析
- 下载OpenCV各版本安装包,全面覆盖2.4至4.5
- 手写笔画分割技术的新突破:智能分割方法与装置
- 基于Koplowitz & Bruckstein算法的MATLAB周长估计方法
- Modbus4j-3.0.3版本免费下载指南
- PoqetPresenter:Sharp Zaurus上的开源OpenOffice演示查看器