深圳商城軟件開發(fā)公司優(yōu)化一個網(wǎng)站需要多少錢
目錄
轉(zhuǎn)載處(個人用最新1.17.1測試)
依賴環(huán)境
安裝包下載地址
Flink本地模式搭建
安裝
啟動集群
查看WebUI
停止集群
Flink Standalone搭建
安裝
修改flink-conf.yaml配置文件
修改workers文件
復(fù)制Flink安裝文件到其他服務(wù)器
啟動集群
查看WebUI
Flink Standalone HA搭建
HA模式介紹
角色分配
修改masters文件
修改flink-conf.yaml文件設(shè)置高可用模式
修改zoo.cfg文件
復(fù)制Flink安裝文件到其他節(jié)點
啟動ZooKeeper集群
啟動Flink Standalone HA集群
訪問WebUI
停止集群
轉(zhuǎn)載處(個人用最新1.17.1測試)
http://www.mangod.top/articles/2023/07/26/1690349392449.html
依賴環(huán)境
操作系統(tǒng):Rocky 8.8
提前安裝JDK 8以上版本,JDK 只要不低于 1.8 就行。
https://mohen.blog.csdn.net/article/details/109465678
安裝包下載地址
現(xiàn)在最新版本為 1.17.1
https://archive.apache.org/dist/flink/flink-1.17.1/flink-1.17.1-bin-scala_2.12.tgz
wget https://archive.apache.org/dist/flink/flink-1.17.1/flink-1.17.1-bin-scala_2.12.tgz
Flink本地模式搭建
安裝
解壓安裝包
tar -zxvf flink-1.17.1-bin-scala_2.12.tgz
啟動集群
進入到解壓目錄下,執(zhí)行以下腳本
./bin/start-cluster.sh
通過 jps 命令查詢相關(guān)進程
若出現(xiàn)上述進程,則代表啟動成功。StandaloneSessionClusterEntrypoint為Flink主進程,即JobManager;TaskManagerRunner為Flink從進程,即TaskManager。
查看WebUI
在瀏覽器中訪問服務(wù)器8081端口即可查看Flink的WebUI,比如http://10.20.0.93:8081/,從WebUI中可以看出,當(dāng)前本地模式的Task Slot數(shù)量和TaskManager數(shù)量。訪問結(jié)果如下圖所示:
默認(rèn)只允許本地訪問
打開遠(yuǎn)程訪問web
關(guān)閉防火墻
systemctl stop firewalld.service 修改配置
vim conf/flink-conf.yaml
停止集群
./bin/stop-cluster.sh
Flink Standalone搭建
安裝
搭建Flink Standalone模式,需要3臺服務(wù)器。角色安排見下圖:
在JobManager服務(wù)器下載安裝包,解壓安裝包:
tar -xzf flink-1.17.1-bin-scala_2.12.tgz -C /data/software/
修改flink-conf.yaml配置文件
Flink的配置文件都存放于安裝目錄下的conf目錄。在JobManager服務(wù)器,進入該目錄,執(zhí)行以下操作。
vim conf/flink-conf.yaml
將文件中jobmanager.rpc.address屬性的值改為JobManager機器的ip地址,如下:
jobmanager.rpc.address: 10.20.0.93
jobmanager.bind-host: 0.0.0.0
修改workers文件
workers文件必須包含所有需要啟動的TaskManager節(jié)點的主機名,且每個主機名占一行。在JobManager服務(wù)器,執(zhí)行以下操作
vim conf/workers
修改為其余兩臺TaskManager的ip地址:
10.20.0.92
10.20.0.90
復(fù)制Flink安裝文件到其他服務(wù)器
在JobManager服務(wù)器執(zhí)行命令,將安裝文件復(fù)制到其余TaskManager服務(wù)器,命令如下:
scp -r /data/software/flink-1.17.1/ 10.20.0.92:/data/software/flink-1.17.1/
scp -r /data/software/flink-1.17.1/ 10.20.0.90:/data/software/flink-1.17.1/
啟動集群
在啟動或關(guān)閉集群的時候應(yīng)該會讓你輸入 Worker 節(jié)點的登陸密碼,而且是每一個 Worker 節(jié)點都要輸入一遍。顯然這樣就太麻煩了,因此我們可以提前配置一下。
# 生成私鑰和公鑰,一路回車即可
# 生成的私鑰存放在 id_rsa 文件中、公鑰則存放在 id_rsa.pub 文件中
ssh-keygen -t rsa
cd ~/.ssh # 進入到家目錄的 .ssh 目錄中
touch authorized_keys # 創(chuàng)建 authorized_keys 文件
在每個節(jié)點上都執(zhí)行上面幾個步驟,那么所有節(jié)點的 .ssh 目錄中都有 id_rsa、id_rsa.pub 和 authorized_keys 這三個文件。如果想要實現(xiàn)免登陸的話,假設(shè)在 A 節(jié)點中遠(yuǎn)程登陸 B 節(jié)點想不輸入密碼,那么就把 A 節(jié)點的 id_rsa.pub 里面的內(nèi)容添加到 B 節(jié)點的 authorized_keys 文件中即可。但是注意,這個過程是單向的,如果在 B 節(jié)點中遠(yuǎn)程登陸 A 節(jié)點也不想輸入密碼的話,那么就把 B 節(jié)點的 id_rsa.pub 里面的內(nèi)容添加到 A 節(jié)點的 authorized_keys 中。
# 可以通過 ssh-copy-id 命令幫助我們完成這一過程
[root@satori-001 .ssh]# ssh-copy-id -i id_rsa.pub root@10.20.0.90
...... 一堆輸出 .......
...... 提示你輸入 10.20.0.90 節(jié)點的密碼 ......
...... 一堆輸出 ......[root@satori-001 .ssh]# ssh-copy-id -i id_rsa.pub root@10.20.0.92
...... 一堆輸出 .......
...... 提示你輸入 10.20.0.92 節(jié)點的密碼 ......
...... 一堆輸出 ......[root@satori-001 .ssh]#
以上我們在 satori-001 節(jié)點遠(yuǎn)程登錄 satori-002 和 satori-003 就無需再輸入密碼了,同理我們還要在 satori-002、satori-003 上也重復(fù)相同的操作,讓集群中所有節(jié)點之間的通信都暢通無阻。
[root@satori-002 .ssh]# ssh-copy-id -i id_rsa.pub root@10.20.0.92
[root@satori-002 .ssh]# ssh-copy-id -i id_rsa.pub root@10.20.0.90[root@satori-003 .ssh]# ssh-copy-id -i id_rsa.pub root@10.20.0.92
[root@satori-003 .ssh]# ssh-copy-id -i id_rsa.pub root@10.20.0.90
在JobManager節(jié)點上進入Flink安裝目錄,執(zhí)行以下命令啟動Flink集群:
bin/start-cluster.sh
啟動完畢后,在集群各服務(wù)器上通過jsp命令查看Java進程。若各節(jié)點存在以下進程,則說明集群啟動成功:
JobManager節(jié)點:StandaloneSessionClusterEntrypoint
TaskManager1節(jié)點:TaskManagerRunner
TaskManager2節(jié)點:TaskManagerRunner
嘗試提交一個簡單任務(wù),如果任務(wù)正常執(zhí)行完畢,則集群一切正常。提交Flink自帶的簡單任務(wù)如下:
./bin/flink run examples/streaming/WordCount.jar
查看WebUI
通過JobManager節(jié)點訪問WebUI,可以看到此時是1個JobManager,2個TaskManager,也能以上執(zhí)行完畢的任務(wù),如下圖:
Flink Standalone HA搭建
HA模式介紹
在Flink Standalone模式下,實現(xiàn)HA的方式可以利用ZooKeeper在所有正在運行的JobManager實例之間進行分布式協(xié)調(diào),實現(xiàn)多個JobManager無縫切換。Flink Standalone模式的HA架構(gòu)如圖:
HA的核心就是:可以在集群中啟動多個JobManager,并使它們都向ZooKeeper進行注冊,ZooKeeper利用自身的選舉機制保證同一時間只有一個JobManager是活動狀態(tài)(Active)的,其他的都是備用狀態(tài)(Standby)。當(dāng)活動狀態(tài)的JobManager出現(xiàn)故障時,ZooKeeper會從其他備用狀態(tài)的JobManager選出一個成為活動JobManager。流程見下圖:
此外,活動狀態(tài)的JobManager在工作時會將其元數(shù)據(jù)(JobGraph、應(yīng)用程序JAR文件等)寫入一個遠(yuǎn)程持久化存儲系統(tǒng)(例如HDFS)中,還會將元數(shù)據(jù)存儲的位置和路徑信息寫入ZooKeeper存儲,以便能夠進行故障恢復(fù),如圖下圖所示:
角色分配
下面仍然采用前面的的3個節(jié)點,在前面已經(jīng)搭建好的Flink Standalone集群上進行操作。集群角色分配如下圖:
修改masters文件
Flink的masters文件用于配置所有需要啟動的JobManager節(jié)點以及每個JobManager的WebUI綁定的端口。
進入centos01節(jié)點的Flink安裝目錄,修改conf/masters文件,修改內(nèi)容如下:
centos01:8081
centos02:8082
上述配置表示在集群centos01和centos02節(jié)點上啟動JobManager,并且每個JobManager的WebUI訪問端口分別為8081,8082。
修改flink-conf.yaml文件設(shè)置高可用模式
進入centos01節(jié)點的Flink安裝主目錄,修改conf/flink-conf.yaml文件,添加以下內(nèi)容:
# 將高可用模式設(shè)置為ZooKeeper,默認(rèn)集群不會開啟高可用狀態(tài)
high-availability: zookeeper# ZooKeeper集群主機名(或IP)與端口列表,多個以逗號分隔
high-availability.zookeeper.quorum: centos01:2181,centos02:2181,centos03:2181# 用于持久化JobManager元數(shù)據(jù)(JobGraph、應(yīng)用程序JAR文件等)的HDFS地址,以便進行故障恢復(fù),ZooKeeper上存儲的只是元數(shù)據(jù)所在的位置路徑信息
high-availability.storageDir: /data/software/flink-1.17.1/ha# 獲取storageDir也可用hdfs,如果使用hdfs的話,則需要單獨安裝hdfs,本文暫不使用
#high-availability.storageDir: hdfs://centos01:9000/flink/recovery
修改zoo.cfg文件
Flink內(nèi)置了ZooKeeper服務(wù)和相關(guān)腳本文件,如果你的集群中沒有安裝ZooKeeper,則可以通過修改zoo.cfg文件配置Flink內(nèi)置的ZooKeeper。生產(chǎn)環(huán)境建議使用獨立的外部ZooKeeper。
進入centos01節(jié)點的Flink安裝主目錄,修改conf/zoo.cfg文件,添加以下內(nèi)容,配置ZooKeeper啟動節(jié)點與選舉相關(guān)端口:
server.1=centos01:2888:3888
server.2=centos02:2888:3888
server.3=centos03:2888:3888
上述配置表示在centos01、centos02和centos03節(jié)點上啟動ZooKeeper服務(wù),其中1、2、3表示每個ZooKeeper服務(wù)器的唯一ID。
復(fù)制Flink安裝文件到其他節(jié)點
繼續(xù)采用scp命令,復(fù)制centos01的文件到其他節(jié)點,scp命令會把相同文件覆蓋。
scp -r /data/software/flink-1.17.1/ centos02:/data/software/flink-1.17.1/
scp -r /data/software/flink-1.17.1/ centos03:/data/software/flink-1.17.1/
啟動ZooKeeper集群
如果使用Flink內(nèi)置的ZooKeeper,在centos01節(jié)點執(zhí)行以下命令,即可啟動整個ZooKeeper集群:
./bin/start-zookeeper-quorum.sh
啟動過程見下圖
啟動成功后,在每個Flink節(jié)點上都會產(chǎn)生一個名為FlinkZooKeeperQuorumPeer的進程,該進程是ZooKeeper服務(wù)的守護進程。使用jsp可以查看到如下進程:
啟動Flink Standalone HA集群
在centos01節(jié)點上執(zhí)行以下命令,啟動Flink Standalone HA集群:
bin/start-cluster.sh
啟動過程類似下圖:
單獨查看centos01的進程,如下圖:
單獨查看centos02的進程,如下圖:
單獨查看centos03的進程,如下圖:
在查看/tmp目錄,可以看到相關(guān)元數(shù)據(jù)信息:
訪問WebUI
之前的防止,只有centos01可以訪問dashboard,現(xiàn)在centos01、centos02都可以訪問。
在提交一個測試,如果能正常執(zhí)行,說明整個集群正常。
./bin/flink run examples/streaming/WordCount.jar
停止集群
若要停止Flink Standalone HA集群,在centos01節(jié)點上首先執(zhí)行以下命令停止整個Flink集群:
bin/stop-cluster.sh
然后執(zhí)行以下命令,停止ZooKeeper集群:
bin/stop-zookeeper-quorum.sh
以上是Flink的安裝步驟!下一篇介紹Flink DataStream的概念和使用案例。