Flink运行架构与作业执行流程详解
需积分: 0 41 浏览量
更新于2024-08-03
收藏 1.75MB PDF 举报
"本文将详细解析Flink的运行架构、作业执行流程以及Windows分类等相关知识点。"
Flink作为一款强大的实时计算框架,在大数据处理领域扮演着重要的角色。首先,我们来了解一下Flink的运行架构。
1. Flink运行架构:
Flink的核心组件包括Client、JobManager和TaskManager。在集群启动后,JobManager和一个或多个TaskManager会被启动。Client是提交任务的源头,它可以是任意位置的进程,只要能够与JobManager通信即可。Job提交后,Client可以选择结束自身或保持等待结果返回。
JobManager是整个系统的调度中心,类似于Storm中的Nimbus。它接收来自Client的Job和资源,生成优化的执行计划,并调度Task到各个TaskManager。JobManager还负责协调checkpoint操作。
TaskManager是实际执行任务的组件,启动时会预设一定数量的槽位(Slot),每个Slot可以运行一个Task。TaskManager从JobManager接收任务,启动Task,并通过Netty连接接收上游Task的数据进行处理。
2. Flink作业执行流程:
以Yarn模式的Per-job方式为例,作业提交执行流程如下:
- Client首先将代码转换为可提交的JobGraph。
- 如果是Per-Job模式,Client会向资源管理系统(如Yarn)申请Application Master(AM)的资源。Session模式下则无需这一步。
- Yarn分配资源,启动AM。
- Client将Job提交给Dispatcher。
- Dispatcher启动一个新的JobManager线程。
- JobManager向Flink的ResourceManager(RM)申请Task执行所需的slot资源。
- RM向Yarn请求资源以启动TaskManager(Session模式跳过这一步)。
- Yarn分配Container启动TaskManager。
- Flink的RM向TaskManager申请slot资源。
- TaskManager将可用的slot提供给JobManager。
- JobManager将任务提交给TaskManager,TaskManager会启动新的线程执行任务。
在理解了Flink的运行架构和作业执行流程后,我们还需要关注Flink中的Windows分类。Windows是Flink处理无界数据流的核心概念,它允许对不断到来的数据流进行分组和聚合操作。Flink支持多种窗口类型:
- 定时窗口:基于时间间隔划分,例如每5分钟一个窗口。
- 滑动窗口:连续的时间间隔,窗口之间有重叠,例如每2分钟滑动一次,窗口大小为5分钟,那么窗口依次是0-2, 2-4, 4-6, ...。
- 会话窗口:根据数据流中的静默期(gap)划分,例如当数据流超过10分钟无新数据时,窗口关闭并开始新的窗口。
- 基于事件的窗口:依赖特定事件触发窗口的开启和关闭,例如订单完成事件触发窗口聚合。
这些窗口类型为实时数据处理提供了灵活性,可以根据业务需求选择合适的窗口策略。
总结,Flink的运行机制和作业执行流程涉及Client、JobManager、TaskManager之间的交互,以及与资源管理系统的协调。而Flink的Windows机制则提供了处理无界数据流的强大工具,满足不同场景下的流处理需求。理解并熟练掌握这些知识点,对于使用和优化Flink系统至关重要。
2019-10-09 上传
2023-07-26 上传
2023-07-27 上传
2024-04-02 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
2023-05-10 上传
shandongwill
- 粉丝: 5305
- 资源: 670
最新资源
- Postman安装与功能详解:适用于API测试与HTTP请求
- Dart打造简易Web服务器教程:simple-server-dart
- FFmpeg 4.4 快速搭建与环境变量配置教程
- 牛顿井在围棋中的应用:利用牛顿多项式求根技术
- SpringBoot结合MySQL实现MQTT消息持久化教程
- C语言实现水仙花数输出方法详解
- Avatar_Utils库1.0.10版本发布,Python开发者必备工具
- Python爬虫实现漫画榜单数据处理与可视化分析
- 解压缩教材程序文件的正确方法
- 快速搭建Spring Boot Web项目实战指南
- Avatar Utils 1.8.1 工具包的安装与使用指南
- GatewayWorker扩展包压缩文件的下载与使用指南
- 实现饮食目标的开源Visual Basic编码程序
- 打造个性化O'RLY动物封面生成器
- Avatar_Utils库打包文件安装与使用指南
- Python端口扫描工具的设计与实现要点解析