這將是一套完整詳細且持續(xù)更新的荣德、長期維護的 原創(chuàng) Flink系列教程、文檔童芹,其中會包含各種商用實例詳解涮瞻、Flink源碼講解、機制剖析假褪、周邊組件講解等署咽,旨在幫助開發(fā)者快速融入Flink開發(fā),或作為工具文檔參閱嗜价。也希望更多的開發(fā)者可以參與到大數(shù)據(jù)相關的技術討論中來艇抠,共同商討疑難雜癥,豐富社區(qū)久锥〖矣伲——盡際
本文標題: 如何實現(xiàn) Flink 服務的高可用
文章作者: 盡際
發(fā)布時間: 2019年08月06日 - 23:38:30
最后更新: 2019年08月06日 - 23:38:30
原始鏈接:
許可協(xié)議: 署名-非商業(yè)性使用-禁止演繹 4.0 國際 轉載請保留原文鏈接及作者。
四瑟由、Flink 服務的高可用
在幾乎所有的分布式服務中絮重,服務大體上都會分為兩種角色:主服務冤寿、從服務。例如:HDFS 中的 NameNode 與 DataNode青伤;YARN 中的 Resourcemanager 與 NodeManager督怜;Flink 中的 JobManager 與 TaskManager。
主服務 一般情況下會協(xié)調狠角、管理号杠、控制著整個分布式服務的運行。對于 Flink 而言丰歌,JobManager 負責作業(yè)調度姨蟋、資源管理,如果該服務異常下線立帖,則會導致整個 Flink 分布式服務崩潰眼溶。對于單臺 JobManager 服務而言(單點故障)還是存在較大風的。因此晓勇,本節(jié)主要講述如何部署Flink JobManager服務的高可用堂飞。
4.1 基于 Standalone 模式配置 Flink 高可用
4.1.1 高可用說明
在 Standalone 模式下,可以同時在多臺節(jié)點上開啟 JobManager 服務绑咱,并將狀態(tài)注冊到 Zookeeper绰筛,保證整個 Flink 集群中同一時間只有一個 JobManager 處于 Leader 狀態(tài),負責與客戶端交互羡玛,并控制集群中的 TaskManager 服務别智,其他 JobManager 處于 Standby 狀態(tài)。
當處于 Leader 狀態(tài)的 JobManager 異常崩潰時稼稿,F(xiàn)link 集群中另外某一個 JobManager 會從 Standby 狀態(tài)切換為 Leader 狀態(tài)薄榛,接手集群的維護和管理。此時让歼,即使剛才崩潰的 JobManager 從故障中恢復敞恋,不會再次立即擔任 Leader,而是變?yōu)?Standby 狀態(tài)谋右。
4.1.2 部署高可用
-
修改配置文件
-
修改 Flink conf 目錄下的 masters 文件硬猫,內容如下:
linux01:8081 linux02:8081
-
修改Flink conf 目錄下的 flink-conf.yaml 文件,內容如下:
# 指定高可用模式為:Zookeeper改执。 high-availability: zookeeper # 指定 Zookeeper 節(jié)點地址啸蜜,多個地址用逗號分隔。 high-availability.zookeeper.quorum: linux01:2181,linux02:2181,linux03:2181 # 設置 JobManager 注冊到 Zookeeper 中的目錄(掛載點目錄)辈挂, # 注意:如果當前所有機器節(jié)點中存在多個 Standalone 模式的高可用集群衬横,則應該有不同的掛載點目錄。 high-availability.zookeeper.path.root: /flink # 指定當前高可用集群的唯一ID(如果當前所有機器節(jié)點中存在多個 Standalone 模式的高可用集群)终蒂, # 注意蜂林,在 YARN 模式下不要設置此值遥诉,YARN 每次會自動生成 Cluster-id。 high-availability.cluster-id: /flink_ns01 # 設置高可用數(shù)據(jù)的存儲位置噪叙,Zookeeper中只存儲元數(shù)據(jù)信息矮锈。 high-availability.storageDir: hdfs://linux01:8020/flink/recovery
-
分發(fā)配置
分發(fā)上述修改后的配置文件到其他機器節(jié)點,命令如下:
$ pwd /home/admin/modules/flink-1.8.1 $ scp -r conf/ linux02:/home/admin/modules/flink-1.8.1/ $ scp -r conf/ linux03:/home/admin/modules/flink-1.8.1/
-
-
啟動服務
最后睁蕾,通過腳本啟動 Flink 服務即可苞笨,命令如下:
$ bin/start-cluster.sh Starting HA cluster with 2 masters. Starting standalonesession daemon on host linux01. Starting standalonesession daemon on host linux02. Starting taskexecutor daemon on host linux02. Starting taskexecutor daemon on host linux03.
4.2 基于 YARN 模式配置 Flink 高可用
4.2.1 高可用說明
基于 YARN 模式部署 JobManager 的高可用(Flink Session方式),不會提前開啟多個 JobManager惫霸,而是只開啟 1 個猫缭,當這個 JobManager 在 YARN 中發(fā)生異常時葱弟,YARN 會嘗試在不同的 NodeManager 節(jié)點中重啟一個新的 JobManager壹店。
在此過程中,需要在 YARN 中配置 Application Master 的重啟次數(shù)芝加,并在 Flink 的配置文件中硅卢,指定 JobManager 重啟嘗試的次數(shù)。
接下來藏杖,我們進行高可用的部署将塑。
4.2.2 部署高可用
-
修改配置文件
-
修改 yarn-site.xml 配置文件
設置 Application Master 的重試次數(shù),添加如下內容:
<property> <name>yarn.resourcemanager.am.max-attempts</name> <value>6</value> <description> The maximum number of application master execution attempts. </description> </property>
如果上數(shù)值設置為 2蝌麸,則意味著允許 Application Master 單點故障点寥。
-
修改 Flink 的 flink-conf.yaml 文件
重新修改 flink-conf.yaml 高可用部分的內容如下:
high-availability: zookeeper high-availability.zookeeper.quorum: linux01:2181,linux02:2181,linux03:2181 high-availability.storageDir: hdfs://linux01:8020/flink/recovery high-availability.zookeeper.path.root: /flink yarn.application-attempts: 4
-
分發(fā) Flink 和 YARN 的配置文件到其他節(jié)點
$ pwd /home/admin/modules/flink-1.8.1 $ scp -r conf/ linux02:/home/admin/modules/flink-1.8.1/ $ scp -r conf/ linux03:/home/admin/modules/flink-1.8.1/ $ scp /home/admin/modules/hadoop-2.7.2/etc/hadoop/yarn-site.xml linux02:/home/admin/modules/hadoop-2.7.2/etc/hadoop/ $ scp /home/admin/modules/hadoop-2.7.2/etc/hadoop/yarn-site.xml linux03:/home/admin/modules/hadoop-2.7.2/etc/hadoop/
-
-
啟動服務
最后,通過腳本啟動 Flink Session 服務即可来吩,命令如下:
$ bin/yarn-session.sh -n 2