这里部署环境为 CDH6.2 集群,三个节点,Flink 版本为编译的 Flink1.9.1 版本。
Flink集群有两种部署的模式,分别是 Standalone 以及 YARNCluster 模式。
Standalone 模式,Flink 必须依赖于 ZooKeeper 来实现 JobManager 的 HA(Zookeeper 已经成为了大部分开源框架 HA 必不可少的模块)。在 Zookeeper 的帮助下,一个Standalone 的 Flink 集群会同时有多个活着的 JobManager,其中只有一个处于工作状态,其他处于 Standby 状态。当工作中的 JobManager 失去连接后(如宕机或 Crash), ZooKeeper 会从 Standby 中选举新的 JobManager 来接管 Flink 集群。
YARN Cluaster 模式,Flink 就要依靠 YARN 本身来对 JobManager 做 HA 了。其实这里完全是 YARN 的机制。对于 YARNCluster 模式来说, JobManager 和 TaskManager 都是启动在 YARN 的 Container中。此时的 JobManager,其实应该称之为 Flink Application Master。也就说它的故障恢复,就完全依靠着 YARN 中的 ResourceManager(和 MapReduce 的 AppMaster 一样)。由于完全依赖了 YARN,因此不同版本的 YARN 可能会有细微的差异。