CN109684078A - 用于spark streaming的资源动态分配方法和系统 - Google Patents
用于spark streaming的资源动态分配方法和系统 Download PDFInfo
- Publication number
- CN109684078A CN109684078A CN201811482798.2A CN201811482798A CN109684078A CN 109684078 A CN109684078 A CN 109684078A CN 201811482798 A CN201811482798 A CN 201811482798A CN 109684078 A CN109684078 A CN 109684078A
- Authority
- CN
- China
- Prior art keywords
- resource
- data
- operation process
- spark streaming
- dynamic
- 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
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/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开用于spark streaming的资源动态分配方法和系统,方法包括:响应于首次接收的spark streaming任务数据流,获取spark streaming任务数据流的第一数据;基于第一数据计算处理spark streaming任务数据流需要使用的初始资源,并向资源管理器发送初始资源使用申请;周期性地采集当前运行进程运行时的第二数据,基于第二数据计算需要增加或减少的运行进程的第二数量;基于运行进程的第二数量向资源管理器发送动态资源分配申请以动态增加或减少第二数量的运行进程。本申请实施例提供的方案可以本申请的方案能够实现资源的动态扩缩容,减少人工进行干预,实现资源的动态精准分配和调整。
Description
技术领域
本发明属于spark streaming技术领域,尤其涉及用于spark streaming的资源动态分配方法和装置。
背景技术
相关技术中,spark已经成为广告、报表以及推荐系统等大数据计算场景中首选系统,因效率高,易用以及通用性越来越得到大家的青睐。流(Streaming),在大数据时代为数据流处理,就像水流一样,是数据流;既然是数据流处理,就会想到数据的流入、数据的加工、数据的流出。spark程序是使用一个spark应用实例一次性对一批历史数据进行处理,spark streaming是将持续不断输入的数据流转换成多个batch(批处理)分片,使用一批spark应用实例进行处理。Spark Streaming是以Spark Core为核心构建的一种分布式的流式计算框架,适用于对实时任务进行在线任务计算和输出,实现对数据的实时处理。
相似的技术主要用于网络控制器和虚拟机的调度上。例如:平时用户都有网上购物的经历,用户在网站上进行的各种操作通过Spark Streaming流处理技术可以被监控,用户的购买爱好、关注度、交易等可以进行行为分析。在金融领域,通过Spark Streaming流处理技术可以对交易量很大的账号进行监控,防止罪犯洗钱、财产转移、防欺诈等。在网络安全性方面,黑客攻击时有发生,通过Spark Streaming流处理技术可以将某类可疑IP进行监控并结合机器学习训练模型匹配出当前请求是否属于黑客攻击。其他方面,如:垃圾邮件监控过滤、交通监控、网络监控、工业设备监控的背后都是Spark Streaming发挥强大流处理的地方。
现有的一些专利解决网络控制器的资源调度,包括:资源虚拟层,用于从多个底层设备中获取网络资源,并对网络资源进行虚拟化,以得到虚拟化网络资源;核心控制层,用于控制上层应用从资源虚拟层获取虚拟化网络资源,核心控制层分别与资源虚拟层和上层应用相连。根据该专利实施例的软件定义网络控制器,通过核心控制层对上层应用与资源虚拟层的数据交互进行监控,从而提高了网络资源的利用率,实现应用层对网络资源的动态弹性的调度。
另外有一些专利提供一种动态资源调度方法和动态资源调度器,能够提高动态资源调度的效率。该方法包括:确定多个虚拟机迁移动作;确定多个虚拟机迁移动作之间的依赖关系;根据多个虚拟机迁移动作之间的依赖关系,执行多个虚拟机迁移动作。该专利实施例在执行虚拟机迁移动作时考虑它们之间的依赖关系,而非简单地按照顺序执行虚拟机迁移动作,从而能够提高动态资源调度的效率。
发明人在实现本申请的过程中发现:现有技术需要人工对计算任务的负载与承载任务的机器状态进行监控,效率很低,而且容易出错。并且伸缩的原则全凭个人的经验,没有一套统一的标准,伸缩质量得不到保证。
发明内容
本发明实施例提供一种用于spark streaming的资源动态分配方法和系统,用于至少解决上述技术问题之一。
第一方面,本发明实施例提供一种用于spark streaming的资源动态分配方法,包括:响应于首次接收的spark streaming任务数据流,获取所述spark streaming任务数据流的第一数据;基于所述第一数据计算处理所述spark streaming任务数据流需要使用的初始资源,并向资源管理器发送初始资源使用申请,其中,所述初始资源对应第一数量的运行进程;周期性地采集当前运行进程运行时的第二数据,基于所述第二数据计算需要增加或减少的运行进程的第二数量;以及基于所述运行进程的第二数量向所述资源管理器发送动态资源分配申请以动态增加或减少第二数量的运行进程。
第二方面,本发明实施例提供一种针对spark streaming的资源动态分配系统,包括:第一数据获取单元,配置为响应于首次接收的spark streaming任务数据流,获取所述spark streaming任务数据流的第一数据;初始资源单元,配置为基于所述第一数据计算处理所述spark streaming任务数据流需要使用的初始资源,并向资源管理器发送初始资源使用申请,其中,所述初始资源对应第一数量的运行进程;动态资源计算单元,配置为周期性地采集当前运行进程运行时的第二数据,基于所述第二数据计算需要增加或减少的运行进程的第二数量;以及动态调整单元,配置为基于所述运行进程的第二数量向所述资源管理器发送动态资源分配申请以动态增加或减少第二数量的运行进程。
第三方面,提供一种电子设备,其包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例的用于spark streaming的资源动态分配方法的步骤。
第四方面,本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行本发明任一实施例的用于sparkstreaming的资源动态分配方法的步骤。
本申请实施例的方法和装置通过先初始化需要的处理设备,之后在根据各处理设备反馈的负载情况,周期性地进行资源动态分配调整,能够使得资源能够一直处于一个比较优化的使用状态,spark streaming任务数据流也能得到及时的处理,并且整个过程智能完成,无需人工干预。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的一种用于spark streaming的资源动态分配方法的流程图;
图2为本发明一实施例提供的一种针对spark streaming的自动扩缩容系统的模块图;
图3为本发明一实施例提供的一种针对spark streaming的自动扩缩容系统的分配模块示意图;
图4为本发明一实施例提供的一种用于spark streaming的资源动态分配系统的框图;
图5是本发明一实施例提供的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,其示出了本申请的用于spark streaming的资源动态分配方法一实施例的流程图,本实施例的用于spark streaming的资源动态分配方法可以适用于用到了spark streaming的各种设备,主要是对现有的spark streaming的优化。
如图1所示,在步骤101中,响应于首次接收的spark streaming任务数据流,获取spark streaming任务数据流的第一数据;
之后,在步骤102中,基于第一数据计算处理spark streaming任务数据流需要使用的初始资源,并向资源管理器发送初始资源使用申请,其中,初始资源对应第一数量的运行进程;
然后,在步骤103中,周期性地采集当前运行进程运行时的第二数据,基于第二数据计算需要增加或减少的运行进程的第二数量;
最后,在步骤104中,基于运行进程的第二数量向资源管理器发送动态资源分配申请以动态增加或减少第二数量的运行进程。
在本实施例中,对于步骤101,资源动态分配系统对于初次接收的sparkstreaming任务数据流,获取该任务数据流的第一数据用于计算需要多少初始资源来对该spark streaming任务数据流进行处理。之后,对于步骤102,基于该第一数据计算处理spark streaming任务数据流所需要的初始资源,并根据需要的初始资源向资源管理器发送初始资源使用申请,该初始资源对应第一数量的运行进程,例如为20个。然后,对于步骤103,周期性地采集当前运行进程运行时的第二数据,基于该第二数据可以知道目前的处理速度是否能跟上spark streaming任务数据流的速度,从而判断需不需要额外地增加或者减少运行进程的数量,基于该第二数据计算得出需要动态增加或者减少的运行进程的第二数量。若当前运行进程为初始分配的第一数量的运行进程时,则监控该第一数量的运行进程的运行时数据即可;若当前运行进程为后续调整(一次或者多次增加或减少后的数量),则监控该调整后的相应数量的运行进程的运行时数据即可,在此不再赘述。最后,对于步骤104,根据需要申请增加或者减少的运行进程的第二数量向资源管理器发送动态资源分配申请以逐步增加或者减少运行进程的数量。例如,初始分配的运行进程的数量为20,后续需要增加5,则可以根据系统能够承受的增速进行增加,如每次增加2之类的,本申请在此没有限制。
在一些可选的实施例中,第一数据可以包括实时指标维度和其对应的权重w1、总指标数和其对应的权重w2、每秒处理消息数和其对应的权重w3以及复杂度m,基于第一数据计算处理spark streaming任务数据流需要使用的初始资源包括根据以下公式计算:
(实时指标维度*w1)*(总指标数*w2)*(每秒处理消息数*w3)*m=运行进程的第一数量;
其中,每秒处理消息数以万条/秒为单位。
例如,可以根据经验将w1设置为0.1,w2设置为0.03,w3设置为0.02,或者也可以设置一个总的偏移量(即w1、w2和w3的乘积)为0.00006,本申请在此方面没有限制。以上权重值可以根据实际的经验进行设置和调整,或者还可以建立一个线性模型,通过长期的观察求得偏移量,本申请在此没有限制。
在另一些可选的实施例中,还包括复杂度m,其中,复杂度m的选择公式例如如下:
其中t代表计算拓扑图层数。
当t属于[1,3]时,m=1;当t属于[4,6];当t属于[7,+∞]时,m=3。
在另一些可选的实施例中,第二数据可以包括伸缩标记、CPU使用率和预设使用率阈值X、处理延迟和处理延迟阈值Y以及内存使用率和使用率阈值Z;
其中,伸缩标记为(-1)N,当CPU使用率>=X,并且处理延迟>=Y并且内存使用率>=Z时,N=2;否则N=1。
XYZ的值可以根据经验确定,例如,在进一步可选的实施例中,X可以设置为50%,Y可以设置为20ms,Z可以设置为60%。
设置XYZ一方面是为了确定之后是伸还是缩,另一方面也能根据XYZ的值计算后续需要增加或者减少的运行进程的第二数量。
在另一些可选的实施例中,第二数据还包括处理延迟的权重w4、内存使用率的权重w5和CPU使用率的权重w6,基于第二数据计算需要增加或减少的运行进程的第二数量包括根据以下公式计算:
(-1)N*(处理延迟*w4)*(每秒处理消息数(万)*w3)*(内存使用率*w5)*(CPU使用率*w6)=运行进程的第二数量;
当第二数量为负数时,减少第二数量的运行进程,直至运行进程的数量大于等于运行进程的第一数量;
当第二数量为正数时,增加第二数量的运行进程;
其中,每秒处理消息数以万条为单位,处理延迟以ms为单位,使用率以百分比为单位。
例如,可以将w3设置为0.02,w4设置为0.1,w5设置为0.03,w6设置为0.04,之后根据实际采集的各运行进程的平均运行时数据,带入公式中进行计算得到最终需要增加或者减少的运行进程的数量。在一些可选的实施例中,还可以设置一个包含上述所有的权重的偏移量(即w3、w4w5和w6的乘积),例如为0.0000024,本申请在此没有限制。
进一步地,例如当X设置为50%,Y设置为20ms,Z设置为60%时,若XYZ中有任意一项大于等于该设置的数值,则N为2,伸缩标记为1,最后的结果为正数,表示已经超负载运行了,需要增加新的运行进程;反之,若XYZ每一项都低于该设置的数值,则N为1,伸缩标记为-1,最后的结果为负数,则说明没有超负荷,按照这个速度可以适当地减少一些运行进程以节约资源。
在另一些可选的实施例中,第二数据还可以包括磁盘IO和网络流量。可以在公式中加入磁盘IO和网络流量这两个参数,从而使得最后计算的结果更加精准,伸缩更加符合实际的情况。
以下给出一个具体实施例,以使本领域技术人员能够更好地理解本申请的方案。
发明人发现现有技术中存在的这些缺陷是由于上面提到的相似的技术中的以下内容导致的:分布式计算任务的资源动态分配主要依靠对于集群整体资源和任务的处理资源的动态计算得出,在实现和模型设计上有一定的难度。
请参考图2,其示出了本发明一实施例提供的一种针对spark streaming的自动扩缩容系统的模块图,示出了模块之间的交互。
如图2所示,这里主要有两个模块,Resource Scheduler(资源调度模块)用于对资源进行动态管理、计算和资源申请,Metrics Provider(计量提供模块)用于运行时指标的收集和将动态上报给Resource Scheduler以进行资源的动态调整。
其中,Resource Manager(资源管理模块)用于管理资源集群的资源,包括CPU,内存和硬盘,Node Manager(节点管理模块)用于管理单台机器资源和任务,而Container(容器)指单机上单个任务的抽象,App Master(应用主节点)是指应用的主节点,用于监控任务在集群中的运行状态。
Resource Scheduler主要负责任务资源申请,任务动态运行信息的收集,动态资源的计算,完成资源在运行态的动态调整。
Metrics Provider主要负责提供Resource Scheduler计算动态资源所需要的运行时指标数据,提供准确的数据支撑。
根据图2中所示,首先,Resource Scheduler接收提交的任务(submit task);然后Resource Scheduler向Resource Manager申请资源(request resource);之后ResourceManager将任务分配下去,在集群中开始处理(start task in cluster);然后各个NodeManager管理单台机器上的资源和任务,内部的App Master监控任务在集群中的运行状态,之后由Node Manager反馈给Resource Scheduler(send runtime Metrics to ResourceScheduler);然后Resource Scheduler再根据反馈的信息重新规划,向Resource Manager申请资源,周而复始,形成资源动态管理。
进一步参考图3,其示出了资源分配所使用的统一的资源分配模块。
本系统按照功能可划分为动态资源调整模块和实时计算资源监控模块。其中动态资源调整模块进行计算拓扑资源的初始与动态资源调整。实时计算资源监控模块进行当前计算拓扑的实时资源指标监控。
当第一次进行计算拓扑提交的时候,由动态资源调整模块根据所计算的维度数、指标数、数据记录数和复杂度进行初始资源的分配,初始指标计算资源估算模型计算公式如下:
公式1:(维度*w1)*(指标*w2)*(每秒处理消息数据(万)*w3)*m=N个worker(其中一个worker代表Spark Streaming中的一个运行进程)
其中,w1、w2、w3为权重,数据条数以万条/秒为单位,m为复杂度,实时指标一般为1.0:
w1=0.1;w2=0.02;w3=0.03;m=1.0
比如:实时指标维度20个,总指标数约500个,数据约30万条,那么就需要18个worker
(20*0.1)*(500*0.02)*(30*0.03)*1.0=18个worker
定义1:其中复杂度m的选择公式如下
其中t代表计算拓扑图层数。
当t属于[1,3]时,m=1;当t属于[4,6];当t属于[7,+∞]时,m=3。
而当计算拓扑运行以后,动态资源调整模块每隔3分钟(可配置)对收集的指标进行监控与分析,对当前任务的资源进行动态调整,动态计算资源伸缩估算模型如下:
公式2:伸缩标记(-1)N,其中当CPU使用率>X,并且处理延迟>Y并且内存使用率>Z时,N=2,否则N=1,其中X,Y,Z是自定义变量
公式3:(-1)N*(处理延迟*w4)*(每秒处理消息数据(万)*w3)*(内存使用率*w5)*(CPU使用率*w6)=N个worker(其中一个worker代表Spark Streaming中的一个运行进程),当计算结果为负数时,集群进行缩,但缩后的worker个数必须大于等于初步的worker个数,为正时,集群进行伸。
其中,w3、w4、w5、w6为权重,每秒处理消息条数以万条为单位,处理延迟以ms为单位,使用率以百分比为单位,XYZ分别表示CPU、处理延迟、内存使用率阈值:
例如:设置w3=0.02;w4=0.1;w5=0.04;w6=0.03;X=50,Y=200,Z=50
比如:处理延迟20ms,每秒处理消息数30万条,内存使用率90,CPU使用率80,那就需要再加10个worker(四舍五入得到)。
(-1)2*(20*0.1)*(30*0.02)*(90*0.04)*(80*0.03)=10个worker
以上各权重值可以根据平时的经验进行确定和调整。
算法流程如下:
发明人在实现本申请的方案之前也考虑到手工进行调整,但效率不好,而且大部分都要依赖经验。
本申请的方案能够达到的效果:通过统一的动态资源调度框架来完成对于计算资源的动态扩缩容,减少人工进行干预;通过运行时指标收集和资源动态计算,实现资源的动态精准分配和调整。
请参考图4,其示出了本发明一实施例提供的用于spark streaming的资源动态分配系统的框图。
如图4所示,用于spark streaming的资源动态分配系统400,包括第一数据获取单元410、初始资源单元420、动态资源计算单元430和动态调整单元440。
其中,第一数据获取单元410,配置为响应于首次接收的spark streaming任务数据流,获取spark streaming任务数据流的第一数据;初始资源单元420,配置为基于第一数据计算处理spark streaming任务数据流需要使用的初始资源,并向资源管理器发送初始资源使用申请,其中,初始资源对应第一数量的运行进程;动态资源计算单元430,配置为周期性地采集初始资源对应的多台处理设备运行时的第二数据,基于第二数据计算需要增加或减少的运行进程的第二数量;以及动态调整单元440,配置为基于运行进程的第二数量向资源管理器发送动态资源分配申请以动态增加或减少第二数量的运行进程。
应当理解,图4中记载的诸模块与参考图1中描述的方法中的各个步骤相对应。由此,上文针对方法描述的操作和特征以及相应的技术效果同样适用于图4中的诸模块,在此不再赘述。
值得注意的是,本公开的实施例中的模块并不用于限制本公开的方案,例如第一数据获取单元可以描述为响应于首次接收的spark streaming任务数据流,获取sparkstreaming任务数据流的第一数据的单元。另外,还可以通过硬件处理器来实现相关功能模块,例如第一数据获取单元也可以用处理器实现,在此不再赘述。
在另一些实施例中,本发明实施例还提供了一种非易失性计算机存储介质,计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行上述任意方法实施例中的用于spark streaming的资源动态分配方法;
作为一种实施方式,本发明的非易失性计算机存储介质存储有计算机可执行指令,计算机可执行指令设置为:
响应于首次接收的spark streaming任务数据流,获取所述spark streaming任务数据流的第一数据;
基于所述第一数据计算处理所述spark streaming任务数据流需要使用的初始资源,并向资源管理器发送初始资源使用申请,其中,所述初始资源对应第一数量的运行进程;
周期性地采集当前运行进程运行时的第二数据,基于所述第二数据计算需要增加或减少的运行进程的第二数量;
基于所述运行进程的第二数量向所述资源管理器发送动态资源分配申请以动态增加或减少第二数量的运行进程。
作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的用于spark streaming的资源动态分配方法对应的程序指令/模块。一个或者多个程序指令存储在非易失性计算机可读存储介质中,当被处理器执行时,执行上述任意方法实施例中的用于spark streaming的资源动态分配方法。
非易失性计算机可读存储介质可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据用于sparkstreaming的资源动态分配系统的使用所创建的数据等。此外,非易失性计算机可读存储介质可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,非易失性计算机可读存储介质可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至用于spark streaming的资源动态分配系统。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
本发明实施例还提供一种计算机程序产品,计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令被计算机执行时,使计算机执行上述任一项用于spark streaming的资源动态分配方法。
图5是本发明实施例提供的电子设备的结构示意图,如图5所示,该设备包括:一个或多个处理器510以及存储器520,图5中以一个处理器510为例。用于spark streaming的资源动态分配方法的设备还可以包括:输入装置530和输出装置540。处理器510、存储器520、输入装置530和输出装置540可以通过总线或者其他方式连接,图5中以通过总线连接为例。存储器520为上述的非易失性计算机可读存储介质。处理器510通过运行存储在存储器520中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例用于spark streaming的资源动态分配方法。输入装置530可接收输入的数字或字符信息,以及产生与信息投放装置的用户设置以及功能控制有关的键信号输入。输出装置540可包括显示屏等显示设备。
上述产品可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例所提供的方法。
作为一种实施方式,上述电子设备,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够:
响应于首次接收的spark streaming任务数据流,获取所述spark streaming任务数据流的第一数据;
基于所述第一数据计算处理所述spark streaming任务数据流需要使用的初始资源,并向资源管理器发送初始资源使用申请,其中,所述初始资源对应第一数量的运行进程;
周期性地采集当前运行进程运行时的第二数据,基于所述第二数据计算需要增加或减少的运行进程的第二数量;
基于所述运行进程的第二数量向所述资源管理器发送动态资源分配申请以动态增加或减少第二数量的运行进程。
本申请实施例的电子设备以多种形式存在,包括但不限于:
(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iPhone)、多媒体手机、功能性手机,以及低端手机等。
(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。
(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如iPod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。
(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
(5)其他具有数据交互功能的电子装置。
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种针对spark streaming的资源动态分配方法,包括:
响应于首次接收的spark streaming任务数据流,获取所述spark streaming任务数据流的第一数据;
基于所述第一数据计算处理所述spark streaming任务数据流需要使用的初始资源,并向资源管理器发送初始资源使用申请,其中,所述初始资源对应第一数量的运行进程;
周期性地采集当前运行进程运行时的第二数据,基于所述第二数据计算需要增加或减少的运行进程的第二数量;
基于所述运行进程的第二数量向所述资源管理器发送动态资源分配申请以动态增加或减少第二数量的运行进程。
2.根据权利要求1所述的方法,其中,所述第一数据包括实时指标维度和权重w1、总指标数和权重w2、每秒处理消息数和权重w3以及复杂度m,所述基于所述第一数据计算处理所述spark streaming任务数据流需要使用的初始资源包括根据以下公式计算:
(实时指标维度*w1)*(总指标数*w2)*(每秒处理消息数*w3)*m=运行进程的第一数量;
其中,每秒处理消息数以万条/秒为单位。
3.根据权利要求2所述的方法,其中,复杂度m的选择公式如下:
其中t代表计算拓扑图层数。
4.根据权利要求3所述的方法,其中,所述第二数据包括伸缩标记、CPU使用率和预设使用率阈值X、处理延迟和处理延迟阈值Y以及内存使用率和使用率阈值Z;
其中,伸缩标记为(-1)N,当CPU使用率>=X,并且处理延迟>=Y,并且内存使用率>=Z时,N=2;否则N=1。
5.根据权利要求4所述的方法,其中,所述第二数据还包括处理延迟的权重w4、内存使用率的权重w5和CPU使用率的权重w6,所述基于所述第二数据计算需要增加或减少的运行进程的第二数量包括根据以下公式计算:
(-1)N*(处理延迟*w4)*(每秒处理消息数(万)*w3)*(内存使用率*w5)*(CPU使用率*w6)=运行进程的第二数量;
当第二数量为负数时,减少第二数量的运行进程,直至所述运行进程的数量大于等于所述运行进程的第一数量;
当第二数量为正数时,增加第二数量的运行进程;
其中,每秒处理消息数以万条为单位,处理延迟以ms为单位,使用率以百分比为单位。
6.根据权利要求5所述的方法,其中,X设定为50%,Y设定为20ms,Z设定为60%。
7.根据权利要求1-6中任一项所述的方法,其中,所述第二数据还包括磁盘IO和网络流量。
8.一种针对spark streaming的资源动态分配系统,包括:
第一数据获取单元,配置为响应于首次接收的spark streaming任务数据流,获取所述spark streaming任务数据流的第一数据;
初始资源单元,配置为基于所述第一数据计算处理所述spark streaming任务数据流需要使用的初始资源,并向资源管理器发送初始资源使用申请,其中,所述初始资源对应第一数量的运行进程;
动态资源计算单元,配置为周期性地采集当前运行进程运行时的第二数据,基于所述第二数据计算需要增加或减少的运行进程的第二数量;
动态调整单元,配置为基于所述运行进程的第二数量向所述资源管理器发送动态资源分配申请以动态增加或减少第二数量的运行进程。
9.一种电子设备,其包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1至7任一项所述方法的步骤。
10.一种存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现权利要求1至7任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811482798.2A CN109684078A (zh) | 2018-12-05 | 2018-12-05 | 用于spark streaming的资源动态分配方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811482798.2A CN109684078A (zh) | 2018-12-05 | 2018-12-05 | 用于spark streaming的资源动态分配方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109684078A true CN109684078A (zh) | 2019-04-26 |
Family
ID=66186449
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811482798.2A Pending CN109684078A (zh) | 2018-12-05 | 2018-12-05 | 用于spark streaming的资源动态分配方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109684078A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110442454A (zh) * | 2019-08-02 | 2019-11-12 | 联想(北京)有限公司 | 一种资源调度方法、装置及计算机设备 |
CN111443870A (zh) * | 2020-03-26 | 2020-07-24 | 腾讯科技(深圳)有限公司 | 一种数据处理的方法、设备及存储介质 |
CN111767136A (zh) * | 2020-06-02 | 2020-10-13 | Oppo(重庆)智能科技有限公司 | 进程管理方法、终端及具有存储功能的装置 |
WO2020233262A1 (zh) * | 2019-07-12 | 2020-11-26 | 之江实验室 | 一种基于Spark的多中心数据协同计算的流处理方法 |
CN112612587A (zh) * | 2020-12-25 | 2021-04-06 | 江苏省未来网络创新研究院 | 一种针对流量分析的Spark平台动态资源调配方法 |
CN113010315A (zh) * | 2021-03-18 | 2021-06-22 | 中国邮政储蓄银行股份有限公司 | 资源分配方法及分配装置、计算机可读存储介质 |
CN115617451A (zh) * | 2022-09-23 | 2023-01-17 | 长春吉大正元信息技术股份有限公司 | 一种数据处理方法和数据处理装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104951372A (zh) * | 2015-06-16 | 2015-09-30 | 北京工业大学 | 一种基于预测的Map/Reduce数据处理平台内存资源动态分配方法 |
CN106610870A (zh) * | 2016-12-28 | 2017-05-03 | 北京奇艺世纪科技有限公司 | 一种处理节点数量调整方法及装置 |
-
2018
- 2018-12-05 CN CN201811482798.2A patent/CN109684078A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104951372A (zh) * | 2015-06-16 | 2015-09-30 | 北京工业大学 | 一种基于预测的Map/Reduce数据处理平台内存资源动态分配方法 |
CN106610870A (zh) * | 2016-12-28 | 2017-05-03 | 北京奇艺世纪科技有限公司 | 一种处理节点数量调整方法及装置 |
Non-Patent Citations (2)
Title |
---|
MAX PETROVE 等: "Adaptive performance model for dynamic scaling Apache Spark Streaming", 《PROCEDIA COMPUTER SCIENCE》 * |
蒋专: "《Spark以及spark streaming核心原理及实践》", 4 May 2017 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020233262A1 (zh) * | 2019-07-12 | 2020-11-26 | 之江实验室 | 一种基于Spark的多中心数据协同计算的流处理方法 |
CN110442454A (zh) * | 2019-08-02 | 2019-11-12 | 联想(北京)有限公司 | 一种资源调度方法、装置及计算机设备 |
CN110442454B (zh) * | 2019-08-02 | 2022-06-24 | 联想(北京)有限公司 | 一种资源调度方法、装置及计算机设备 |
CN111443870A (zh) * | 2020-03-26 | 2020-07-24 | 腾讯科技(深圳)有限公司 | 一种数据处理的方法、设备及存储介质 |
CN111443870B (zh) * | 2020-03-26 | 2021-08-03 | 腾讯科技(深圳)有限公司 | 一种数据处理的方法、设备及存储介质 |
CN111767136A (zh) * | 2020-06-02 | 2020-10-13 | Oppo(重庆)智能科技有限公司 | 进程管理方法、终端及具有存储功能的装置 |
CN112612587A (zh) * | 2020-12-25 | 2021-04-06 | 江苏省未来网络创新研究院 | 一种针对流量分析的Spark平台动态资源调配方法 |
CN113010315A (zh) * | 2021-03-18 | 2021-06-22 | 中国邮政储蓄银行股份有限公司 | 资源分配方法及分配装置、计算机可读存储介质 |
CN115617451A (zh) * | 2022-09-23 | 2023-01-17 | 长春吉大正元信息技术股份有限公司 | 一种数据处理方法和数据处理装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109684078A (zh) | 用于spark streaming的资源动态分配方法和系统 | |
Shahidinejad et al. | Joint computation offloading and resource provisioning for e dge‐cloud computing environment: A machine learning‐based approach | |
CN106506670B (zh) | 一种云平台虚拟资源高速调度方法与系统 | |
CN112165691B (zh) | 内容分发网络调度方法、装置、服务器和介质 | |
US10783002B1 (en) | Cost determination of a service call | |
Li et al. | Optimal resource provisioning for cloud computing environment | |
CN109324875B (zh) | 一种基于强化学习的数据中心服务器功耗管理与优化方法 | |
CN107003887A (zh) | Cpu超载设置和云计算工作负荷调度机构 | |
CN104038392A (zh) | 一种云计算资源服务质量评估方法 | |
CN109684077A (zh) | 用于spark streaming的资源动态分配和反馈方法及装置 | |
CN105007337A (zh) | 集群系统负载均衡的方法和系统 | |
CN104123189A (zh) | 一种基于IaaS层应用感知的Web多层应用动态资源调整方法 | |
CN102662764B (zh) | 一种基于smdp的动态云计算资源优化分配方法 | |
Bashar | Autonomic scaling of cloud computing resources using BN-based prediction models | |
CN103401939A (zh) | 一种采用混合调度策略的负载均衡方法 | |
CN106557369A (zh) | 一种多线程的管理方法及系统 | |
CN115421930B (zh) | 任务处理方法、系统、装置、设备及计算机可读存储介质 | |
CN108270805B (zh) | 用于数据处理的资源分配方法及装置 | |
CN104536804A (zh) | 面向关联任务请求的虚拟资源调度系统及调度和分配方法 | |
CN106293947B (zh) | 虚拟化云环境下gpu-cpu混合资源分配系统和方法 | |
CN104407912A (zh) | 一种虚拟机配置方法及装置 | |
Yazdanov et al. | Lightweight automatic resource scaling for multi-tier web applications | |
CN108132840A (zh) | 一种分布式系统中的资源调度方法及装置 | |
CN106101196A (zh) | 一种基于概率模型的云渲染平台任务调度系统及方法 | |
CN105302641A (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 215123 building 14, Tengfei Innovation Park, 388 Xinping street, Suzhou Industrial Park, Suzhou City, Jiangsu Province Applicant after: Sipic Technology Co.,Ltd. Address before: 215123 building 14, Tengfei Innovation Park, 388 Xinping street, Suzhou Industrial Park, Suzhou City, Jiangsu Province Applicant before: AI SPEECH Co.,Ltd. |
|
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190426 |