内存管理方法及装置与流程

文档序号:27639812发布日期:2021-11-29 17:45阅读:105来源:国知局
内存管理方法及装置与流程

1.本发明涉及大数据领域,尤其涉及一种内存管理方法及装置。


背景技术:

2.目前的大数据计算框架主要包括mapreduce、spark和flink等。其他类型的计算框架多是基于这三种的派生产品。对于mapreduce类型的作业,可以通过mapreduce.map.memory.mb,mapreduce.reduce.memory.mb这两个配置参数来控制map/reduce的内存使用大小。对于spark类型的作业,可以通过
‑‑
driver

memory,
‑‑
executor

memory设置driver/executor的内存使用大小。对于flink类型的作业,可以通过

yjm,

tjm.设置jobmanager/taskmanager的内存使用大小。
3.这三种作业提供了配置,让用户灵活的设置作业需求的内存大小,但是对于经验不足的人员来说,容易设置不合理。如果内存资源设置不足,则作业会报错失败,需要增加内存让作业运行起来。然而,如果内存配置过高,作业虽然不会有任何报错,但是会导致其他作业没法使用这部分内存。由于这部分内存存在被占用,得不到使用的情况,从而利用率大大降低,造成了资源的浪费。


技术实现要素:

4.针对现有技术存在的问题,本发明提供一种内存管理方法及装置。
5.本发明提供一种内存管理方法,包括:获取每个作业的作业信息,所述作业信息包括当前使用内存和当前配置的最大内存;根据所述当前使用内存和所述最大内存,确定每个作业的当前内存使用占比;根据每个作业的所述当前内存使用占比是否超过第一阈值和/或每个作业的所述当前内存使用占比超过第一阈值的时长,确定待进行内存配置调整的目标作业。
6.根据本发明一个实施例的内存管理方法,根据每个作业的所述当前内存使用占比是否超过第一阈值和/或每个作业的所述当前内存使用占比超过第一阈值的时长,确定待进行内存配置调整的目标作业,包括:当存在第一作业,且所述第一作业的所述当前内存使用占比超过所述第一阈值,且所述第一作业的当前内存使用占比超过所述第一阈值的时长与所述第一作业当次执行总时长之比低于第二阈值时,确定所述第一作业为待进行内存配置调整的所述目标作业。
7.根据本发明一个实施例的内存管理方法,还包括:在第一作业的所述内存使用占比未超过第一阈值时,发出第一告警;在所述第一作业的所述当前内存使用占比超过所述第一阈值的时长与所述第一作业当次执行总时长之比低于第二阈值时,发出第二告警。
8.根据本发明一个实施例的内存管理方法,所述第一告警,用于告知用户降低所述目标作业的最大内存,所述第二告警,用于告知用户对所述目标作业进行优化配置。
9.根据本发明一个实施例的内存管理方法,所述获取每个作业的作业信息,包括:获取每个作业多次执行的作业信息,所述作业信息包括多次作业执行产生的作业执行标识;
其中,所述内存管理方法,还包括:根据每个作业的多个作业执行标识,基于每个作业连续执行预设次数时的作业使用内存确定每个作业的所述当前使用内存。
10.根据本发明一个实施例的内存管理方法,每次作业执行对应多个并发进程,所述作业信息还包括与每个作业执行标识对应的多个并发标识;所述作业使用内存为每次作业执行时所述多个并发进程使用的内存;所述最大内存,为每次作业执行时每个并发进程的内存使用上限;其中,所述基于每个作业连续执行预设次数时的作业使用内存确定每个作业的所述当前使用内存,包括:根据每个作业中每次作业执行的所有并发进程的作业使用内存,确定单次作业执行的作业使用内存;根据每个作业连续预设次数的单次作业执行的作业使用内存,确定每个作业的当前使用内存。
11.根据本发明一个实施例的内存管理方法,还包括:在发出第一告警的预设时长后,未检测到用户的降低所述目标作业的最大内存的操作,执行按比例降低所述目标作业的最大内存的操作,并向用户发送内存降低的提示信息。
12.本发明还提供一种内存管理装置,包括:作业信息获取模块,用于获取每个作业的作业信息,所述作业信息包括当前使用内存和当前配置的最大内存;内存占比获取模块,用于根据所述当前使用内存和所述最大内存,确定每个作业的当前内存使用占比;内存配置管理模块,用于根据每个作业的所述当前内存使用占比是否超过第一阈值和/或每个作业的所述当前内存使用占比超过第一阈值的时长,确定待进行内存配置调整的目标作业。
13.本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述内存管理方法的步骤。
14.本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述内存管理方法的步骤。
15.本发明提供的内存管理方法及装置,通过当前使用内存和最大内存得到内存使用占比,可以监控所有作业的内存配置是否存在问题,对于问题性作业,可以及时告知用户修改内存配置或者优化作业逻辑。可结合邮件等可视化的方式,及时告知用户存在问题作业,从而有利于减少大数据集群的内存浪费情况。
附图说明
16.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
17.图1是本发明提供的内存管理方法的流程示意图;
18.图2是本发明提供的内存管理装置的结构示意图;
19.图3是本发明提供的电子设备的结构示意图。
具体实施方式
20.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,
而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
21.下面结合图1

