日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

10-Flink集群的高可用(搭建篇补充)

發(fā)布時(shí)間:2025/4/16 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 10-Flink集群的高可用(搭建篇补充) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

戳更多文章:

1-Flink入門

2-本地環(huán)境搭建&構(gòu)建第一個(gè)Flink應(yīng)用

3-DataSet API

4-DataSteam API

5-集群部署

6-分布式緩存

7-重啟策略

8-Flink中的窗口

9-Flink中的Time

Flink時(shí)間戳和水印

Broadcast廣播變量

FlinkTable&SQL

Flink實(shí)戰(zhàn)項(xiàng)目實(shí)時(shí)熱銷排行

Flink寫入RedisSink

17-Flink消費(fèi)Kafka寫入Mysql

Flink的HA搭建并不復(fù)雜,本質(zhì)來說就是配置2個(gè)jobmanager。
本文作為Flink集群部署的補(bǔ)充篇。

這篇文章來自網(wǎng)絡(luò),向作者尼小摩致敬,

概述

JobManager 協(xié)調(diào)每個(gè) Flink 部署。它負(fù)責(zé)調(diào)度和資源管理。
默認(rèn)情況下,每個(gè) Flink 集群只有一個(gè) JobManager 實(shí)例。 這會產(chǎn)生單點(diǎn)故障(SPOF):如果 JobManager 崩潰,則無法提交新作業(yè)并且導(dǎo)致運(yùn)行中的作業(yè)運(yùn)行失敗。
使用 JobManager 高可用性模式,可以避免這個(gè)問題,從而消除 SPOF。您可以為Standalone和 YARN 集群配置高可用性。

Standalone集群高可用性

針對 Standalone 集群的 JobManager 高可用性的一般概念是,任何時(shí)候都有一個(gè) 主 JobManager 和多個(gè)備 JobManagers,以便在主節(jié)點(diǎn)失敗時(shí)有備 JobManagers 來接管集群。這保證了沒有單點(diǎn)故障,一旦備 JobManager 接管集群,作業(yè)就可以正常運(yùn)行。主備 JobManager 實(shí)例之間沒有明顯的區(qū)別。每個(gè) JobManager 都可以充當(dāng)主備節(jié)點(diǎn)。
例如,請考慮以下三個(gè) JobManager 實(shí)例的設(shè)置:

image.png

配置

要啟用 JobManager 高可用性,您必須將高可用性模式設(shè)置為 zookeeper,配置 zookeeper quorum 將所有 JobManager 主機(jī)及其 web UI 端口寫入配置文件。
Flink利用 ZooKeeper 在所有正在運(yùn)行的 JobManager 實(shí)例之間進(jìn)行分布式協(xié)調(diào)。 ZooKeeper 是獨(dú)立于 Flink 的服務(wù),通過 Leader 選舉和輕量級一致狀態(tài)存儲提供高可靠的分布式協(xié)調(diào)。

Masters文件 (masters服務(wù)器)

要啟動HA集群,請?jiān)谝韵挛恢门渲肕aster文件

  • conf/masters:masters文件:masters文件包含啟動 jobmanager 的所有主機(jī)和 web 用戶界面綁定的端口。
jobManagerAddress1:webUIPort1[...]jobManagerAddressX:webUIPortX

默認(rèn)情況下,job manager選一個(gè)隨機(jī)端口作為進(jìn)程隨機(jī)通信端口。您可以通過 high-availability.jobmanager.port 鍵修改此設(shè)置。此配置接受單個(gè)端口(例如50010),范圍(50000-50025)或兩者的組合(50010,50011,50020-50025,50050-50075)。

配置文件(flink-conf.yaml)

要啟動HA集群,請將以下配置鍵添加到 conf/flink-conf.yaml:

  • 高可用性模式(必需):在 conf/flink-conf.yaml 中,必須將高可用性模式設(shè)置為zookeeper,以打開高可用模式。或者將此選項(xiàng)設(shè)置為工廠類的 FQN,Flink 通過創(chuàng)建 HighAvailabilityServices 實(shí)例使用。
