Skip to main content

整体说明

任务类型

平台目前支持四种实时任务类型:

  • 实时采集

    实时采集可以实现不同数据源之间的数据已实时读取写入的方式互相同步

  • FlinkSQL

    FlinkSQL任务可以让开发人员在IDE页面通过SQL开发的方式,完成实时数据的分析计算。

  • Flink

    基于原生Flink Stream API的任务,通过jar包方式进行管理。

  • PyFlink

    基于原生Flink提供的Python API,可以让你在Flink框架下开发Python任务。

执行引擎

平台目前支持三个版本的Flink引擎:

  • Flink1.16(推荐)

    目前数栈6.0版本推荐与Flink1.16进行任务的开发,后续的更多功能将直接在1.16版本以及更高的版本上支持。

  • Flink1.12

    随着Flink发展的越来越成熟,我们也开始向Flink社区靠齐,包括Connector的定义和兼容、FlinkSQL逻辑等均在1.10的基础上做了改造。

  • Flink1.10

    因为在1.10版本里我们对Connector插件做了自己的定义,包括自研的FlinkStreamSQL。导致在1.10中开发的任务无法随着引擎的升级兼容享受更多功能,目前主要用于历史任务的执行。

调度支持

实时任务的调度资源支持on Yarn和on K8S两种方式。(在控制台模块配置)

  • On Yarn 方式相对来说更成熟,也是当前大部分企业生产环境应用的调度资源方案。

  • On K8S(1.21)方式目前正被越来越多的企业应用,而且其弹性伸缩的特点更符合实时计算这种受业务波动影响大、所需资源不稳定的场景。Flink on K8S还有更多其他优势,可以网上自行查询。

部署模式

实时任务的提交部署支持两种模式:Perjob模式、Session模式。(在控制台模块配置)

  • Perjob模式(推荐,默认)

    每个提交到YARN上的作业会各自形成单独的Flink集群,拥有专属的JobManager和TaskManager。可见,以Per-Job模式提交作业的启动延迟可能会较高,但是作业之间的资源完全隔离,一个作业的TaskManager失败不会影响其他作业的运行,JobManager的负载也是分散开来的,不存在单点问题。当作业运行完成,与它关联的集群也就被销毁,资源被释放。所以,Per-Job模式一般用来部署那些长时间运行的作业。

  • Session模式(仅调试作业)

    Session模式是预分配资源的,也就是提前根据指定的资源参数初始化一个Flink集群,并常驻在YARN系统中,拥有固定数量的JobManager和TaskManager(注意JobManager只有一个)。提交到这个集群的作业可以直接运行,免去每次分配资源的overhead。但是Session的资源总量有限,多个作业之间又不是隔离的,故可能会造成资源的争用;如果有一个TaskManager宕机,它上面承载着的所有作业也都会失败。另外,启动的作业越多,JobManager的负载也就越大。所以,Session模式一般用来部署那些对延迟非常敏感但运行时长较短的作业。