Flink Standalone 集群 HA 配置 1. HA 集群環境規劃 使用三台節點實現兩主兩從集群(由於筆記本性能限制,不能開啟太多虛擬機,其實使用三 台和四台機器在安裝配置上沒有本質區別) Jobmanager:hadoop100hadoop101【一個 active,一個 standby ...
Flink Standalone 集群 HA 配置
1. HA 集群環境規劃 使用三台節點實現兩主兩從集群(由於筆記本性能限制,不能開啟太多虛擬機,其實使用三 台和四台機器在安裝配置上沒有本質區別) Jobmanager:hadoop100hadoop101【一個 active,一個 standby】 Taskmanager:hadoop101hadoop102 zookeeper:hadoop100【建議使用外置 zk 集群,在這裡我使用單節點 zk 來代替】
註意: 要啟用 JobManager 高可用性,必須將高可用性模式設置為 zookeeper, 配置一個 ZooKeeper quorum,並配置一個 masters 文件 存儲所有 JobManagerhostname 及其 WebUI 埠號。
Flink 利用 ZooKeeper 實現運行中的 JobManager 節點之間的分散式協調。ZooKeeper 是獨立 於 Flink 的服務,它通過領導選舉制和輕量級狀態一致性存儲來提供高度可靠的分散式協調。
2. 開始配置+啟動 集群內所有節點的配置都一樣,所以先從第一臺機器 hadoop100 開始配置 sshhadoop100 #首先按照之前配置 standalone 的參數進行修改 viconf/flink-conf.yaml jobmanager.rpc.address:hadoop100
viconf/slaves hadoop101 hadoop102
# 然後修改配置 HA 需要的參數 viconf/masters
hadoop100:8081 hadoop101:8081
viconf/flink-conf.yaml high-availability:zookeeper high-availability.zookeeper.quorum:hadoop100:2181 #ZooKeeper 節點根目錄,其下放置所有集群節點的 namespace high-availability.zookeeper.path.root:/flink #ZooKeeper 節點集群 id,其中放置了集群所需的所有協調數據 high-availability.cluster-id:/cluster_one # 建議指定 hdfs 的全路徑。如果某個 flink 節點沒有配置 hdfs 的話,不指定全路徑無法識別 #storageDir 存儲了恢復一個 JobManager 所需的所有元數據。 high-availability.storageDir:hdfs://hadoop100:9000/flink/ha
# 把 hadoop100 節點上修改好配置的 flink 安裝目錄拷貝到其他節點 cd/data/soft/ scp-rqflink-1.4.2hadoop101:/data/soft scp-rqflink-1.4.2hadoop102:/data/soft
# 【先啟動 hadoop 服務】 sbin/start-all.sh # 【先啟動 zk 服務】 bin/zkServer.shstart # 啟動 flinkstandaloneHA 集群,在 hadoop100 節點上啟動如下命令 bin/start-cluster.sh
# 啟動之後會顯示如下日誌信息 StartingHAclusterwith2masters. Startingstandalonesessiondaemononhosthadoop100. Startingstandalonesessiondaemononhosthadoop101. Startingtaskexecutordaemononhosthadoop101. Startingtaskexecutordaemononhosthadoop102.
3. 驗證 HA 集群進程 查看機器進程會發現如下情況【此處只列出 flink 自身的進程信息,不包含 zk,hadoop 進程 信息】 登錄 hadoop100 節點 執行 jps: 20159StandaloneSessionClusterEntrypoint
登錄 hadoop101 節點 執行 jps: 7795StandaloneSessionClusterEntrypoint
8156TaskManagerRunner
登錄 hadoop102 節點 執行 jps: 5046TaskManagerRunner
因為 jobmanager 節點都會啟動 web 服務,也可以通過 web 界面進行驗證 訪問 http://hadoop100:8081/#/jobmanager/config 發現以下信息: 註意:此時就算是訪問 hadoop101:8081 也會跳轉回 hadoop100:8081 因為現在 hadoop100 是 active 的 jobmanager。從下圖中也可以看出,點擊 jobmanager 查看,顯示哪個節點,就 表示哪個節點現在是 active 的。
4. 模擬 jobmanager 進程掛掉 現在 hadoop100 節點上的 jobmanager 是 active 的。我們手工把這個進程 kill 掉,模擬進程 掛掉的情況,來驗證hadoop101上的standby狀態的jobmanager是否可以正常切換到active。 sshhadoop100 執行 jps: 20159StandaloneSessionClusterEntrypoint
kill20159
5. 驗證 HA 切換 hadoop100 節點上的 jobmanager 進程被手工 kill 掉了,然後 hadoop101 上的 jobmanager 會 自動切換為 active,中間需要有一個時間差,稍微等一下 訪問 http://hadoop101:8081/#/jobmanager/config 如果可以正常訪問並且能看到 jobmanager 的信息變為 hadoop101,則表示 jobmanager 節點 切換成功
6. 重啟之前 kill 掉的 jobmanager 進入到 hadoop100 機器 sshhadoop100 執行下麵命令啟動 jobmanager bin/jobmanager.shstart
啟動成功之後,可以訪問 http://hadoop100:8081/#/jobmanager/config 這個節點重啟啟動之後,就變為 standby 了。hadoop101 還是 active。
Flink on yarn 集群 HA 配置
1. HA 集群環境規劃 flinkonyarn 的 HA 其實是利用 yarn 自己的恢復機制。
在這需要用到 zk,主要是因為雖然 flink-on-yarnclusterHA 依賴於 Yarn 自己的集群機制,但 是 FlinkJob 在恢復時,需要依賴檢查點產生的快照,而這些快照雖然配置在 hdfs,但是其元 數據信息保存在 zookeeper 中,所以我們還要配置 zookeeper 的信息
hadoop 搭建的集群,在 hadoop100,hadoop101,hadoop102 節點上面【flinkon yarn 使用 偽分佈 hadoop 集群和真正分散式 hadoop 集群,在操作上沒有區別】 zookeeper 服務也在 hadoop100 節點上
2. 開始配置+啟動 主要在 hadoop100 這個節點上配置即可
首先需要修改 hadoop 中 yarn-site.xml 中的配置,設置提交應用程式的最大嘗試次數 <property> <name>yarn.resourcemanager.am.max-attempts</name> <value>4</value> <description> Themaximumnumberofapplicationmasterexecutionattempts. </description> </property>
# 把修改後的配置文件同步到 hadoop 集群的其他節點 scp-rqetc/hadoop/yarn-site.xml hadoop101:/data/soft/hadoop-2.7.5/etc/hadoop/ scp-rqetc/hadoop/yarn-site.xml hadoop102:/data/soft/hadoop-2.7.5/etc/hadoop/
然後修改 flink 部分相關配置 可以解壓一份新的 flink-1.6.1 安裝包 tar-zxvfflink-1.6.1-bin-hadoop27-scala_2.11.tgz
修改配置文件【標紅的目錄名稱建議和 standaloneHA 中的配置區分開】 viconf/flink-conf.yaml high-availability:zookeeper high-availability.zookeeper.quorum:hadoop100:2181 high-availability.storageDir:hdfs://hadoop100:9000/flink/ha-yarn high-availability.zookeeper.path.root:/flink-yarn yarn.application-attempts:10
3. 啟動 flinkonyarn,測試 HA 先啟動 hadoop100 上的 zookeeper 和 hadoop bin/zkServer.shstart sbin/start-all.sh
在 hadoop100 上啟動 Flink 集群 cd/data/soft/flink-1.6.1 bin/yarn-session.sh-n2
到 resoucemanager 的 web 界面上查看對應的 flink 集群在哪個節點上
jobmanager 進程就在對應的節點的(YarnSessionClusterEntrypoint)進程裡面
所以想要測試 jobmanager 的 HA 情況,只需要拿 YarnSessionClusterEntrypoint 這個進程進行 測試即可。
執行下麵命令手工模擬 kill 掉 jobmanager(YarnSessionClusterEntrypoint)、 sshhadoop102 jps 5325YarnSessionClusterEntrypoint
kill5325
然後去 yarn 的 web 界面進行查看:
發現這個程式的 AttemptId 變為 00002 了
如果想查看 jobmanager 的 webui 界面可以點擊下麵鏈接:
註意:針對上面配置文件中的一些配置參數的詳細介紹信息可以參考此文章 https://blog.csdn.net/xu470438000/article/details/79633824 但是需要註意一點,此鏈接文章中使用的 flink 版本是 1.4.2。我們本課程中使用的 flink 版本 是 1.6.1,這兩個版本中的一些參數名稱會有細微不同。但是參數的含義基本沒有什麼變化。