flink教程-详解flink 1.11中的新部署模式-Application模式

本文深入探讨了Flink的Application模式,对比了session和perjob模式,详细解析了Application模式如何解决perjob模式的局限性,特别是在大规模部署场景下。介绍了如何通过API提交任务,并分析了Application模式的源码流程,包括集群部署、任务提交和执行过程。

背景

目前对于flink来说,生产环境一般有两个部署模式,一个是 session模式,一个是per job模式。

session模式

这种模式会预先在yarn或者或者k8s上启动一个flink集群,然后将任务提交到这个集群上,这种模式,集群中的任务使用相同的资源,如果某一个任务出现了问题导致整个集群挂掉,那就得重启集群中的所有任务,这样就会给集群造成很大的负面影响。

per job模式

考虑到集群的资源隔离情况,一般生产上的任务都会选择per job模式,也就是每个任务启动一个flink集群,各个集群之间独立运行,互不影响,且每个集群可以设置独立的配置。

per job模式的问题

目前,对于per job模式,jar包的解析、生成JobGraph是在客户端上执行的,然后将生成的jobgraph提交到集群。很多公司都会有自己的实时计算平台,用户可以使用这些平台提交flink任务,如果任务特别多的话,那么这些生成JobGraph、提交到集群的操作都会在实时平台所在的机器上执行,那么将会给服务器造成很大的压力。

此外这种模式提交任务的时候会把本地flink的所有jar包先上传到hdfs上相应 的临时目录,这个也会带来大量的网络的开销,所以如果任务特别多的情况下,平台的吞吐量将会直线下降。

引入application模式

所以针对flink per job模式的一些问题,flink 引入了一个新的部署模式–Application模式。 目前 Application 模式支持 Yarn 和 K8s 的部署方式,Yarn Application 模式会在客户端将运行任务需要的依赖都上传到 Flink Master,然后在 Master 端进行任务的提交。

此外,还支持远程的用户jar包来提交任务,比如可以将jar放到hdfs上,进一步减少上传jar所需的时间,从而减少部署作业的时间。

具体的使用命令是:

/bin/flink run-application -p 1 -t yarn-application \
-yD yarn.provided.lib.dirs="hdfs://localhost/flink/libs" \
hdfs://localhost/user-jars/HelloWold.jar

通过程序提交任务

当我们要做一个实时计算平台的时候,会需要通过程序来提交任务到集群,这时候需要我们自己封装一套API来实现提交flink任务到集群,目前主要的生产环境还是以yarn居多,所以我们今天讲讲怎么通过api的方式把一个任务以application的方法提交到yarn集群。

  • 引入相关的配置到classpath里
    core-site.xml
    hdfs-site.xml
    yarn-site.xml

  • 定义相关的配置参数

		//flink的本地配置目录,为了得到flink的配置
		String configurationDirectory = "/Users/user/work/flink/conf/";
		//存放flink集群相关的jar包目录
		String fl
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值