high-availability: zookeeper
  • Zookeeper quorum(必需): ZooKeeper quorum 是 ZooKeeper 服務(wù)器的復(fù)制組,它提供分布式協(xié)調(diào)服務(wù)。
high-availability.zookeeper.quorum:address1:2181[,...],addressX:2181

每個(gè) addressX:port 都是一個(gè) ZooKeeper 服務(wù)器的ip及其端口,Flink 可以在指定的地址和端口訪問zookeeper。

  • ZooKeeper root (推薦): ZooKeeper 根節(jié)點(diǎn),在該節(jié)點(diǎn)下放置所有集群節(jié)點(diǎn)。
high-availability.zookeeper.path.root: /flink
  • ZooKeeper cluster-id(推薦): ZooKeeper的cluster-id節(jié)點(diǎn),在該節(jié)點(diǎn)下放置集群的所有相關(guān)數(shù)據(jù)。
high-availability.cluster-id: /default_ns # important: customize per cluster

重要:?在運(yùn)行 YARN 或其他群集管理器中運(yùn)行時(shí),不要手動設(shè)置此值。在這些情況下,將根據(jù)應(yīng)用程序 ID 自動生成 cluster-id。 手動設(shè)置 cluster-id 會覆蓋 YARN 中的自動生成的 ID。反過來,使用 -z CLI 選項(xiàng)指定 cluster-id 會覆蓋手動配置。如果在裸機(jī)上運(yùn)行多個(gè) Flink HA 集群,則必須為每個(gè)集群手動配置單獨(dú)的 cluster-id。

  • 存儲目錄(必需): JobManager 元數(shù)據(jù)保存在文件系統(tǒng) storageDir 中,在 ZooKeeper 中僅保存了指向此狀態(tài)的指針。
high-availability.storageDir: hdfs:///flink/recovery

該storageDir 中保存了 JobManager 恢復(fù)狀態(tài)所需的所有元數(shù)據(jù)。
配置 master 文件和 ZooKeeper quorum 之后,您可以使用提供的集群啟動腳本。它們將啟動 HA 群集。請注意,啟動 Flink HA 集群前,必須啟動 Zookeeper 集群,并確保為要啟動的每個(gè) HA 群集配置單獨(dú)的 ZooKeeper 根路徑。

