CN115328667A - 基于flink任务指标监控实现任务资源弹性伸缩系统及方法 - Google Patents
基于flink任务指标监控实现任务资源弹性伸缩系统及方法 Download PDFInfo
- Publication number
- CN115328667A CN115328667A CN202211270756.9A CN202211270756A CN115328667A CN 115328667 A CN115328667 A CN 115328667A CN 202211270756 A CN202211270756 A CN 202211270756A CN 115328667 A CN115328667 A CN 115328667A
- Authority
- CN
- China
- Prior art keywords
- memory
- task
- back pressure
- index
- flink
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 49
- 238000012544 monitoring process Methods 0.000 title claims abstract description 28
- 230000015654 memory Effects 0.000 claims abstract description 204
- 230000008602 contraction Effects 0.000 claims abstract description 7
- 230000008569 process Effects 0.000 claims description 31
- 238000004364 calculation method Methods 0.000 claims description 20
- 150000003839 salts Chemical class 0.000 claims description 5
- 238000012545 processing Methods 0.000 description 12
- 230000003044 adaptive effect Effects 0.000 description 9
- 238000011084 recovery Methods 0.000 description 6
- 230000010354 integration Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 3
- 230000004075 alteration Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000013341 scale-up Methods 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000010923 batch production Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- ZLIBICFPKPWGIZ-UHFFFAOYSA-N pyrimethanil Chemical compound CC1=CC(C)=NC(NC=2C=CC=CC=2)=N1 ZLIBICFPKPWGIZ-UHFFFAOYSA-N 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于flink任务指标监控实现任务资源弹性伸缩系统及方法,所述系统包括内存指标纵向伸缩模块和算子反压横向伸缩模块;所述内存指标纵向伸缩模块通过计算内存使用占比判定是否需要调整内存,若为否则不做处理,若为是则停止任务,修改任务内存,再启动任务,若启动成功则扩缩容成功;所述算子反压横向伸缩模块计算内存使用占比的同时通过计算任务反压情况判定是否调整并发,若为否则不做处理,若为是则停止任务,修改任务内存,再启动任务,若启动成功则扩缩容成功,本发明能够实现对任务资源的横向和纵向弹性伸缩。
Description
技术领域
本发明涉及计算机、网络通信技术及大数据处理领域,具体涉一种基于flink任务指标监控实现任务资源弹性伸缩系统及方法。
背景技术
近年来,企业数据对数据不再满足离线数据,越来越多的业务场景需要用到实时计算来满足;实时计算已经成为数据中台中必不可缺少的一部分。其中Apcahe Flink是当下最为热门的实时计算平台;Apache Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台,提供支持流处理和批处理两种类型应用的功能。它能够为业务开发人员屏蔽大数据底层复杂的分布式计算编程框架,提供SQL的方言并且对于负责的任务还可通过Scala和Java的API去实现。同时Flink通过Gelly支持了图操作,还有机器学习的FlinkML,以及集成hudi或者iceberg实时数据入湖。
Flink特点:现有的开源计算方案,会把流处理和批处理作为两种不同的应用类型:流处理一般需要支持低延迟、Exactly-once保证,而批处理需要支持高吞吐、高效处理。Flink是完全支持流处理,也就是说作为流处理看待时输入数据流是无界的;批处理被作为一种特殊的流处理,只是它的输入数据流被定义为有界的。
Flink除了能处理消息队列中的流式数据,还可以将关系型数据中的数据通过CDC的方式将关系数据库作为流处理。同时也支持自定义的开发支持各种各样的数据源。
Flink是一个分布式系统,需要计算资源才能执行应用程序;部署的方式也是支持多样化,本身可以搭建分布式计算集群,并且支持与所有常见的集权资源管理器(如HadoopYARN,Mesos和Kubernetes)集成;Flink旨在与前面列出的每个资源管理器兼容。这是通过特定于资源管理器的部署模式实现的,该模式允许Flink惯用方式与每个资源管理器进行交互。部署Flink应用程序时,Flink会根据应用程序配置的并行性自动识别所需的资源,并向资源管理器请求它们。如果发生故障,Flink会通过请求新资源来替换发生故障的容器。提交或控制应用程序的所有通信均通过REST调用进行。简化了Flink在许多环境中的集成。
Flink 通过 Task Slots 来定义执行资源。每个 TaskManager 有一到多个 taskslot,每个 task slot 可以运行一条由多个并行 task 组成的流水线。 这样一条流水线由多个连续的 task 组成,比如并行度为 n 的 MapFunction 和 并行度为 n 的ReduceFunction。需要注意的是 Flink 经常并发执行连续的 task,不仅在流式作业中到处都是,在批量作业中也很常见。
Apache Flink 中,可以通过手动停止 Job,然后从停止时创建的 Savepoint 恢复,最后重新指定并行度的方式来重新扩缩容 Job。Flink 自动调整并行度的选项。
Reactive 模式:在 Reactive 模式下,Job 会使用集群中所有的资源。当增加TaskManager 时,Job 会自动扩容。当删除时,就会自动缩容。Flink 会管理 Job 的并行度,始终会尽可能地使用最大值。当发生扩缩容时,Job 会被重启,并且会从最新的Checkpoint 中恢复。这就意味着不需要花费额外的开销去创建 Savepoint。当然,所需要重新处理的数据量取决于 Checkpoint 的间隔时长,而恢复的时间取决于状态的大小。借助 Reactive 模式,Flink 用户可以通过一些外部的监控服务产生的指标,例如:消费延迟、CPU 利用率汇总、吞吐量、延迟等,实现一个强大的自动扩缩容机制。当上述的这些指标超出或者低于一定的阈值时,增加或者减少 TaskManager 的数量。在 Kubernetes 中,可以通过改变 Deployment 的副本数(Replica Factor) 实现。而在 AWS 中,可以通过改变Auto Scaling 组 来实现。这类外部服务只需要负责资源的分配以及回收,而 Flink 则负责在这些资源上运行 Job。
局限性:仅支持 Standalone 部署模式。其他主动的部署模式实现(例如:原生的Kubernetes 以及 YARN)都明确不支持。Session 模式也同样不支持。仅支持单 Job 的部署。
Adaptive调度器:Adaptive 调度器可以基于现有的 Slot 调整 Job 的并行度。它会在 Slot 数目不足时,自动减少并行度。这种情况包括在提交时资源不够,或者在 Job运行时 TaskManager 不可用。当有新的 Slot 加入时,Job 将会自动扩容至配置的并行度。 在 Reactive 模式下(详见上文),并行度配置会被忽略,即无限大,使得 Job 尽可能地使用资源。 你也可以不使用 Reactive 模式而仅使用 Adaptive 调度器。
局限性:只支持流式 Job:Adaptive 调度器的第一个版本仅支持流式 Job。当提交的是一个批处理 Job 时,会自动换回默认调度器。
不支持本地恢复:本地恢复是将 Task 调度到状态尽可能的被重用的机器上的功能。不支持这个功能意味着 Adaptive 调度器需要每次从 Checkpoint 的存储中下载整个State。
不支持部分故障恢复: 部分故障恢复意味着调度器可以只重启失败 Job 其中某一部分(在 Flink 的内部结构中被称之为 Region)而不是重启整个 Job。这个限制只会影响那些独立并行(Embarrassingly Parallel)Job的恢复时长,默认的调度器可以重启失败的部分,然而 Adaptive 将需要重启整个 Job。
与 Flink Web UI 的集成受限: Adaptive 调度器会在 Job 的生命周期中改变它的并行度。Web UI 上只显示 Job 当前的并行度。
Job 的指标受限: 除了 numRestarts 外,Job作用域下所有的可用性和Checkpoint 指标都不准确。
空闲 Slot: 如果 Slot 共享组的最大并行度不相等,提供给 Adaptive 调度器所使用的的 Slot 可能不会被使用。
扩缩容事件会触发 Job 和 Task 重启,Task重试的次数也会增加。
综上,Flink的强大的特性已经成为数据中台优先考虑采用的实时计算引擎,并且也支持多种资源调度;但是本身都存在缺陷,无法在生产环境中使用,且只能做到横向的调整并发度来实现对资源的伸缩,无法做到纵向对Task 内存使用的伸缩。
目前已有的弹性伸缩的方案中;Reactive 模式仅支持 Standalone 部署模式,Adaptive调度器的局限1)只支持流式job,2)不支持本地恢复,3)不支持部分故障恢复,4)与FlinkWeb UI的集成受限,5)job 的指标受限,6)空闲 Slot;这两种方案的局限性导致目前无法使用在生产环境中;只能通过经验来设置任务的并行度以及任务所使用的内存。本发明是通过采集任务运行时的内存指标与task反压指标,通过外部启停任务来达到对任务资源伸缩的目的。
发明内容
针对现有技术存在的问题,本发明的目的在于提供一种基于flink任务指标监控实现任务资源弹性伸缩系统及方法,用于解决上述存在的问题,实现对任务资源的横向和纵向弹性伸缩。
为实现上述目的,本发明提供一种基于flink任务指标监控实现任务资源弹性伸缩系统,所述系统包括内存指标纵向伸缩模块和算子反压横向伸缩模块;所述内存指标纵向伸缩模块通过计算内存使用占比判定是否需要调整内存,若为否则不做处理,若为是则停止任务,修改任务内存,再启动任务,若启动成功则扩缩容成功;所述算子反压横向伸缩模块计算内存使用占比的同时通过计算任务反压情况判定是否调整并发,若为否则不做处理,若为是则停止任务,修改任务内存,再启动任务,若启动成功则扩缩容成功。
进一步,所述内存指标纵向伸缩模块每分钟采集flink任务taskmanager的内存使用情况,所述内存包含JVM Heap、Off-Heap Memory、JVM Metaspace和JVM Overheap。
进一步,所述算子反压横向伸缩模块采集flink任务每个算子的反压;其中,反压等级如下:(1)OK:0% <= 反压占比 <= 10%,(2)LOW:10% < 反压占比 <= 50%,(3)HIGH:50%< 反压占比 <= 100%。
进一步,所述内存指标纵向伸缩模块通过采集到的指标计算最近n次taskmanager堆内存的使用情况来减少或者增减内存;占比小于30%降低内存,占比超过80%增加内存;所述调整内存配置具体为调整任务taskmanager的内存配置;调整内存的范围是大于等于1G内存且小于等于集群单个服务器最大内存。
进一步,所述算子反压横向伸缩模块通过计算采集flink任务每个算子计算最近n次反压指标为HIGH的情况;所述调整并发具体为调整任务taskmanager的solt的个数与任务并发数。
另一方面,本发明提供一种基于flink任务指标监控实现任务资源弹性伸缩方法,所述方法包括如下步骤:
S1. 同过监控任务采集flink任务指标,所述flink任务指标包括内存运行指标和任务反压指标;
S2A.内存指标纵向伸缩模块根据内存运行指标计算内存使用占比,判定是否调整内存,若为否,不做处理,若为是,调整内存配置,然后进入步骤S3;
S2B.与步骤S2A并行,算子反压横向伸缩模块根据任务反压指标计算任务反压情况,判定是否调整并发,若为否,不做处理,若为是,调整并发,然后进入步骤S3;
S3.停止任务并保存任务savepoint;
S4.重新启动任务,启动成功则提示扩缩容成功,重启3次失败则提示告警。
进一步,步骤S2A中,根据内存运行指标计算内存使用占比的步骤如下:
S201. 根据最近N次内存使用占比;
内存使用占比=(堆内存使用内存1+堆内存使用内存2+.....+堆内存使用内存N+元空间使用内存1+元空间使用内存2+....+元空间使用内存N)/((堆内存+元空间)×N)
S202.计算调整后的新内存;
在占比小于30%的情况下,调整后的新内存计算公式为:
新内存= 总进程内存-总进程内存×内存使用占比-总进程内存×0.3;
在占比大于80%的情况下,新内存计算公式为:
新内存= 总进程内存+总进程内存-总进程内存×内存使用占比。
所述调整内存配置具体为调整任务taskmanager的内存配置;调整内存的范围是大于等于1G内存且小于等于集群单个服务器最大内存。
进一步,步骤S2B中,通过计算采集flink任务每个算子计算最近n次反压指标为HIGH的情况;所述调整并发具体为调整任务taskmanager的solt的个数与任务并发数。
计算任务反压情况,调整并发的具体步骤如下:
S203.首先计算反压指标平均值,计算公式如下:
反压指标平均值=(反压占比1+反压占比2+.......+反压占比N)/N
S204.根据计算结果判断反压指标平均值所处等级,根据所处等级确定调整策略,计算公式为:
并发=当前并发+当前并发×反压指标平均值。
本发明提出基于flink任务指标监控实现任务资源弹性伸缩方案,以不侵入Flink计算引擎与部署方式实现了能够横向的到达资源弹性的伸缩,也能纵向的达到资源弹性伸缩。
附图说明
图 1 为根据本发明实施例的一种基于flink任务指标监控实现任务资源弹性伸缩系统及方法的流程图;
图 2 为根据本发明实施例的一种基于flink任务指标监控实现任务资源弹性伸缩系统及方法中内存模型结构图。
具体实施方式
下面将结合附图,对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
以下结合图1、图2对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
图1为本发明的技术方案基于flink任务指标监控实现任务资源弹性伸缩系统及方法的设计流程图。本方案通过每分钟采集flink任务taskmanager的内存使用情况以及同时采集flink任务每个算子的反压,其中内存使用情况包含JVM Heap、Off-Heap Memory、JVM Metaspace和JVM Overheap内存,如图2taskmanager内存模型;其中,
Total Process Memory:总进程内存
Total Flink Memory:总flink内存
JVM Heap:堆内存
Framework Heap:框架堆内存
Tak Heap:任务堆内存
Off-heap Memory:堆外内存
Managed Memory:托管内存
Direct Memory:直接内存
Framework Off-Heap:任务堆外内存
Task Off-Heap:框架堆外内存
Network:网络内存
JVM Metaspace:元空间内存
采集flink任务每个算子的反压(反压等级:(1)OK:0% <= 反压占比<= 10%,(2)LOW:10% < 反压占比<= 50%,(3)HIGH:50% < 反压占比<= 100%)。任务资源弹性伸缩系统包括内存指标纵向伸缩模块和算子反压横向伸缩模块;所述内存指标纵向伸缩模块通过计算内存使用占比判定是否调整内存,若为否则不做处理,若为是则停止任务,修改任务内存,再启动任务,若启动成功则扩缩容成功;所述算子反压横向伸缩模块计算内存使用占比的同时通过计算任务反压情况判定是否调整并发,若为否则不做处理,若为是则停止任务,修改任务内存,再启动任务,若启动成功则扩缩容成功。
所述任务资源弹性伸缩流程包括以下步骤:
S1. 同过监控任务采集flink任务指标,所述flink任务指标包括内存运行指标和任务反压指标;
S2A.内存指标纵向伸缩模块根据内存运行指标计算内存使用占比,判定是否调整内存,若为否,不做处理,若为是,调整内存配置,然后进入步骤S3;
S2B.与步骤S2A并行,算子反压横向伸缩模块根据任务反压指标计算任务反压情况,判定是否调整并发,若为否,不做处理,若为是,调整并发,然后进入步骤S3;
S3.停止任务并保存任务savepoint;其中savepoint:保存点(savepoint)是事务过程中的一个逻辑点,用于取消部分事务,当结束事务时,会自动的删除该事务中所定义的所有保存点。当执行rollback时,通过指定保存点可以回退到指定的点。
S4.重新启动任务,启动成功则提示扩缩容成功,重启3次失败则提示告警。
其中,步骤S2A中,通过采集到的指标计算最近n次(几次可以调整,指标每分钟获取一次)taskmanager堆内存的使用情况来降低或者增加内存;占比小于30%降低内存,占比超过80%增加内存;所述调整内存配置具体为调整任务taskmanager的内存配置;调整内存的范围是大于等于1G内存且小于等于集群单个服务器最大内存;n次的优选范围分别是5,10,15,30;采集的具体指标;
示例:任务配置了4096MB(单位:兆)
在一个实施例中,各个内存分配如下表格:
采集样例数据如下表所示:
其中,步骤S2A中,根据内存运行指标计算内存使用占比的步骤如下:
S201. 根据最近N次内存使用占比(当采集到的托管内存全是0MB,在计算的过程中应将托管总内存排除在外)
内存使用占比=(堆内存使用内存1+堆内存使用内存2+.....+堆内存使用内存N+元空间使用内存1+元空间使用内存2+....+元空间使用内存N)/((堆内存+元空间)×N)在本实施例中,共采样30次,根据最近30次内存使用占比,
内存使用占比=(堆内存使用内存1+堆内存使用内存2+.....+堆内存使用内存30+元空间使用内存1+元空间使用内存2+....+元空间使用内存30)/((堆内存+元空间)×30),由此计算出内存使用占比=11019/55290=0.19929,即占比为19.929%,小于30%。
S202.计算调整后的新内存;在占比小于30%的情况下,新内存计算公式为:
新内存= 总进程内存-总进程内存×内存使用占比-总进程内存×0.3;
本实施例中,新内存=4096-4096*19.929%-4096*0.3=2050.91;
在占比大于80%的情况下,新内存计算公式为:
新内存= 总进程内存+总进程内存-总进程内存×内存使用占比。
其中,步骤S2B中,通过计算采集flink任务每个算子计算最近n次反压指标为HIGH的情况;所述调整并发具体为调整任务taskmanager的solt的个数与任务并发数。
在一个具体实施例中,根据反压占比(Ratio(占比))对反压状态的阈值设定如下:
OK级: 0 <= Ratio(占比) <= 0.10
LOW级: 0.10 < Ratio(占比) <= 0.5
HIGH级: 0.5 < Ratio(占比) <= 1
采集样例数据如下表所示:
计算任务反压情况,调整并发的具体步骤如下:
S203.首先计算反压指标平均值,计算公式如下:
反压指标平均值=(反压占比1+反压占比2+.......+反压占比N)/N
在本实施例中,反压指标平均值=(反压占比1+反压占比2+.......+反压占比30)/30=0.7647
S204.根据计算结果判断反压指标平均值所处等级,根据所处等级确定调整策略。在本实施例中,可知反压指标平均值处于HIGH级,所以此时
新并发=当前并发+当前并发×反压指标平均值[向下取整]
本实施例中,当前并发为3,新并发=3+3×0.7647=5.2941,向下取整为5,因此新并发的数值为5。
本发明提出基于flink任务指标监控实现任务资源弹性伸缩方案,能够横向的达到资源弹性的伸缩,也能纵向的达到资源弹性伸缩。
横向伸缩:能够对cpu与内存使用提高,当数据积压时提升并发能力以增加计算能力。
纵向伸缩:在并发不变的情况下,在内存占用长时间使用率大于80%增加资源避免数据积压降低数据的延迟,在内存长时间使用率小于30%减少资源能有效的降低空闲资源占用。
本发明有三大关键点:1)本发明通过对任务的积压监控达到对任务资源横向的弹性伸缩,2)通过监听任务的资源占用达到纵向的资源伸缩,3)本方案通过自研系统对任务的运行指标统一采集以及通过自研系统计算根据采集的指标计算来调整任务资源,因此不用侵入Flink计算引擎与部署方式,通过采集任务运行中内存的使用情况判断任务资源占用情况,根据采集的指标计算出结果,先调整任务占用资源然后通过框架提供的启停功能来达到资源伸缩的效果。
在本说明书的描述中,参考术语“实施例”、“示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。此外,本领域的技术人员可以在不产生矛盾的情况下,将本说明书中描述的不同实施例或示例以及其中的特征进行结合或组合。
上述内容虽然已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型等更新操作。
Claims (10)
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.内存指标纵向伸缩模块根据内存运行指标计算内存使用占比,判定是否调整内存,若为否,不做处理,若为是,调整内存配置,然后进入步骤S3;
S2B.与步骤S2A并行,算子反压横向伸缩模块根据任务反压指标计算任务反压情况,判定是否调整并发,若为否,不做处理,若为是,调整并发,然后进入步骤S3;
S3.停止任务并保存任务savepoint;
S4.重新启动任务,启动成功则提示扩缩容成功,重启3次失败则提示告警。
7.根据权利要求6所述的一种基于flink任务指标监控实现任务资源弹性伸缩方法,其特征在于,步骤S2A中,根据内存运行指标计算内存使用占比的步骤如下:
S201. 根据最近N次内存使用占比;
内存使用占比=(堆内存使用内存1+堆内存使用内存2+.....+堆内存使用内存N+元空间使用内存1+元空间使用内存2+....+元空间使用内存N)/((堆内存+元空间)×N)
S202.计算调整后的新内存;
在占比小于30%的情况下,调整后的新内存计算公式为:
新内存= 总进程内存-总进程内存×内存使用占比-总进程内存×0.3;
在占比大于80%的情况下,内存计算公式为:
新内存= 总进程内存+总进程内存-总进程内存×内存使用占比。
8.根据权利要求7所述的一种基于flink任务指标监控实现任务资源弹性伸缩方法,其特征在于,所述调整内存配置具体为调整任务taskmanager的内存配置;调整内存的范围是大于等于1G内存且小于等于集群单个服务器最大内存。
9.根据权利要求8所述的一种基于flink任务指标监控实现任务资源弹性伸缩方法,其特征在于,步骤S2B中,通过计算采集flink任务每个算子计算最近n次反压指标为HIGH的情况;所述调整并发具体为调整任务taskmanager的solt的个数与任务并发数。
10.根据权利要求9所述的一种基于flink任务指标监控实现任务资源弹性伸缩方法,其特征在于,计算任务反压情况,调整并发的具体步骤如下:
S203.首先计算反压指标平均值,计算公式如下:
反压指标平均值=(反压占比1+反压占比2+.......+反压占比N)/N
S204.根据计算结果判断反压指标平均值所处等级,根据所处等级确定调整策略,计算公式为:
新并发=当前并发+当前并发×反压指标平均值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211270756.9A CN115328667A (zh) | 2022-10-18 | 2022-10-18 | 基于flink任务指标监控实现任务资源弹性伸缩系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211270756.9A CN115328667A (zh) | 2022-10-18 | 2022-10-18 | 基于flink任务指标监控实现任务资源弹性伸缩系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115328667A true CN115328667A (zh) | 2022-11-11 |
Family
ID=83915471
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211270756.9A Pending CN115328667A (zh) | 2022-10-18 | 2022-10-18 | 基于flink任务指标监控实现任务资源弹性伸缩系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115328667A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116841649A (zh) * | 2023-08-28 | 2023-10-03 | 杭州玳数科技有限公司 | 一种基于flink on yarn的热重启方法及装置 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150169236A1 (en) * | 2013-12-13 | 2015-06-18 | Oracle International Corporation | System and method for supporting memory allocation control with push-back in a distributed data grid |
CN112084016A (zh) * | 2020-07-27 | 2020-12-15 | 北京明略软件系统有限公司 | 一种基于flink的流计算性能优化系统及方法 |
CN113849294A (zh) * | 2021-11-30 | 2021-12-28 | 武汉迈异信息科技有限公司 | 一种kubernetes pod扩缩容的系统及方法 |
WO2022028157A1 (zh) * | 2020-08-03 | 2022-02-10 | 同济大学 | 云环境下微服务系统的弹性伸缩方法、系统、介质及设备 |
US20220047888A1 (en) * | 2009-02-20 | 2022-02-17 | Antinitus Ab | Device and method for treatment of tinnitus |
CN114116214A (zh) * | 2021-11-24 | 2022-03-01 | 南京苏宁电子信息技术有限公司 | Flink任务处理的资源调整方法、装置、设备和存储介质 |
CN114546652A (zh) * | 2022-02-24 | 2022-05-27 | 浙江大华技术股份有限公司 | 一种参数预估方法、装置及电子设备 |
CN114610441A (zh) * | 2022-02-23 | 2022-06-10 | 浙江大华技术股份有限公司 | 基于yarn调度的flink参数优化方法、系统、设备和存储介质 |
CN114840393A (zh) * | 2022-06-29 | 2022-08-02 | 杭州比智科技有限公司 | 一种多数据源数据同步监控方法及系统 |
CN115185683A (zh) * | 2022-07-04 | 2022-10-14 | 南京大学 | 一种基于动态优化模型的云平台流处理资源分配方法 |
-
2022
- 2022-10-18 CN CN202211270756.9A patent/CN115328667A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220047888A1 (en) * | 2009-02-20 | 2022-02-17 | Antinitus Ab | Device and method for treatment of tinnitus |
US20150169236A1 (en) * | 2013-12-13 | 2015-06-18 | Oracle International Corporation | System and method for supporting memory allocation control with push-back in a distributed data grid |
CN112084016A (zh) * | 2020-07-27 | 2020-12-15 | 北京明略软件系统有限公司 | 一种基于flink的流计算性能优化系统及方法 |
WO2022028157A1 (zh) * | 2020-08-03 | 2022-02-10 | 同济大学 | 云环境下微服务系统的弹性伸缩方法、系统、介质及设备 |
CN114116214A (zh) * | 2021-11-24 | 2022-03-01 | 南京苏宁电子信息技术有限公司 | Flink任务处理的资源调整方法、装置、设备和存储介质 |
CN113849294A (zh) * | 2021-11-30 | 2021-12-28 | 武汉迈异信息科技有限公司 | 一种kubernetes pod扩缩容的系统及方法 |
CN114610441A (zh) * | 2022-02-23 | 2022-06-10 | 浙江大华技术股份有限公司 | 基于yarn调度的flink参数优化方法、系统、设备和存储介质 |
CN114546652A (zh) * | 2022-02-24 | 2022-05-27 | 浙江大华技术股份有限公司 | 一种参数预估方法、装置及电子设备 |
CN114840393A (zh) * | 2022-06-29 | 2022-08-02 | 杭州比智科技有限公司 | 一种多数据源数据同步监控方法及系统 |
CN115185683A (zh) * | 2022-07-04 | 2022-10-14 | 南京大学 | 一种基于动态优化模型的云平台流处理资源分配方法 |
Non-Patent Citations (2)
Title |
---|
李梓杨等: "Flink环境下基于负载预测的弹性资源调度策略", 《通信学报》 * |
王晓钰等: "基于云平台的弹性Web集群扩缩容机制的研究", 《软件》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116841649A (zh) * | 2023-08-28 | 2023-10-03 | 杭州玳数科技有限公司 | 一种基于flink on yarn的热重启方法及装置 |
CN116841649B (zh) * | 2023-08-28 | 2023-12-08 | 杭州玳数科技有限公司 | 一种基于flink on yarn的热重启方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112000445A (zh) | 分布式任务调度的方法及系统 | |
CN106354562B (zh) | 内存清理系统和内存清理方法 | |
EP2977854B1 (en) | Method, apparatus, and user terminal for removing malicious power consuming application | |
US8886866B2 (en) | Optimizing memory management of an application running on a virtual machine | |
CN105045369B (zh) | 一种基于用户交互历史信息的cpu动态调频方法 | |
EP2904494B1 (en) | Method for preemptively restarting software in a multisubsystem mobile communication device to increase mean time between failures | |
CN111209110B (zh) | 一种实现负载均衡的任务调度管理方法、系统和存储介质 | |
US10924538B2 (en) | Systems and methods of monitoring software application processes | |
CN115328667A (zh) | 基于flink任务指标监控实现任务资源弹性伸缩系统及方法 | |
CN106940671B (zh) | 一种集群中任务线程运行的监控方法、装置及系统 | |
CN106572137B (zh) | 一种分布式服务资源管理方法和装置 | |
US6820263B1 (en) | Methods and system for time management in a shared memory parallel processor computing environment | |
CN111538585B (zh) | 一种基于node.js的服务器进程调度方法、系统和装置 | |
CN112052095B (zh) | 一种分布式高可用的大数据挖掘任务调度系统 | |
CN112799837A (zh) | 一种容器动态平衡调度方法 | |
JP2010272059A (ja) | メモリ管理方法計算機システム及びプログラム | |
WO2022247219A1 (zh) | 一种信息备份方法、设备及平台 | |
CN105824660A (zh) | 一种应用程序的更新方法及终端 | |
CN114564281A (zh) | 容器调度方法、装置、设备及存储介质 | |
CN110287159B (zh) | 一种文件处理方法及装置 | |
CN112817687A (zh) | 一种数据同步方法和装置 | |
CN111176848B (zh) | 集群任务的处理方法、装置、设备和存储介质 | |
WO2022095862A1 (zh) | 调整线程优先级的方法、终端及计算机可读存储介质 | |
Yu et al. | Ceres: container-based elastic resource management system for mixed workloads | |
CN113986458A (zh) | 容器集合调度方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20221111 |
|
RJ01 | Rejection of invention patent application after publication |