基于flink任务指标监控实现任务资源弹性伸缩系统及方法技术方案

技术编号:35555062 阅读:19 留言:0更新日期:2022-11-12 15:36
本发明专利技术公开了一种基于flink任务指标监控实现任务资源弹性伸缩系统及方法,所述系统包括内存指标纵向伸缩模块和算子反压横向伸缩模块;所述内存指标纵向伸缩模块通过计算内存使用占比判定是否需要调整内存,若为否则不做处理,若为是则停止任务,修改任务内存,再启动任务,若启动成功则扩缩容成功;所述算子反压横向伸缩模块计算内存使用占比的同时通过计算任务反压情况判定是否调整并发,若为否则不做处理,若为是则停止任务,修改任务内存,再启动任务,若启动成功则扩缩容成功,本发明专利技术能够实现对任务资源的横向和纵向弹性伸缩。实现对任务资源的横向和纵向弹性伸缩。实现对任务资源的横向和纵向弹性伸缩。

【技术实现步骤摘要】
基于flink任务指标监控实现任务资源弹性伸缩系统及方法


[0001]本专利技术涉及计算机、网络通信技术及大数据处理领域,具体涉一种基于flink任务指标监控实现任务资源弹性伸缩系统及方法。

技术介绍

[0002]近年来,企业数据对数据不再满足离线数据,越来越多的业务场景需要用到实时计算来满足;实时计算已经成为数据中台中必不可缺少的一部分。其中Apcahe Flink是当下最为热门的实时计算平台;Apache Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台,提供支持流处理和批处理两种类型应用的功能。它能够为业务开发人员屏蔽大数据底层复杂的分布式计算编程框架,提供SQL的方言并且对于负责的任务还可通过Scala和Java的API去实现。同时Flink通过Gelly支持了图操作,还有机器学习的FlinkML,以及集成hudi或者iceberg实时数据入湖。
[0003]Flink特点:现有的开源计算方案,会把流处理和批处理作为两种不同的应用类型:流处理一般需要支持低延迟、Exactly

