首先要安裝JDK及zookeeper,參考 https://www.cnblogs.com/dotqin/p/13560419.html 及 https://www.cnblogs.com/dotqin/p/13560764.html
另外需要各服務器之間SSH免密碼登錄,這個自行百度,要注意的是自己SSH自己也要免密碼
除此之外還需要准備一個共享的存儲目錄,可以是hdfs、ceph、S3、nfs
環境說明:三台百度雲服務器,內網IP分別為: 192.168.32.36、192.168.32.37、192.168.32.38, 不開放公網IP訪問
分別在三台服務器上執行以下操作:
1.創建目錄及下載解壓
mkdir /usr/local/flink cd /usr/local/flink wget https://mirrors.tuna.tsinghua.edu.cn/apache/flink/flink-1.11.1/flink-1.11.1-bin-scala_2.11.tgz tar zxvf flink-1.11.1-bin-scala_2.11.tgz
2.編輯master文件
vim /usr/local/flink/flink-1.11.1/conf/masters # 設置為以下內容 192.168.32.36:8081 192.168.32.37:8081 192.168.32.38:8081
3.編輯配置文件
vim /usr/local/flink/flink-1.11.1/conf/flink-conf.yaml # 首先將jobmanager.rpc.address項注釋掉 # 然后設置高可用相關的配置項 high-availability: zookeeper high-availability.storageDir: /nfs/flink/ha/ # 存儲目錄 這里直接使用了百度雲的CFS文件系統,三台均掛載到了/nfs下 high-availability.zookeeper.quorum: 192.168.32.36:2181,192.168.32.37:2181,192.168.32.38:2181 # ZooKeeper quorum是ZooKeeper服務器的復制組,它提供分布式協調服務 high-availability.zookeeper.path.root: /flink # 根ZooKeeper節點,在該節點下放置所有集群節點 high-availability.cluster-id: /ccreate-flink-cluster # cluster-id ZooKeeper節點,在該節點下放置集群的所有必需協調數據
# 另外以下幾個參數看情況調整
jobmanager.memory.process.size: 10240m
taskmanager.memory.process.size: 10240m
taskmanager.numberOfTaskSlots: 8 # flink槽數量 建議設置為當前服務器的CPU核數
parallelism.default: 1 # 這個可以在JOB中指定,這里設不設置影響不大, 優先級最低
4.檢驗集群啟動和停止
cd /usr/local/flink/flink-1.11.1/
# 啟動集群 這個操作會在三台服務器上各啟動一個jobmanager守護程序,以及在當前服務器上啟動一個taskmanager守護程序,所以最終還是需要三台服務器都運行一下這個命令
bin/start-cluster.sh
# 停止集群 這個具體停止哪些守護程序未進行測試
bin/stop-cluster.sh
# 這兩個命令建議多運行幾次直到沒有YES彈出,另外如果彈出讓你輸密碼的提示說明你SSH免密碼可能沒有配置好
# 確認可以無障礙啟動集群后可以登錄WEB查看 http://192.168.32.36:8081
# webUI有一點要注意只有在leader的webUI中才可以查看Task Managers的信息,其他的如果停留在Task Managers頁面會循環報錯,經驗證離開頁面后報錯就會停止不會無限產生日志導致磁盤爆滿
5.添加到服務管理
vim /usr/lib/systemd/system/flink.service # 添加以下內容 [Unit] Description=flink-1.11.1 service After=syslog.target network.target zookeeper.service [Service]
Restart=always
RestartSec=1 Type=forking TimeoutSec=120 User=root Environment=JAVA_HOME=/usr/local/java/jdk1.8.0_261 ExecStart=/usr/local/flink/flink-1.11.1/bin/start-cluster.sh ExecStop=/usr/local/flink/flink-1.11.1/bin/stop-cluster.sh [Install] WantedBy=multi-user.target
6.設置服務生效及開機自啟動
systemctl daemon-reload
systemctl enable flink.service
7.啟動flink集群
systemctl start flink
systemctl status flink
