本文基於 Flink 1.7。
本文介紹搭建standalone HA 集羣的過程,並且簡單介紹核心配置。
Requirements
- Java 1.8+
- ssh
注意:集羣之間所有節點 無密SSH跳轉與保持相同的目錄結構將有助於使用Flink 提供的腳本。
版本選擇
下載 合適版本的Flink安裝包。Flink 並不要求一定要用到Hadoop 生態組件,如果要用到Hadoop 生態組件,建議下載於Hadoop 綁定的版本,在我們的場景中,用的是Hadoop2.6,所以這裏選擇Apache Flink 1.7.2 with Hadoop® 2.6
。一般來說,Flink 的運行模式Yarn、以及savepoint/checkpoint 會用到HDFS,所以,採用與Hadoop 綁定的版本更常見一點。
配置Flink
我們這裏配置Flink Standalone HA集羣,集羣包含5臺機器,分別是testhadoop[1-5],其中testhadoop[1-2]上運行Jobmanager,testhadoop[3-5]上運行Taskmanager。
配置 ./conf/masters 文件,配置了Jobmanager,其中8081端口是Flink 的Rest 端口,該端口在下面的 ./conf/flink-conf.yaml 中配置。
$ cat masters
testhadoop1:8081
testhadoop2:8081
配置 ./conf/slaves 文件,配置Taskmanagers 地址。
$ cat slaves
testhadoop3
testhadoop4
testhadoop5
配置 ./conf/flink-conf.yaml 文件,注意,下面僅列出了對配置文件的更改,主要是HA方面的,該配置文件還有一些默認配置沒有列出,具體的可以參考配置文件。
jobmanager.rpc.address=testhadoop1 // Standalone HA Cluster模式下會被masters文件覆蓋
high-availability: zookeeper
high-availability.zookeeper.path.root: /flink_test
high-availability.cluster-id: cluster_test
high-availability.storageDir: hdfs:///flink_test/ha/
high-availability.zookeeper.quorum: testhadoop1:2181
啓動集羣
./bin/start-cluster.sh
可以看到,我們啓動了一個HA集羣,集羣有2個master節點,分別位於testhadoop[1-2]上,啓動了standalonesession
守護進程 ; 在testhadoop[3-5] 上,啓動了taskexecutor
守護進程。我們用瀏覽器打開testhadoop1:8081 ,如下圖所示:
配置說明
下表介紹 ./conf/flink-conf.yaml
中重要的配置項,具體完整版參考配置頁面。
屬性 | 默認值 | 說明 |
---|---|---|
jobmanager.rpc.address | localhost | 僅 standalone 模式需要,表明jobmanager 所在host,如果是HA集羣,用./bin/start_cluster.sh 時,該配置會被master文件覆蓋。 |
jobmanager.heap.size | 1024m | Jobmanager的JVM heap size |
taskmanager.heap.size | 1024m | Taskmanager的JVM heap size |
taskmanager.numberOfTaskSlots | 1 | 每個Taskmanager的slot數,每個slot 可以運行一個並行pipeline。如果該值大於1,則可以運行多個並行pipeline。優點是可以充分利用多核CPU,缺點是各個slot會平分可用的內存,通常來說,這個值被設置爲機器的物理CPU 核數。 |
parallelism.default | 1 | Flink 任務默認的並行度 |
high-availability | "NONE" | 默認爲NONE,但這並不適用於生產,所以,需要用zookeeper, |
high-availability.zookeeper.path.root | Flink 在 zookeeper中存儲的root 地址 | |
high-availability.cluster-id | "/default" | Flink 集羣的ID,用於區分不同集羣,僅standalone 模式需要,Yarn/Mesos 可以自動推斷。 |
high-availability.storageDir | HA 模式下,Flink 存儲元數據的文件系統URI,我們常用HDFS 路徑 | |
high-availability.zookeeper.quorum | HA 用到的zookeeper的地址 | |
rest.port | rest 端口 | |
state.backend | checkpoint的後端存儲,支持jobmanager、filesystem和rocksdb,常用rocksdb | |
state.checkpoints.dir | checkpoint 的存儲目錄,比如HDFS 目錄 | |
state.savepoints.dir | savepoint 的存儲目錄,比如HDFS 目錄 |
總結
本文主要介紹Flink 的standalone 集羣安裝和配置,standalone 集羣可以快速搭建,也能滿足HA的要求。但是,在實際生產環境,可能更多的還是使用基於Yarn等資源管理器的Flink 集羣。
到此,Flink 基礎知識已經全部介紹,看到這裏應該已經可以寫一些簡單的Flink 應用了。
Flink(3)——Event Time 與 Watermark
Flink(6)——flink table & sql 介紹
Flink(7)——Flink Standalone Cluster 安裝與配置詳解
爲了方便溝通,可以掃描下方二維碼關注我。