图3描述本发明的内存管理方法及装置。图1是本发明提供的内存管理方法的流程示意图,如图1所示,本发明提供内存管理方法,包括:
22.101、获取每个作业的作业信息,所述作业信息包括当前使用内存和当前配置的最大内存。
23.确定当前使用内存和当前配置的最大内存,具体可以每隔预设时间段获取一次。首先,可设置一个名为monitoragent的代理,通过javaagent的方式随mapreduce、spark和flink等大数据框架启动。在作业运行过程中,monitoragent每隔预设时间段(如5s)拉取一次每个作业程序的作业信息,作业信息主要包括当前使用内存与内存上限等信息,并同步到数据库中,如图2所示。除此之外,作业信息根据具体需求,还可包括其它相关信息,具体如下:
24.一个作业信息的主要数据包括:时间戳、作业名、applicationid、containerid、用户、当前使用内存和最大内存,可见表1。
25.表1
[0026][0027]
102、根据所述当前使用内存和所述最大内存,确定每个作业的当前内存使用占比。
[0028]
根据当前使用内存比上当前最大内存,可以得到作业的内存使用占比。
[0029]
103、根据每个作业的所述当前内存使用占比是否超过第一阈值和/或每个作业的所述当前内存使用占比超过第一阈值的时长,确定待进行内存配置调整的目标作业。
[0030]
例如,第一阈值可设置为75%,如果作业的当前使用内存/最大内存得到的内存使用占比没有超过75%,则确定为需进行内存配置调整的目标作业。
[0031]
或者,内存使用占比超过第一阈值,但超过第一阈值的时长不足,则同样确认为需进行内存配置调整的目标作业。
[0032]
确定了需进行内存配置调整的目标作业之后,可进行相应的处理。
[0033]
本发明的内存管理方法,通过当前使用内存和最大内存得到内存使用占比,可以监控所有作业的内存配置是否存在问题,对于问题性作业,可以及时告知用户修改内存配置或者优化作业逻辑。可结合邮件等可视化的方式,及时告知用户存在问题作业,从而有利于减少大数据集群的内存浪费情况。
[0034]
在一个实施例中,根据每个作业的所述当前内存使用占比是否超过第一阈值和/或每个作业的所述当前内存使用占比超过第一阈值的时长,确定待进行内存配置调整的目标作业,包括:当存在第一作业,且所述第一作业的所述当前内存使用占比超过所述第一阈值,且所述第一作业的当前内存使用占比超过所述第一阈值的时长与所述第一作业当次执行总时长之比低于第二阈值时,确定所述第一作业为待进行内存配置调整的所述目标作业。
[0035]
例如,如果第一作业(其中,第一并非对作业的顺序进行限制,而是便于对作业进行区别)内存占比超过75%,则比较第一作业超过75%的内存占比的运行时长占作业当次执行总时长的百分比,如果时长占比低于第二阈值(如20%),则可能数据倾斜或者计算逻辑存在问题,从而作业也确定为需要进行内存配置的作业。
[0036]
在一个实施例中,内存管理方法还包括:在第一作业的所述内存使用占比未超过第一阈值时,发出第一告警;在所述第一作业的所述当前内存使用占比超过所述第一阈值的时长与所述第一作业当次执行总时长之比低于第二阈值时,发出第二告警。
[0037]
在确定了第一作业为需要进行内存配置调整的目标作业之后,可以先向第一作业对应的用户发出告警,以提示用户进行内存配置的更改。具体可以分两种情况分别发出两类告警。如果第一作业的内存占比未超过75%,则发出第一告警。如果第一作业的内存占比超过75%,则比较超过75%的内存占比的运行时长占作业当次执行总时长的百分比,如果时长占比低于第二阈值(如20%),则可能数据倾斜或者计算逻辑存在问题,发出第二告警。
[0038]
可选的,第一告警的优先级高于第二告警。即第一告警属于高危预警,可以红色预警体现。第二告警属于普通预警,可以黄色预警体现。
[0039]
在一个实施例中,所述第一告警,用于告知用户降低所述目标作业的最大内存,所述第二告警,用于告知用户对所述目标作业进行优化配置。
[0040]
第一告警属于高危预警,可以多种方式体现。例如,可以是直接发送建议降低目标作业内存配置的消息给用户,告知用户降低目标作业的内存配置,如配置为最大值的80%。第二告警的方式,可以是直接向用户发送数据倾斜提示或者计算逻辑错误提示的消息,用于用户对目标作业的整体作业配置进行修正。需要说明的是,本发明实施例,对第一告警和第二告警的实现方式,不作具体限定。
[0041]
在一个实施例中,所述获取每个作业的作业信息,包括:获取每个作业多次执行的
作业信息,所述作业信息包括多次作业执行产生的作业执行标识;其中,所述内存管理方法,还包括:根据每个作业的多个作业执行标识,基于每个作业连续执行预设次数时的作业使用内存确定每个作业的所述当前使用内存。
[0042]
具体而言,考虑到不同调度批次数据量不同的问题。本发明实施例中,采用作业连续执行预设次数的方案,即分析每个作业的连续次数的执行情况。作业每次执行产生一个作业执行标识,如上述表1的applicationid。
[0043]
作为优选实施例,预设次数为6次,从而可以评估通用情况下,单个作业的内存使用情况。例如,根据作业执行标识,确定每个作业连续执行6次的使用内存,将6次的最大使用内存,作为作业的当前使用内存,然后以此进行阈值判断。如果同一个作业的连续6次的当前使用内存/最大内存的内存使用占比,都没有超过75%,则给予高危预警,告知用户降低作业内存配置,例如降到最大内存的80%。
[0044]
在一个实施例中,每次作业执行对应多个并发进程,所述作业信息还包括与每个作业执行标识对应的多个并发标识;所述作业使用内存为每次作业执行时所述多个并发进程使用的内存;所述最大内存,为每次作业执行时每个并发进程的内存使用上限;其中,所述基于每个作业连续执行预设次数时的作业使用内存确定每个作业的所述当前使用内存,包括:根据每个作业中每次作业执行的所有并发进程的作业使用内存,确定单次作业执行的作业使用内存;根据每个作业连续预设次数的单次作业执行的作业使用内存,确定每个作业的当前使用内存。
[0045]
具体而言,考虑上述表1的applicationid和containerid,分别为作业执行标识和作业的并发标识。作业每次执行产生对应的applicationid,同时每次执行生成多个并发的进程,每个进程对应一个并发标识。作业执行一次的作业使用内存,可以根据执行一次时所有并发进程(通过并发标识查找)的作业使用内存确定,如将所有并发进程的作业使用内存进行累加。在此基础上,作业的当前使用内存,可以根据作业连续执行预设次数时单次作业执行的作业使用内存来确定。例如,作业连续执行6次,取6次作业使用内存的最大值(或者取6次的平均值,),作为作业的当前使用内存,参与当前内存使用占比的计算。
[0046]
相应地,作业执行一次的最大内存,可以根据执行一次时每个并发进程的内存使用上限确定,如每个并发进程分别设置了上限,则所有进程累加得到执行一次的最大内存。此外,作业执行一次的最大内存也可以设置为固定值,每次执行都相同,该固定值对应了所有并发进程的内存使用上限。
[0047]
得到作业的当前使用内存和最大内存之后,确定作业的内存使用占比。内存使用占比,参与上述与阈值的比较,以确定是否为待调整配置的目标作业。
[0048]
在一个实施例中,所述作业信息,还包括:作业信息获取的时间戳、作业标识和用户标识。具体可参见表1,作为方案的完善,可进一步获取作业信息获取的时间戳、作业标识和用户标识。时间戳可作为内存占比时效性分析的依据,作业标识和用户标识,可用于第一告警和第二告警的准确发送。
[0049]
在一个实施例中,在发出第一告警的预设时长后,未检测到用户的降低所述目标作业的最大内存的操作,执行按比例降低所述目标作业的最大内存的操作,并向用户发送内存降低的提示信息。
[0050]
若用户并不执行降低目标作业内存配置的操作,则执行临时降低该作业标识内存
的操作。例如,第一阈值为75%,降低的比例为原最大值的80%。从而可以释放出20%的内存,并不影响该作业标识的正常运行。同时,向用户发送内存降低的提示信息,若该配置不合理,用户可及时进行调整。
[0051]
下面对本发明提供的内存管理装置进行描述,下文描述的内存管理装置与上文描述的内存管理方法可相互对应参照。
[0052]
图2是本发明提供的内存管理装置的结构示意图,如图2所示,该内存管理装置包括:作业信息获取模块201、内存占比获取模块202和内存配置管理模块203。其中,作业信息获取模块201用于获取每个作业的作业信息,所述作业信息包括当前使用内存和当前配置的最大内存;内存占比获取模块202用于根据所述当前使用内存和所述最大内存,确定每个作业的当前内存使用占比;内存配置管理模块203用于根据每个作业的所述当前内存使用占比是否超过第一阈值和/或每个作业的所述当前内存使用占比超过第一阈值的时长,确定待进行内存配置调整的目标作业。
[0053]
本发明实施例提供的装置实施例是为了实现上述各方法实施例的,具体流程和详细内容请参照上述方法实施例,此处不再赘述。
[0054]
本发明实施例提供的内存管理装置,通过当前使用内存和最大内存得到内存使用占比,可以监控所有作业的内存配置是否存在问题,对于问题性作业,可以及时告知用户修改内存配置或者优化作业逻辑。可结合邮件等可视化的方式,及时告知用户存在问题作业,从而有利于减少大数据集群的内存浪费情况。
[0055]
图3是本发明提供的电子设备的结构示意图,如图3所示,该电子设备可以包括:处理器(processor)301、通信接口(communications interface)302、存储器(memory)303和通信总线304,其中,处理器301,通信接口302,存储器303通过通信总线304完成相互间的通信。处理器301可以调用存储器303中的逻辑指令,以执行内存管理方法,该方法包括:获取每个作业的作业信息,所述作业信息包括当前使用内存和当前配置的最大内存;根据所述当前使用内存和所述最大内存,确定每个作业的当前内存使用占比;根据每个作业的所述当前内存使用占比是否超过第一阈值和/或每个作业的所述当前内存使用占比超过所述第一阈值的时长,确定待进行内存配置调整的目标作业。
[0056]
此外,上述的存储器303中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read

only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0057]
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的内存管理方法,该方法包括:获取每个作业的作业信息,所述作业信息包括当前使用内存和当前配置的最大内存;根据所述当前使用内存和所述最大内存,确定每个作业的当前内存使用占比;根据每个作业的所
述当前内存使用占比是否超过第一阈值和/或每个作业的所述当前内存使用占比超过所述第一阈值的时长,确定待进行内存配置调整的目标作业。
[0058]
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的内存管理方法,该方法包括:获取每个作业的作业信息,所述作业信息包括当前使用内存和当前配置的最大内存;根据所述当前使用内存和所述最大内存,确定每个作业的当前内存使用占比;根据每个作业的所述当前内存使用占比是否超过第一阈值和/或每个作业的所述当前内存使用占比超过所述第一阈值的时长,确定待进行内存配置调整的目标作业。
[0059]
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0060]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0061]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1