方式一:Local模式
后續補充......
方式二:Standalone cluster
后續補充......
方式三:Flink on Yarn
兩種部署方式比較:
第一種方式啟動命令的一些參數說明:
./bin/yarn-session.sh 命令用法:
必選: -n,--container <arg> 分配多少個yarn容器 (=taskmanager的數量)
可選:
-D <arg> 動態屬性
-d,--detached 獨立運行
-jm,--jobManagerMemory <arg> JobManager的內存 [in MB]
-nm,--name 在YARN上為一個自定義的應用設置一個名字
-q,--query 顯示yarn中可用的資源 (內存, cpu核數)
-qu,--queue <arg> 指定YARN隊列.
-s,--slots <arg> 每個TaskManager使用的slots數量
-tm,--taskManagerMemory <arg> 每個TaskManager的內存 [in MB]
-z,--zookeeperNamespace <arg> 針對HA模式在zookeeper上創建NameSpace
-id,--applicationId <yarnAppId> YARN集群上的任務id,附着到一個后台運行的yarn session中
第二種方式啟動命令的一些參數說明:
./bin/flink run 命令用法J:
run [OPTIONS] <jar-file> <arguments>
"run" 操作參數:
-c,--class <classname> 如果沒有在jar包中指定入口類,則需要在這里通過這個參數指定
-m,--jobmanager <host:port> 指定需要連接的jobmanager(主節點)地址,使用這個參數可以指定一個不同於配置文件中的jobmanager
-p,--parallelism <parallelism> 指定程序的並行度。可以覆蓋配置文件中的默認值。
默認查找當前yarn集群中已有的yarn-session信息中的jobmanager【/tmp/.yarn-properties-root】:
./bin/flink run ./examples/batch/WordCount.jar -input hdfs://hostname:port/hello.txt -output hdfs://hostname:port/result1
連接指定host和port的jobmanager:
./bin/flink run -m hadoop100:1234 ./examples/batch/WordCount.jar -input hdfs://hostname:port/hello.txt -output hdfs://hostname:port/result1
啟動一個新的yarn-session:
./bin/flink run -m yarn-cluster -yn 2 ./examples/batch/WordCount.jar -input hdfs://hostname:port/hello.txt -output hdfs://hostname:port/result1
注意:yarn session命令行的選項也可以使用./bin/flink 工具獲得。它們都有一個y或者yarn的前綴
例如:./bin/flink run -m yarn-cluster -yn 2 ./examples/batch/WordCount.jar
其他部署方式:Mesos;Docker;Kubernetes;AWS;Goole Compute Engine;MapR
HA:
本質也就是JobManager 高可用(HA),JobManager協調每個flink任務部署。它負責任務調度和資源管理。 默認情況下,每個flink集群只有一個JobManager,這將導致一個單點故障(SPOF):如果JobManager掛了,則不能提交新的任務,並且運行中的程序也會失敗。 使用JobManager HA,集群可以從JobManager故障中恢復,從而避免SPOF(單點故障) 。 用戶可以在standalone或 YARN集群 模式下,配置集群高可用。
JobManager HA配置:
1、Standalone集群的高可用
Standalone模式(獨立模式)下JobManager的高可用性的基本思想是,任何時候都有一個 Master JobManager ,並且多個Standby JobManagers 。 Standby JobManagers可以在Master JobManager 掛掉的情況下接管集群成為Master JobManager。 這樣保證了沒有單點故障,一旦某一個Standby JobManager接管集群,程序就可以繼續運行。 Standby JobManager和Master JobManager實例之間沒有明確區別。 每個JobManager都可以成為Master或Standby節點。
2、Yarn 集群高可用
flink on yarn的HA 其實主要是利用yarn自己的job恢復機制。