在一些应用场景中, 对于集群资源分配和占用的方式,可能会有特定的需求。 Flink 为各 种场景提供了不同的部署模式, 主要有以下三种:
- 会话模式(Session Mode)
- 单作业模式(Per-Job Mode)
- 应用模式(Application Mode)
它们的区别主要在于:集群的生命周期以及资源的分配方式; 以及应用的 main 方法到底 在哪里执行——客户端(Client)还是 JobManager。接下来我们就做一个展开说明。
1.会话模式(Session Mode)
会话模式其实最符合常规思维。我们需要先启动一个集群, 保持一个会话, 在这个会话中通过客户端提交作业,如图所示。集群启动时所有资源就都已经确定, 所以所有提交的作业会竞争集群中的资源。
这样的好处很明显, 我们只需要一个集群, 就像一个大箱子, 所有的作业提交之后都塞进 去; 集群的生命周期是超越于作业之上的, 铁打的营盘流水的兵, 作业结束了就释放资源, 集 群依然正常运行。当然缺点也是显而易见的: 因为资源是共享的, 所以资源不够了, 提交新的作业就会失败。另外, 同一个 TaskManager 上可能运行了很多作业, 如果其中一个发生故障导 致 TaskManage