1. 部署模式(抽象的概念)
1.1 会话模式(Session Mode)
会话模式,需要先启动一个集群,保持一个会话,在这个会话中通过客户端提交作业。集群启动时所有资源就已经确定,所以所有提交的作业会竞争集群中的资源。

集群的生命周期是超越于作业之上的,作业结束了就释放资源,集群依然正常运行。当然:因为资源是共享的,所以资源不够了,提交新的作业就会失败。另外,同一个 TaskManager 上可能运行了很多作业,如果其中一个发生故障导致 TaskManager 宕机,那么所有作业都会受到影响
会话模式适合于单个规模小、执行时间短的大量作业
1.2 单作业模式(Per-Job Mode)
单作业模式是严格的一对一,集群只为这个作业而生。由客户端运行应用程序,然后启动集群,作业被提交给 JobManager,进而分发给 TaskManager 执行。作业作业完成后,集群就会关闭,所有资源会被释放。每个作业都有它自己的 JobManager管理,占用独享的资源,即使发生故障,它的TaskManager 宕机也不会影响其他作业。
单作业模式在生产环境运行更加稳定,是实际应用的首选模式
注:
Flink 本身无法直接运行单作业模式,需要借助一些资源管理框架来启动集群,如 YARN
1.3 应用模式(Application Mode)
应用代码在客户端上执行,然后由客户端提交给 JobManager,客户端需要占用大量网络带宽用于下载依赖和把二进制数据发送给JobManager;并且提交作业用的是同一个客户端,就会加重客户端所在节点的资源消耗。
解决办法就是,直接把应用提交到 JobManger 上运行。为每一个提交的应用单独启动一个JobManager,也就是创建一个集群。这个 JobManager 只为执行这一个应用而存在,执行结束之后 JobManager 也就关闭了

1.4 总结
在会话模式下,集群的生命周期独立于集群上运行的任何作业的生命周期,并且提交的所有作业共享资源。而单作业模式为每个提交的作业创建一个集群,带来了更好的资源隔离,这时集群的生命周期与作业的生命周期绑定。最后,应用模式为每个应用程序创建一个会话集群,在 JobManager 上直接调用应用程序的 main()方法
2. 系统架构
2.1 整体构成
Flink 的运行时架构中,最重要的就是两大组件:作业管理器(JobManger)和任务管理器(TaskManager)。对于一个提交执行的作业,JobManager 是真正意义上的“管理者”(Master),负责管理调度,所以在不考虑高可用的情况下只能有一个;而 TaskManager 是“工作者”(Worker、Slave),负责执行任务处理数据,所以可以有一个或多个。

注:
attached mode (default): The yarn-session.sh client submits the Flink cluster to YARN, but the client keeps running, tracking the state of the cluster. If the cluster fails, the client will show the error. If the client gets terminated, it will signal the cluster to shut down as well.
detached mode (-d or --detached): The yarn-session.sh client submits the Flink cluster to YARN, then the client returns. Another invocation of the client, or YARN tools is needed to stop the Flink cluster.
客户端并不是处理系统的一部分,它只负责作业的提交。具体来说,就是调用程序的 main 方法,将代码转换成“数据流图”(Dataflow Graph),并最终生成作业图(JobGraph),一并发送给 JobManager。提交之后,任务的执行其实就跟客户端没有关系了;可以选择断开与 JobManager 的连接, 也可以继续保持连接。在命令提交作业时,加上的-d 参数,就是表示分离模式(detached mode),也就是断开连接
2.1.1 作业管理器(JobManager)
JobManger 包含 3 个不同的组件:

1. JobMaster
JobMaster 是 JobManager 中最核心的组件,负责处理单独的作业(Job)。所以JobMaster和具体的 Job 是一一对应的,多个 Job 可以同时运行在一个 Flink 集群中, 每个 Job 都有一个自己的 JobMaster。在作业提交时,JobMaster 会先接收到要执行的应用,包括:Jar 包,数据流图(dataflow graph),和作业图(J

本文详细介绍了Flink的三种部署模式:会话模式、单作业模式和应用模式,以及它们在资源管理和作业执行上的特点。此外,文章还深入解析了Flink的系统架构,包括作业管理器、任务管理器的职责,以及在独立模式和YARN模式下的运行流程。重点讨论了YARN模式下的会话、单作业和应用模式部署,强调了在不同模式下的资源申请和作业提交过程。
最低0.47元/天 解锁文章
1690

被折叠的 条评论
为什么被折叠?



