Flink运行架构与作业执行流程解析
"这份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应用程序至关重要。
![](https://csdnimg.cn/release/download_crawler_static/88103625/bg1.jpg)
下载后可阅读完整内容,剩余8页未读,立即下载
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/c7af5cb1eac84d0196408698a3c0f62d_m0_43393325.jpg!1)
- 粉丝: 3326
- 资源: 223
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 解决本地连接丢失无法上网的问题
- BIOS报警声音解析:故障原因与解决方法
- 广义均值移动跟踪算法在视频目标跟踪中的应用研究
- C++Builder快捷键大全:高效编程的秘密武器
- 网页制作入门:常用代码详解
- TX2440A开发板网络远程监控系统移植教程:易搭建与通用解决方案
- WebLogic10虚拟内存配置详解与优化技巧
- C#网络编程深度解析:Socket基础与应用
- 掌握Struts1:Java MVC轻量级框架详解
- 20个必备CSS代码段提升Web开发效率
- CSS样式大全:字体、文本、列表样式详解
- Proteus元件库大全:从基础到高级组件
- 74HC08芯片:高速CMOS四输入与门详细资料
- C#获取当前路径的多种方法详解
- 修复MySQL乱码问题:设置字符集为GB2312
- C语言的诞生与演进:从汇编到系统编程的革命
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)