本文介紹Flink的安裝步驟,主要是Flink的獨立部署模式,它不依賴其他平台。文中内容分為4塊:前置準備、Flink本地模式搭建、Flink Standalone搭建、Flink Standalong HA搭建。
示範使用的Flink版本是1.15.4,官方文檔位址:https://nightlies.apache.org/flink/flink-docs-release-1.15/zh/docs/try-flink/local_installation/。
1、前置準備
1.1、因為後面要搭建叢集,是以需要準備3台linux伺服器,叢集伺服器節點提前安裝JDK 8以上版本。
1.2、給叢集的每台伺服器配置設定好角色。類似下圖:
1.3、叢集的伺服器之間配置好ssh免密登入,避免後續搭建出現麻煩,這一步一定要做。簡單步驟如下:
- 在master機器執行ssh-keygen -t rsa
- 在master機器執行指令,将密鑰拷貝到其餘伺服器ssh-copy-id -i /root/.ssh/id_rsa.pub 目标伺服器IP
2、Flink本地模式搭建
搭建本地模式隻需要一台伺服器。下面以master伺服器為例。
2.1、下載下傳安裝包
安裝包下載下傳位址https://flink.apache.org/zh/downloads/#apache-flink-2、https://archive.apache.org/dist/flink/flink-1.15.4。
解壓安裝包:
tar -xzf flink-1.15.4-bin-scala_2.12.tgz
2.2、啟動叢集
進入到解壓目錄下,執行以下腳本:
./bin/start-cluster.sh
通過jps查詢相關程序:
17409 TaskManagerRunner
13597 StandaloneSessionClusterEntrypoint
若出現上述程序,則代表啟動成功。StandaloneSessionClusterEntrypoint為Flink主程序,即JobManager;TaskManagerRunner為Flink從程序,即TaskManager。
2.3、檢視WebUI
在浏覽器中通路伺服器8081端口即可檢視Flink的WebUI,比如http://10.20.0.93:8081/,從WebUI中可以看出,目前本地模式的Task Slot數量和TaskManager數量。通路結果如下圖所示:
如果出現通路不通的情況,使用如下方式解決:
正常啟動叢集後,隻能通過http://localhost:8081通路Flink Web UI,如果通過IP位址通路,則出現連接配接被拒絕的情況。此時需要修改Flink配置檔案flink-conf.yaml,将localhost改成0.0.0.0,修改之後重新開機服務就可以使用IP位址通路。修改部分見下圖:
2.4、停止叢集
./bin/stop-cluster.sh
3、Flink Standalone搭建
搭建Flink Standalone模式,需要3台伺服器。角色安排見下圖:
3.1、下載下傳安裝包
安裝包下載下傳位址https://flink.apache.org/zh/downloads/#apache-flink-2、https://archive.apache.org/dist/flink/flink-1.15.4。
在JobManager伺服器下載下傳安裝包,解壓安裝包:
tar -xzf flink-1.15.4-bin-scala_2.12.tgz -C /data/software/
3.2、修改flink-conf.yaml配置檔案
Flink的配置檔案都存放于安裝目錄下的conf目錄。在JobManager伺服器,進入該目錄,執行以下操作。
vim conf/flink-conf.yaml
将檔案中jobmanager.rpc.address屬性的值改為JobManager機器的ip位址,如下:
jobmanager.rpc.address: 10.20.0.93
jobmanager.bind-host: 0.0.0.0
3.3、修改workers檔案
workers檔案必須包含所有需要啟動的TaskManager節點的主機名,且每個主機名占一行。在JobManager伺服器,執行以下操作
vim conf/workers
修改為其餘兩台TaskManager的ip位址:
10.20.0.92
10.20.0.90
3.4、複制Flink安裝檔案到其他伺服器
在JobManager伺服器執行指令,将安裝檔案複制到其餘TaskManager伺服器,指令如下:
scp -r /data/software/flink-15.4/ 10.20.0.92:/data/software/flink-15.4/
scp -r /data/software/flink-15.4/ 10.20.0.90:/data/software/flink-15.4/
3.5、啟動叢集
在JobManager節點上進入Flink安裝目錄,執行以下指令啟動Flink叢集:
bin/start-cluster.sh
啟動完畢後,在叢集各伺服器上通過jsp指令檢視Java程序。若各節點存在以下程序,則說明叢集啟動成功:
JobManager節點:StandaloneSessionClusterEntrypoint
TaskManager1節點:TaskManagerRunner
TaskManager2節點:TaskManagerRunner
嘗試送出一個簡單任務,如果任務正常執行完畢,則叢集一切正常。送出Flink自帶的簡單任務如下:
./bin/flink run examples/streaming/WordCount.jar
3.6、檢視WebUI
通過JobManager節點通路WebUI,可以看到此時是1個JobManager,2個TaskManager,也能以上執行完畢的任務,如下圖:
4、Flink Standalone HA搭建
4.1、HA模式介紹
在Flink Standalone模式下,實作HA的方式可以利用ZooKeeper在所有正在運作的JobManager執行個體之間進行分布式協調,實作多個JobManager無縫切換。Flink Standalone模式的HA架構如圖:
HA的核心就是:可以在叢集中啟動多個JobManager,并使它們都向ZooKeeper進行注冊,ZooKeeper利用自身的選舉機制保證同一時間隻有一個JobManager是活動狀态(Active)的,其他的都是備用狀态(Standby)。當活動狀态的JobManager出現故障時,ZooKeeper會從其他備用狀态的JobManager選出一個成為活動JobManager。流程見下圖:
此外,活動狀态的JobManager在工作時會将其中繼資料(JobGraph、應用程式JAR檔案等)寫入一個遠端持久化存儲系統(例如HDFS)中,還會将中繼資料存儲的位置和路徑資訊寫入ZooKeeper存儲,以便能夠進行故障恢複,如圖下圖所示:
4.2、角色配置設定
下面仍然采用前面的的3個節點,在前面已經搭建好的Flink Standalone叢集上進行操作。叢集角色配置設定如下圖:
搭建步驟如下:
4.3、修改masters檔案
Flink的masters檔案用于配置所有需要啟動的JobManager節點以及每個JobManager的WebUI綁定的端口。
進入centos01節點的Flink安裝目錄,修改conf/masters檔案,修改内容如下:
centos01:8081
centos02:8082
上述配置表示在叢集centos01和centos02節點上啟動JobManager,并且每個JobManager的WebUI通路端口分别為8081。
4.4、修改flink-conf.yaml檔案設定高可用模式
進入centos01節點的Flink安裝主目錄,修改conf/flink-conf.yaml檔案,添加以下内容:
# 将高可用模式設定為ZooKeeper,預設叢集不會開啟高可用狀态
high-availability: zookeeper
# ZooKeeper叢集主機名(或IP)與端口清單,多個以逗号分隔
high-availability.zookeeper.quorum: centos01:2181,centos02:2181,centos03:2181
# 用于持久化JobManager中繼資料(JobGraph、應用程式JAR檔案等)的HDFS位址,以便進行故障恢複,ZooKeeper上存儲的隻是中繼資料所在的位置路徑資訊
high-availability.storageDir: /data/software/flink-15.4/ha
# 擷取storageDir也可用hdfs,如果使用hdfs的話,則需要單獨安裝hdfs,本文暫不使用
#high-availability.storageDir: hdfs://centos01:9000/flink/recovery
4.5、修改zoo.cfg檔案
Flink内置了ZooKeeper服務和相關腳本檔案,如果你的叢集中沒有安裝ZooKeeper,則可以通過修改zoo.cfg檔案配置Flink内置的ZooKeeper。生産環境建議使用獨立的外部ZooKeeper。
進入centos01節點的Flink安裝主目錄,修改conf/zoo.cfg檔案,添加以下内容,配置ZooKeeper啟動節點與選舉相關端口:
server.1=centos01:2888:3888
server.2=centos02:2888:3888
server.3=centos03:2888:388
上述配置表示在centos01、centos02和centos03節點上啟動ZooKeeper服務,其中1、2、3表示每個ZooKeeper伺服器的唯一ID。
4.6、複制Flink安裝檔案到其他節點
繼續采用scp指令,複制centos01的檔案到其他節點,scp指令會把相同檔案覆寫。
scp -r /data/software/flink-15.4/ centos02:/data/software/flink-15.4/
scp -r /data/software/flink-15.4/ centos03:/data/software/flink-15.4/
4.7、啟動ZooKeeper叢集
如果使用Flink内置的ZooKeeper,在centos01節點執行以下指令,即可啟動整個ZooKeeper叢集:
./bin/start-zookeeper-quorum.sh
啟動過程見下圖:
啟動成功後,在每個Flink節點上都會産生一個名為FlinkZooKeeperQuorumPeer的程序,該程序是ZooKeeper服務的守護程序。使用jsp可以檢視到如下程序:
4.8、啟動Flink Standalone HA叢集
在centos01節點上執行以下指令,啟動Flink Standalone HA叢集:
bin/start-cluster.sh
啟動過程類似下圖:
單獨檢視centos01的程序,如下圖:
單獨檢視centos02的程序,如下圖:
單獨檢視centos03的程序,如下圖:
在檢視/tmp目錄,可以看到相關中繼資料資訊:
4.9、通路WebUI
之前的防止,隻有centos01可以通路dashboard,現在centos01、centos02都可以通路。
在送出一個測試,如果能正常執行,說明整個叢集正常。
./bin/flink run examples/streaming/WordCount.jar
4.10、停止叢集
若要停止Flink Standalone HA叢集,在centos01節點上首先執行以下指令停止整個Flink叢集:
bin/stop-cluster.sh
然後執行以下指令,停止ZooKeeper叢集:
bin/stop-zookeeper-quorum.sh
以上是Flink的安裝步驟!下一篇介紹Flink DataStream的概念和使用案例。
原文連結:http://www.mangod.top/articles/2023/07/26/1690349392449.html、https://mp.weixin.qq.com/s/XICBfneJWFe4quwf3kRQXQ
感謝你的閱讀,碼字不易,歡迎點贊 關注 收藏!!!