once保证,而批处理需要支持高吞吐、高效处理。Flink是完全支持流处理,也就是说作为流处理看待时输入数据流是无界的;批处理被作为一种特殊的流处理,只是它的输入数据流被定义为有界的。
[0004]Flink除了能处理消息队列中的流式数据,还可以将关系型数据中的数据通过CDC的方式将关系数据库作为流处理。同时也支持自定义的开发支持各种各样的数据源。
[0005]Flink是一个分布式系统,需要计算资源才能执行应用程序;部署的方式也是支持多样化,本身可以搭建分布式计算集群,并且支持与所有常见的集权资源管理器(如Hadoop YARN,Mesos和Kubernetes)集成;Flink旨在与前面列出的每个资源管理器兼容。这是通过特定于资源管理器的部署模式实现的,该模式允许Flink惯用方式与每个资源管理器进行交互。部署Flink应用程序时,Flink会根据应用程序配置的并行性自动识别所需的资源,并向资源管理器请求它们。如果发生故障,Flink会通过请求新资源来替换发生故障的容器。提交或控制应用程序的所有通信均通过REST调用进行。简化了Flink在许多环境中的集成。
[0006]Flink 通过 Task Slots 来定义执行资源。每个 TaskManager 有一到多个 task slot,每个 task slot 可以运行一条由多个并行 task 组成的流水线。 这样一条流水线由多个连续的 task 组成,比如并行度为 n 的 MapFunction 和 并行度为 n 的 ReduceFunction。需要注意的是 Flink 经常并发执行连续的 task,不仅在流式作业中到处都是,在批量作业中也很常见。
[0007]Apache Flink 中,可以通过手动停止 Job,然后从停止时创建的 Savepoint 恢复,最后重新指定并行度的方式来重新扩缩容 Job。Flink 自动调整并行度的选项。
[0008]Reactive 模式:在 Reactive 模式下,Job 会使用集群中所有的资源。当增加 TaskManager 时,Job 会自动扩容。当删除时,就会自动缩容。Flink 会管理 Job 的并行度,始终会尽可能地使用最大值。当发生扩缩容时,Job 会被重启,并且会从最新的 Checkpoint 中恢复。这就意味着不需要花费额外的开销去创建 Savepoint。当然,所需要
重新处理的数据量取决于 Checkpoint 的间隔时长,而恢复的时间取决于状态的大小。借助 Reactive 模式,Flink 用户可以通过一些外部的监控服务产生的指标,例如:消费延迟、CPU 利用率汇总、吞吐量、延迟等,实现一个强大的自动扩缩容机制。当上述的这些指标超出或者低于一定的阈值时,增加或者减少 TaskManager 的数量。在 Kubernetes 中,可以通过改变 Deployment 的副本数(Replica Factor) 实现。而在 AWS 中,可以通过改变 Auto Scaling 组 来实现。这类外部服务只需要负责资源的分配以及回收,而 Flink 则负责在这些资源上运行 Job。
[0009]局限性:仅支持 Standalone 部署模式。其他主动的部署模式实现(例如:原生的 Kubernetes 以及 YARN)都明确不支持。Session 模式也同样不支持。仅支持单 Job 的部署。
[0010]Adaptive调度器:Adaptive 调度器可以基于现有的 Slot 调整 Job 的并行度。它会在 Slot 数目不足时,自动减少并行度。这种情况包括在提交时资源不够,或者在 Job 运行时 TaskManager 不可用。当有新的 Slot 加入时,Job 将会自动扩容至配置的并行度。 在 Reactive 模式下(详见上文),并行度配置会被忽略,即无限大,使得 Job 尽可能地使用资源。 你也可以不使用 Reactive 模式而仅使用 Adaptive 调度器。
[0011]局限性:只支持流式 Job:Adaptive 调度器的第一个版本仅支持流式 Job。当提交的是一个批处理 Job 时,会自动换回默认调度器。
[0012]不支持本地恢复:本地恢复是将 Task 调度到状态尽可能的被重用的机器上的功能。不支持这个功能意味着 Adaptive 调度器需要每次从 Checkpoint 的存储中下载整个 State。
[0013]不支持部分故障恢复: 部分故障恢复意味着调度器可以只重启失败 Job 其中某一部分(在 Flink 的内部结构中被称之为 Region)而不是重启整个 Job。这个限制只会影响那些独立并行(Embarrassingly Parallel)Job的恢复时长,默认的调度器可以重启失败的部分,然而 Adaptive 将需要重启整个 Job。
[0014]与 Flink Web UI 的集成受限: Adaptive 调度器会在 Job 的生命周期中改变它的并行度。Web UI 上只显示 Job 当前的并行度。
[0015]Job 的指标受限: 除了 numRestarts 外,Job作用域下所有的可用性和 Checkpoint 指标都不准确。
[0016]空闲 Slot: 如果 Slot 共享组的最大并行度不相等,提供给 Adaptive 调度器所使用的的 Slot 可能不会被使用。
[0017]扩缩容事件会触发 Job 和 Task 重启,Task重试的次数也会增加。
[0018]综上,Flink的强大的特性已经成为数据中台优先考虑采用的实时计算引擎,并且也支持多种资源调度;但是本身都存在缺陷,无法在生产环境中使用,且只能做到横向的调整并发度来实现对资源的伸缩,无法做到纵向对Task 内存使用的伸缩。
[0019]目前已有的弹性伸缩的方案中;Reactive本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于flink任务指标监控实现任务资源弹性伸缩系统,其特征在于,所述系统包括内存指标纵向伸缩模块和算子反压横向伸缩模块;所述内存指标纵向伸缩模块通过计算内存使用占比判定是否需要调整内存,若为否则不做处理,若为是则停止任务,修改任务内存,再启动任务,若启动成功则扩缩容成功;所述算子反压横向伸缩模块计算内存使用占比的同时通过计算任务反压情况判定是否调整并发,若为否则不做处理,若为是则停止任务,修改任务内存,再启动任务,若启动成功则扩缩容成功。2.根据权利要求1所述的一种基于flink任务指标监控实现任务资源弹性伸缩系统,其特征在于,所述内存指标纵向伸缩模块每分钟采集flink任务taskmanager的内存使用情况,所述内存包含JVM Heap、Off

Heap Memory、JVM Metaspace和JVM Overheap。3.根据权利要求1或2所述的一种基于flink任务指标监控实现任务资源弹性伸缩系统,其特征在于,所述算子反压横向伸缩模块采集flink任务每个算子的反压;其中,反压等级如下:(1)OK:0% <= 反压占比 <= 10%,(2)LOW:10% < 反压占比 <= 50%,(3)HIGH:50% < 反压占比 <= 100%。4.根据权利要求3所述的一种基于flink任务指标监控实现任务资源弹性伸缩系统,其特征在于,所述内存指标纵向伸缩模块通过采集到的指标计算最近n次taskmanager堆内存的使用情况来减少或者增减内存;占比小于30%降低内存,占比超过80%增加内存;所述调整内存配置具体为调整任务taskmanager的内存配置;调整内存的范围是大于等于1G内存且小于等于集群单个服务器最大内存。5.根据权利要求4所述的一种基于flink任务指标监控实现任务资源弹性伸缩系统,其特征在于,所述算子反压横向伸缩模块通过计算采集flink任务每个算子计算最近n次反压指标为HIGH的情况;所述调整并发具体为调整任务taskmanager的solt的个数与任务并发数。6.一种基于flink任务指标监控实现任务资源弹性伸缩方法,其特征在于,所述方法包括如下步骤:S1. 同过监控任务采集flink任务指标,所述flink任务指标包括内存运行指标和任务反压指标;S2A.内存指标纵向伸缩模块根据内存运行指标计算内存使用占...

【专利技术属性】
技术研发人员:徐志钢
申请(专利权)人:杭州比智科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1