004 Flink 服務的高可用

這將是一套完整詳細且持續(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 部署高可用

  1. 修改配置文件

    • 修改 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/
      
  2. 啟動服務

    最后睁蕾,通過腳本啟動 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 部署高可用

  1. 修改配置文件

    • 修改 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/
      
  2. 啟動服務

    最后,通過腳本啟動 Flink Session 服務即可来吩,命令如下:

    $ bin/yarn-session.sh -n 2
    

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末敢辩,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子弟疆,更是在濱河造成了極大的恐慌戚长,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件怠苔,死亡現(xiàn)場離奇詭異同廉,居然都是意外死亡,警方通過查閱死者的電腦和手機柑司,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門迫肖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人攒驰,你說我怎么就攤上這事蟆湖。” “怎么了讼育?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵帐姻,是天一觀的道長稠集。 經(jīng)常有香客問我,道長饥瓷,這世上最難降的妖魔是什么剥纷? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮呢铆,結果婚禮上晦鞋,老公的妹妹穿的比我還像新娘。我一直安慰自己棺克,他們只是感情好悠垛,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著娜谊,像睡著了一般确买。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上纱皆,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天湾趾,我揣著相機與錄音,去河邊找鬼派草。 笑死搀缠,一個胖子當著我的面吹牛,可吹牛的內容都是我干的近迁。 我是一名探鬼主播艺普,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼鉴竭!你這毒婦竟也來了歧譬?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤拓瞪,失蹤者是張志新(化名)和其女友劉穎缴罗,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體祭埂,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡面氓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蛆橡。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片舌界。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖泰演,靈堂內的尸體忽然破棺而出呻拌,到底是詐尸還是另有隱情,我是刑警寧澤睦焕,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布藐握,位于F島的核電站靴拱,受9級特大地震影響,放射性物質發(fā)生泄漏猾普。R本人自食惡果不足惜袜炕,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望初家。 院中可真熱鬧偎窘,春花似錦、人聲如沸溜在。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽掖肋。三九已至仆葡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間培遵,已是汗流浹背浙芙。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留籽腕,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓纸俭,卻偏偏與公主長得像皇耗,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子揍很,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345