Flink 部署模式详解
一、会话模式(Session Mode)
定义:
- 在会话模式中,首先启动一个长期运行的Flink集群,并保持一个会话,在这个会话中可以通过客户端提交多个作业。集群启动时资源已经确定,所有提交的作业将共享这些资源。
特点:
- 独立生命周期: 集群的生命周期独立于作业,即集群会一直运行,直到手动停止。
- 资源共享: 所有提交的作业会竞争集群中的资源,可能会导致资源不足作业执行失败的情况。
- 动态资源分配: Flink会根据运行在JobManager上的作业所需要的Slot数量动态分配TaskManager资源。
- 适合场景: 适用于规模小、执行时间短的大量作业,尤其是在开发和测试环境中,允许快速提交和测试多个作业,而不需要为每个作业单独启动集群。
应用场景:
- 会话模式非常适合用于开发和测试环境,因为它支持快速迭代和多作业的灵活提交。
二、单作业模式(Per-Job Mode)
定义:
- 单作业模式下,为每一个提交的作业启动一个专门的Flink集群,当作业完成后,集群随之关闭并释放资源。
特点:
- 紧密关联的生命周期: 集群的生命周期与作业紧密相关,即作业提交时创建集群,作业完成时销毁集群。
- 资源隔离: 每个作业都有自己独立的集群和资源,不会出现资源共享的问题,提高了稳定性和安全性。
- 高稳定性: 因为每个作业都有独立的集群和资源,所以在生产环境中运行更加稳定。
- 资源管理框架: 一般需要借助一些资源管理框架如YARN、Kubernetes等来启动集群。
应用场景: - 单作业模式特别适用于生产环境,特别是对于那些对资源隔离和稳定性有较高要求的任务。
三、应用模式(Application Mode)
定义:
- 应用模式为每个提交的应用程序启动一个独立的JobManager,即创建一个专属于该应用程序的集群。这个JobManager只为执行这一个应用而存在,应用执行结束后,JobManager也就关闭了。
特点:
- 应用程序为中心的生命周期: 集群的生命周期与应用程序紧密相关,即应用程序提交时创建集群,应用程序执行结束后销毁集群。
- 简化管理: 应用模式无需客户端的存在,作业直接由JobManager执行,简化了作业管理和资源分配。
- 适用多作业应用: 特别适用于包含多个作业的应用程序,可以简化复杂的作业协调和依赖关系。
- 资源管理框架: 类似于单作业模式,应用模式也需要借助资源管理框架来启动集群。
应用场景: - 应用模式适用于部署复杂的应用程序,这些应用程序可能包括多个作业,并且需要简化作业管理和资源分配的过程。
总结
- 会话模式:适合于开发和测试环境,可以快速提交和测试多个作业,但需要注意资源共享的问题。
- 单作业模式:适用于生产环境,特别是当作业之间需要较高的资源隔离和稳定性时。
- 应用模式:适用于部署包含多个作业的应用程序,可以简化作业的管理和资源的分配。