Apache Flink 核心概念与部署解析
一、运行架构
Apache Flink 采用主从架构,包含 JobManager、TaskManager 和 Client 三大核心组件:
- JobManager: 负责作业调度与协调,类似于 Storm 中的 Nimbus。
- TaskManager: 执行 JobManager 分配的任务,并将心跳和统计信息汇报给 JobManager。
- Client: 提交作业的客户端,可运行于任意机器,将作业提交给 JobManager 进行调度。
二、作业执行流程
- 客户端将代码转换为可提交的 JobGraph。
- 启动 ApplicationMaster (AM) 并申请资源。
- 客户端将 JobGraph 提交给 Dispatcher。
- Dispatcher 启动新的 JobManager 线程。
- JobManager 向 Flink ResourceManager 申请 slot 资源执行任务。
- ResourceManager 向 YARN 申请资源启动 TaskManager。
- YARN 分配 Container 启动 TaskManager。
- Flink ResourceManager 向 TaskManager 申请 slot 资源启动 Task。
- TaskManager 将待分配的 slot 提供给 JobManager。
- JobManager 提交 Task,TaskManager 启动新线程执行任务。
三、部署模式
Flink 支持多种部署模式,包括 Standalone、Yarn、Mesos、Kubernetes 等,其中 Yarn 模式最为常用。
四、Flink on Yarn
Flink on Yarn 支持两种部署类型:
- Session 模式: 共享 Dispatcher 和 Resource Manager 资源,需先启动集群再提交作业。
- Resource Manager 模式: 按需申请资源,资源不足时作业无法提交,直至 YARN 释放资源。
暂无评论