示例:具有2個(gè) JobManager 的 Standalone 集群

  • 在conf/flink-conf.yaml 中配置高可用模式和 ZooKeeper quorum:
  • high-availability: zookeeper high-availability.zookeeper.quorum: localhost:2181 high-availability.zookeeper.path.root: /flink high-availability.cluster-id: /cluster_one high-availability.storageDir: hdfs:///flink/recovery
  • 在 conf/master 中配置 master:
  • localhost:8081localhost:8082
  • 在 conf/zoo.cfg 中配置 ZooKeeper 服務(wù)(目前,每臺機(jī)器只能運(yùn)行一個(gè) ZooKeeper 進(jìn)程)
  • server.0=localhost:2888:3888
  • 啟動 ZooKeeper quorum:
  • $ bin/start-zookeeper-quorum.shStarting zookeeper daemon on host localhost.
  • 啟動 Flink HA 集群:
  • $ bin/start-cluster.shStarting HA cluster with 2 masters and 1 peers in ZooKeeper quorum. Starting jobmanager daemon on host localhost. Starting jobmanager daemon on host localhost. Starting taskmanager daemon on host localhost.
  • 停止 Zookeeper quorum 和集群:
  • $ bin/stop-cluster.shStopping taskmanager daemon (pid: 7647) on localhost.Stopping jobmanager daemon (pid: 7495) on host localhost. Stopping jobmanager daemon (pid: 7349) on host localhost. $ bin/stop-zookeeper-quorum.sh Stopping zookeeper daemon (pid: 7101) on host localhost.

    YARN 集群的高可用性

    在運(yùn)行高可用性 YARN 集群時(shí),我們不會運(yùn)行多個(gè) JobManager (ApplicationMaster) 實(shí)例,而只運(yùn)行一個(gè),該JobManager實(shí)例失敗時(shí),YARN會將其重新啟動。Yarn的具體行為取決于您使用的 YARN 版本。

    配置

    Application Master最大重試次數(shù)(yarn-site.xml)
    在YARN 配置文件 yarn-site.xml 中,需要配置 application master 的最大重試次數(shù):

    <property><name>yarn.resourcemanager.am.max-attempts</name> <value>4</value> <description> The maximum number of application master execution attempts. </description> </property>

    當(dāng)前 YARN 版本的默認(rèn)值是2(表示允許單個(gè)JobManager失敗兩次)。

    Application Attempts(flink-conf.yaml):
    除了HA配置(參考上文)之外,您還必須配置最大重試次數(shù) conf/flink-conf.yaml:

    yarn.application-attempts: 10

    這意味著在如果程序啟動失敗,YARN會再重試9次(9 次重試 + 1次啟動)。如果 YARN 操作需要,如果啟動10次作業(yè)還失敗,yarn才會將該任務(wù)的狀態(tài)置為失敗。如果搶占,節(jié)點(diǎn)硬件故障或重啟,NodeManager 重新同步等操作需要,YARN繼續(xù)嘗試啟動應(yīng)用。 這些重啟不計(jì)入 yarn.application-attempts 個(gè)數(shù)中。重要的是要注意 yarn.resourcemanager.am.max-attempts 為yarn中程序重啟上限。因此, Flink 中設(shè)置的程序嘗試次數(shù)不能超過 YARN 的集群設(shè)置。

    示例:高可用的YARN Session

    1.配置 HA 模式和 ZooKeeper 集群在 conf/flink-conf.yaml 中:

    high-availability: zookeeperhigh-availability.zookeeper.quorum: localhost:2181high-availability.storageDir: hdfs:///flink/recoveryhigh-availability.zookeeper.path.root: /flinkyarn.application-attempts: 10
  • 配置 ZooKeeper 服務(wù)在 conf/zoo.cfg 中(目前每臺機(jī)器只能運(yùn)行一個(gè) ZooKeeper 進(jìn)程):
  • server.0=localhost:2888:3888
  • 啟動 ZooKeeper 集群:
  • $ bin/start-zookeeper-quorum.shStarting zookeeper daemon on host localhost.
  • 啟動 HA 集群:
  • $ bin / yarn-session.sh -n 2

    配置 Zookeeper 安全性

    如果 ZooKeeper 使用 Kerberos 以安全模式運(yùn)行,flink-conf.yaml 根據(jù)需要覆蓋以下配置:

    zookeeper.sasl.service-name: zookeeper # 默認(rèn)設(shè)置是 “zookeeper” 。如果 ZooKeeper 集群配置了 # 不同的服務(wù)名稱,那么可以在這里提供。 zookeeper.sasl.login-context-name: Client # 默認(rèn)設(shè)置是 “Client”。該值配置需要匹配 # "security.kerberos.login.contexts"中的其中一個(gè)值。

    有關(guān) Kerberos 安全性的 Flink 配置的更多信息,請參閱 此處。您還可以在 此處 找到關(guān)于 Flink 內(nèi)部如何設(shè)置基于 kerberos 的安全性的詳細(xì)信息。

    Bootstrap ZooKeeper

    如果您沒有正在運(yùn)行的ZooKeeper,則可以使用Flink程序附帶的腳本。
    這是一個(gè) ZooKeeper 配置模板 conf/zoo.cfg。您可以為主機(jī)配置為使用 server.X 條目運(yùn)行 ZooKeeper,其中 X 是每個(gè)服務(wù)器的唯一IP:

    server.X=addressX:peerPort:leaderPort [...] server.Y=addressY:peerPort:leaderPort

    該腳本 bin/start-zookeeper-quorum.sh 將在每個(gè)配置的主機(jī)上啟動 ZooKeeper 服務(wù)器。 Flink wrapper 會啟動 ZooKeeper 服務(wù),該 wraper 從 conf/zoo.cfg 中讀取配置,并設(shè)置一些必需的配置項(xiàng)。在生產(chǎn)設(shè)置中,建議您使用自己安裝的 ZooKeeper。

    轉(zhuǎn)載于:https://www.cnblogs.com/importbigdata/p/10779934.html

    總結(jié)

    以上是生活随笔為你收集整理的10-Flink集群的高可用(搭建篇补充)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。