JobManager 協調每個 Flink 部署。它負責調度和資源管理。
默認情況下,每個 Flink 集群只有壹個 JobManager 實例。 這會產生單點故障(SPOF):如果 JobManager 崩潰,則無法提交新作業並且導致運行中的作業運行失敗。
使用 JobManager 高可用性模式,可以避免這個問題,從而消除 SPOF。您可以為 Standalone 和 YARN 集群 配置高可用性。
針對 Standalone 集群的 JobManager 高可用性的壹般概念是,任何時候都有壹個 主 JobManager 和 多個備 JobManagers ,以便在主節點失敗時有備 JobManagers 來接管集群。這保證了 沒有單點故障 ,壹旦備 JobManager 接管集群,作業就可以正常運行。主備 JobManager 實例之間沒有明顯的區別。每個 JobManager 都可以充當主備節點。
例如,請考慮以下三個 JobManager 實例的設置:
要啟用 JobManager 高可用性,您必須將 高可用性模式設置 為 zookeeper,配置 zookeeper quorum 將所有 JobManager 主機及其 web UI 端口寫入 配置文件 。
Flink利用 ZooKeeper 在所有正在運行的 JobManager 實例之間進行分布式協調。 ZooKeeper 是獨立於 Flink 的服務,通過 Leader 選舉和輕量級壹致狀態存儲提供高可靠的分布式協調。 更多關於 ZooKeeper 的信息, 請查看 ZooKeeper 的入門指南 。 Flink 包含用於 Bootstrap ZooKeeper 安裝的腳本。
要啟動HA集群,請在以下位置配置Master文件 conf/masters:
默認情況下,job manager選壹個隨機端口作為進程隨機通信端口。您可以通過 high-availability.jobmanager.port 鍵修改此設置。此配置接受單個端口(例如50010),範圍(50000-50025)或兩者的組合(50010,50011,50020-50025,50050-50075)。
要啟動HA集群,請將以下配置鍵添加到 conf/flink-conf.yaml:
每個 addressX:port 都是壹個 ZooKeeper 服務器的ip及其端口,Flink 可以在指定的地址和端口訪問zookeeper。
重要: 在運行 YARN 或其他群集管理器中運行時,不要手動設置此值。在這些情況下,將根據應用程序 ID 自動生成 cluster-id。 手動設置 cluster-id 會覆蓋 YARN 中的自動生成的 ID。反過來,使用 -z CLI 選項指定 cluster-id 會覆蓋手動配置。如果在裸機上運行多個 Flink HA 集群,則必須為每個集群手動配置單獨的 cluster-id。
該storageDir 中保存了 JobManager 恢復狀態所需的所有元數據。
配置 master 文件和 ZooKeeper quorum 之後,您可以使用提供的集群啟動腳本。它們將啟動 HA 群集。請註意,啟動 Flink HA 集群前,必須啟動 Zookeeper 集群 ,並確保為要啟動的每個 HA 群集 配置單獨的 ZooKeeper 根路徑 。
在運行高可用性 YARN 集群時, 我們不會運行多個 JobManager (ApplicationMaster) 實例 ,而只運行壹個,該JobManager實例失敗時,YARN會將其重新啟動。Yarn的具體行為取決於您使用的 YARN 版本。
在YARN 配置文件 yarn-site.xml 中,需要配置 application master 的最大重試次數:
當前 YARN 版本的默認值是2(表示允許單個JobManager失敗兩次)。
除了HA配置(參考上文)之外,您還必須配置最大重試次數 conf/flink-conf.yaml:
這意味著在如果程序啟動失敗,YARN會再重試9次(9 次重試 + 1次啟動)。如果 YARN 操作需要,如果啟動10次作業還失敗,yarn才會將該任務的狀態置為失敗。如果搶占,節點硬件故障或重啟,NodeManager 重新同步等操作需要,YARN繼續嘗試啟動應用。 這些重啟不計入 yarn.application-attempts 個數中,請參閱 Jian Fang 的博客文章 。重要的是要註意 yarn.resourcemanager.am.max-attempts 為yarn中程序重啟上限。因此, Flink 中設置的程序嘗試次數不能超過 YARN 的集群設置。
註意: Hadoop YARN 2.4.0 有壹個主要的 bug (在2.5.0中修復),阻止重新啟動的Application Master / Job Manager 重啟容器。有關詳細信息,請參閱 FLINK-4142 。我們建議,在yarn版本要等於或高於Hadoop 2.5.0 增加高可用配置。
如果 ZooKeeper 使用 Kerberos 以安全模式運行,flink-conf.yaml 根據需要覆蓋以下配置:
有關 Kerberos 安全性的 Flink 配置的更多信息,請參閱 此處 。您還可以在 此處 找到關於 Flink 內部如何設置基於 kerberos 的安全性的詳細信息。
如果您沒有正在運行的ZooKeeper,則可以使用Flink程序附帶的腳本。
這是壹個 ZooKeeper 配置模板 conf/zoo.cfg。您可以為主機配置為使用 server.X 條目運行 ZooKeeper,其中 X 是每個服務器的唯壹IP:
該腳本 bin/start-zookeeper-quorum.sh 將在每個配置的主機上啟動 ZooKeeper 服務器。 Flink wrapper 會啟動 ZooKeeper 服務,該 wraper 從 conf/zoo.cfg 中讀取配置,並設置壹些必需的配置項。在生產設置中,建議您使用自己安裝的 ZooKeeper。