在Flink中一共有三种部署模式,分别为local,standalone和yarn模式,由于前两者主要是用于开发和测试,本文将不再赘述,企业中用的更多的是yarn模式,关于yarn模式下为什么比standalon模式要好主要有一下几个方面
1.资源按需使用,不会因为各自内置的调度争抢资源,在者类似于像spark,flink等框架他们的主要强大之处在于是计算,调度的话还是yarn是强项,从而可以提高集群的利用率。
2.对于yarn来说,任务有优先级,根据优先级运行作业。
3.基于Yarn调度系统可以自动化的处理各个角色的Failover(容错)(下面的三条前提是在你配置好flink on yarn的HA以后的事情)
* JobManger和TaskManager进程都由Yarn NodeMaganer监控
* 如果JobManager进程down掉,则Yarn ResourceManager会重新调度JobManager到其他的机器上。
* 如果TaskManager进程down掉,JobManager会受到消息并重新像Yarn ResourceManager申请资源,重新启动TaskManager。
首先我们来部署一下yarn集群(这里的集群指的是yarn集群,即你不需要在每台机器上都部署flink,一般在hadoop上的主节点上部署就可以了)模式。 注:本次部署采用的是flink1.12.0
1.hadoop集群的主节点上解压flink1.12的tar包,解压好将包的名字改为flink-yarn。
2.修改hadoop集群中的yarn-site.xml文件,将如下内容添加进去,因为对于flink使用yarn模式下,很容易造成内存超标,这个时候yarn会自动kill掉job,添加完以后记得分发到每台节点上
<!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property