天天看點

10分鐘入門Flink--安裝

作者:不焦躁的程式員

本文介紹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、給叢集的每台伺服器配置設定好角色。類似下圖:

10分鐘入門Flink--安裝

1.3、叢集的伺服器之間配置好ssh免密登入,避免後續搭建出現麻煩,這一步一定要做。簡單步驟如下:

  1. 在master機器執行ssh-keygen -t rsa
  2. 在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數量。通路結果如下圖所示:

10分鐘入門Flink--安裝

如果出現通路不通的情況,使用如下方式解決:

正常啟動叢集後,隻能通過http://localhost:8081通路Flink Web UI,如果通過IP位址通路,則出現連接配接被拒絕的情況。此時需要修改Flink配置檔案flink-conf.yaml,将localhost改成0.0.0.0,修改之後重新開機服務就可以使用IP位址通路。修改部分見下圖:

10分鐘入門Flink--安裝

2.4、停止叢集

./bin/stop-cluster.sh
           

3、Flink Standalone搭建

搭建Flink Standalone模式,需要3台伺服器。角色安排見下圖:

10分鐘入門Flink--安裝

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,也能以上執行完畢的任務,如下圖:

10分鐘入門Flink--安裝
10分鐘入門Flink--安裝
10分鐘入門Flink--安裝

4、Flink Standalone HA搭建

4.1、HA模式介紹

在Flink Standalone模式下,實作HA的方式可以利用ZooKeeper在所有正在運作的JobManager執行個體之間進行分布式協調,實作多個JobManager無縫切換。Flink Standalone模式的HA架構如圖:

10分鐘入門Flink--安裝

HA的核心就是:可以在叢集中啟動多個JobManager,并使它們都向ZooKeeper進行注冊,ZooKeeper利用自身的選舉機制保證同一時間隻有一個JobManager是活動狀态(Active)的,其他的都是備用狀态(Standby)。當活動狀态的JobManager出現故障時,ZooKeeper會從其他備用狀态的JobManager選出一個成為活動JobManager。流程見下圖:

10分鐘入門Flink--安裝

此外,活動狀态的JobManager在工作時會将其中繼資料(JobGraph、應用程式JAR檔案等)寫入一個遠端持久化存儲系統(例如HDFS)中,還會将中繼資料存儲的位置和路徑資訊寫入ZooKeeper存儲,以便能夠進行故障恢複,如圖下圖所示:

10分鐘入門Flink--安裝

4.2、角色配置設定

下面仍然采用前面的的3個節點,在前面已經搭建好的Flink Standalone叢集上進行操作。叢集角色配置設定如下圖:

10分鐘入門Flink--安裝

搭建步驟如下:

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
           

啟動過程見下圖:

10分鐘入門Flink--安裝

啟動成功後,在每個Flink節點上都會産生一個名為FlinkZooKeeperQuorumPeer的程序,該程序是ZooKeeper服務的守護程序。使用jsp可以檢視到如下程序:

10分鐘入門Flink--安裝

4.8、啟動Flink Standalone HA叢集

在centos01節點上執行以下指令,啟動Flink Standalone HA叢集:

bin/start-cluster.sh
           

啟動過程類似下圖:

10分鐘入門Flink--安裝

單獨檢視centos01的程序,如下圖:

10分鐘入門Flink--安裝

單獨檢視centos02的程序,如下圖:

10分鐘入門Flink--安裝

單獨檢視centos03的程序,如下圖:

10分鐘入門Flink--安裝

在檢視/tmp目錄,可以看到相關中繼資料資訊:

10分鐘入門Flink--安裝

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

感謝你的閱讀,碼字不易,歡迎點贊 關注 收藏!!!