1. 部署說(shuō)明
Flink 有三種部署模式,分別是 Local、Standalone Cluster 和 Yarn Cluster。對(duì)于 Local 模式來(lái)說(shuō),JobManager 和 TaskManager 共用一個(gè) JVM,Local模式的部署請(qǐng)點(diǎn)擊http://www.lxweimin.com/p/26c9ef86fb19。如果要驗(yàn)證一個(gè)簡(jiǎn)單的應(yīng)用,Local 模式是最方便的。實(shí)際應(yīng)用中大多使用 Standalone 或者 Yarn Cluster。
Flink是Master/Slave架構(gòu),充當(dāng)Master角色的是JobManager,充當(dāng)Slave角色是SlaveTaskManager。和所有Master/Slave架構(gòu)的集群一樣,JobManager也存在單點(diǎn)故障的問題;Flink也提供了Master HA的方案,是由Zookeeper支撐的;本次部署暫不考慮HA的情況,僅僅達(dá)到了集群運(yùn)行起來(lái)的目標(biāo)。
2. 部署要求
機(jī)器三臺(tái),IP是192.168.1.90—92,主機(jī)名分別是vm1、vm2、vm3。
Linux操作系統(tǒng),本次使用Centos 7.1。
-
JDK1.7或者更高版本,本次使用JDK 1.8,并配置環(huán)境變量。
[root@vm1 ~]# vi /etc/profile #在文件的末尾配置JAVA_HOME和Path export JAVA_HOME=/opt/jdk export PATH=$PATH:$JAVA_HOME/bin [root@vm1 ~]# source /etc/profile
-
設(shè)置ssh免登錄
-
生成ssh密碼的命令,-t 參數(shù)表示生成算法,有rsa和dsa兩種;-P表示使用的密碼,這里使用“”空字符串表示無(wú)密碼。直接回車。
[root@vm1 ~]# ssh-keygen -t rsa -P ""
-
將生成的密鑰寫入authorized_keys文件。
[root@vm1 ~]# cat .ssh/id_rsa.pub >>.ssh/authorized_keys
-
將.ssh目錄拷貝到其它主機(jī)相同目錄下。
[root@vm1 ~]# scp -r ~/.ssh root@192.168.1.91:~/ [root@vm1 ~]# scp -r ~/.ssh root@192.168.1.92:~/
-
3. 部署過(guò)程
3.1 部署Flink
把Flink的壓縮包解壓到/opt目錄下,即Flink的Home路徑是/opt/flink-1.1.2,保持各臺(tái)機(jī)器上flink目錄一致。
3.2 Flink參數(shù)設(shè)置
Flink的配置文件路徑是/opt/flink-1.1.2/conf,目錄下的文件包括
- flink-conf.yaml #flink的主配置文件
- log4j-cli.properties
- log4j.properties
- log4j-yarn-session.properties
- logback.xml
- logback-yarn.xml
- masters # master(jobmanager)配置文件
- slaves # slave(taskmanager)配置文件
- zoo.cfg # Zookeeper配置文件
本次部署,修改了vm1上的flink-conf.yaml、mastes和slaves,并在修改完成后拷貝到了vm2和vm3上。
3.2.1 flink-conf.yaml的修改
文件路徑是/opt/flink-1.1.2/conf/flink-conf.yaml
,主要關(guān)注以下參數(shù),具體的含義見注釋。還有更多的參數(shù)配置,例如前端頁(yè)面的配置、文件存儲(chǔ)的配置(支持HDFS)、HA的配置等,更多配置說(shuō)明參考:Flink官方配置說(shuō)明。
# Master的主機(jī)名或者ip
jobmanager.rpc.address: vm1
# JobManager監(jiān)聽端口
jobmanager.rpc.port: 6123
# JobManager的內(nèi)存參數(shù)
jobmanager.heap.mb: 512
# 每臺(tái)taskmanager可用的總內(nèi)存
taskmanager.heap.mb: 8192
# 每臺(tái)taskmanager可用的solt數(shù)目,一般設(shè)置成CPU的core數(shù)
taskmanager.numberOfTaskSlots: 2
# NumTaskManagers(slave的個(gè)數(shù)) * NumSlotsPerTaskManager
parallelism.default: 4
# 酌情修改臨時(shí)目錄。/tmp中的數(shù)據(jù)重啟就沒了。
taskmanager.tmp.dirs: /tmp
3.2.1 masters的修改
在配置jobmanager(master)文件時(shí),除了配置master的主機(jī)名(IP)之外,還需要指定 JobManager 的 UI 監(jiān)聽端口。
vm1:8081
3.2.1 slaves的修改
修改slaves文件,配置多個(gè)taskmanager(slave)。
vm2
vm3
3.3 集群?jiǎn)?dòng)和停止
3.3.1 啟動(dòng)集群
在master節(jié)點(diǎn),即本例中的vm1節(jié)點(diǎn)上執(zhí)行以下命令,啟動(dòng)集群。其過(guò)程就是先啟動(dòng)本機(jī)的jobmanager,然后ssh到各個(gè)slave節(jié)點(diǎn)上啟動(dòng)taskmanager。
[root@vm1 flink-1.1.2]# bin/start-cluster.sh
訪問http://vm1:8081,可以看到有2個(gè)taskmanager,和4個(gè)slot。
3.3.2 停止集群
在master節(jié)點(diǎn),即本例中的vm1節(jié)點(diǎn)上執(zhí)行以下命令,啟動(dòng)集群。其過(guò)程是先ssh到各個(gè)slave節(jié)點(diǎn)上停止taskmanager,再停止本機(jī)的jobmanager。
[root@vm1 flink-1.1.2]# bin/stop-cluster.sh
3.3.3 啟停集群中的一個(gè)節(jié)點(diǎn)
如果想要啟動(dòng)或者停止機(jī)器中的節(jié)點(diǎn),不論是jobmanager或者taskmanager,都可以在對(duì)應(yīng)的主機(jī)上執(zhí)行以下命令。
# 啟動(dòng)本機(jī)的jobmanager
bin/jobmanager.sh start
# 啟動(dòng)本機(jī)的taskmanager
bin/taskmanager.sh start
# 停止本機(jī)的taskmanager
bin/taskmanager.sh stop
# jobmanager
bin/jobmanager.sh stop
https://ci.apache.org/projects/flink/flink-docs-release-1.1/quickstart/setup_quickstart.html#cluster-setup
https://ci.apache.org/projects/flink/flink-docs-release-1.1/setup/cluster_setup.html
(完)