目录
一、部署模式
1. 部署模式分类:
 
-  会话模式(Session Mode) 
-  单作业模式(Per-Job Mode)(1.15版本已弃用) 
-  应用模式(Application Mode) 
他们三者的主要区别是集群的生命周期以及资源的分配方式不同以及程序执行的位置不同
1.1 会话模式(Session Mode):
优点:
集群启动时就已经创建了会话,资源也都是集群启动过程中确定的
所有提交的作业都在这个会话中,作业结束就释放资源
缺点:
由于资源是共享的,所以当作业较多时就会产生资源竞争,资源不够了会导致作业提交失败
同一个TaskManager上可能运行了很多作业,如果一个作业导致TaskManager宕机,那么在这个TaskManager上的作业都会受到影响
1.2 单作业模式(Per-Job Mode):
优点: 
为每一个作业启动一个集群,因此不会存在共享资源的问题,作业之间的资源相互隔离  发生故障时即使TaskManager宕机不会影响其他作业 
缺点: 
每一个作业启动一个集群,比较浪费资源  Flink本身无法直接这样运行,需要借助第三方资源管理器,比如YARN、K8S等  Flink1.15版本被标记为废弃,使用应用模式替代;链接:
1.3 应用模式(Application Mode):
2. 独立部署:
-  Flink Standalone 
2.1 概念:
-  独立部署由Flink进行资源的管理,也是最简单的部署方式,此模式是独立运行的,不依赖第三方资源管理平台,缺点是资源不足的情况下会出现故障,不会自动扩展或者动态分配资源,必须手动处理。 
-  独立部署也分上面三种部署方式,分别是会话模式、单作业模式还是应用模式。生产环境不建议使用。 
2.2 部署在会话模式下:
 
-  会话模式是不依赖第三方资源调度管理平台,因此直接解压flink安装包,然后执行start-cluster.sh 即可开启会话模式 
2.3 部署在单作业模式下:【Pass】
 
-  Flink 本身无法直接以单作业方式启动集群,一般需要借助一些资 
-  源管理平台。所以 Flink 的独立(Standalone)集群并不支持单作业模式部署。 
2.4 部署在应用模式下:
 
-  应用模式的特点是不提前创建集群,所以不能使用start-cluster.sh进行启动,可以通过使用standalone-job.sh 这个启动命令来启动JobManager bin/standalone-job.sh start --job-classname com.xxx.xxx.WordCount 
-  通过taskmanager.sh 启动TaskManager bin/taskmanager.sh start 
2.5 部署在高可用模式下:
 
.
3. YARN部署:
-  Flink on yarn --> hadoop必须要配置好 
3.1 概念:
-  YARN部署是指Flink的资源调度由YARN进行管理,需要依赖Hadoop的YARN管理器 在YARN模式下部署模式也分三种,分别是会话模式、单作业模式还是应用模式 
-  客户端把 Flink 应用提交给 Yarn 的 ResourceManager,Yarn 的 ResourceManager 会向 Yarn 的 NodeManager 申请容器。 在这些容器上, Flink 会部署JobManager 和 TaskManager 的实例,从而启动集群。 Flink 会根据运行在 JobManger 上的作业所需要的 Slot 数量动态分配 TaskManager 资源 .  
3.2 部署在会话模式下:
 
-  需要先申请一个YARN会话来启动Flink集群 # -nm test的意思是任务名 bin/yarn-session.sh -nm test 其他参数说明: 
-  YARN会话启动后会给出一个WebUI地址以及一个 YARN application ID 。 在部署作业的时候可以通过WebUI部署也可以通过后台命令行部署 。 
3.3 部署在单作业模式下:
 
-  单作业模式是每提交一个任务就会生成单独的一个集群环境,因此我们开启单作业模式直接通过提交任务即可 -  启动作业: bin/flink run -d -t yarn-per-job -c com.szc.wc.StreamWordCount xxx.jar 
-  查看作业: # 查看作业 bin/flink list -t yarn-per-job -Dyarn.application.id=application_XXXX_YY 
-  取消作业: # 取消作业 bin/flink cancel -t yarn-per-job -Dyarn.application.id=application_XXXX_YY <jobId> 
 
-  
-  由于单作业模式是每个任务一个集群,因此取消某个作业就会使这个作业对应的集群也停掉。 
3.4 部署在应用模式下:
 
-  应用模式和单作业模式类似 -  启动作业: bin/flink run-application -t yarn-application -c com.szc.wc.StreamWordCount xxx.jar 
-  查看作业: # 查看作业 bin/flink list -t yarn-application -Dyarn.application.id=application_XXXX_YY 
-  取消作业: # 取消作业 bin/flink cancel -t yarn-application -Dyarn.application.id=application_XXXX_YY <jobId> 
 
-  
3.5 部署在高可用模式下:
 
-  YARN 模式的高可用和独立模式(Standalone)的高可用原理不一样。 
-  Standalone 模式中, 同时启动多个 JobManager, 一个为“领导者”(leader),其他为“后备”(standby) , 当 leader 挂了, 其他的才会有一个成为 leader。 
-  而 YARN 的高可用是只启动一个 Jobmanager, 当这个 Jobmanager 挂了之后, YARN 会再次启动一个, 所以其实是利用的 YARN 的重试次数来实现的高可用。 










