CN113296962B - 内存管理方法、装置、设备及存储介质 - Google Patents
内存管理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN113296962B CN113296962B CN202110845682.6A CN202110845682A CN113296962B CN 113296962 B CN113296962 B CN 113296962B CN 202110845682 A CN202110845682 A CN 202110845682A CN 113296962 B CN113296962 B CN 113296962B
- Authority
- CN
- China
- Prior art keywords
- memory
- thread
- written
- global
- data
- 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.)
- Active
Links
- 238000007726 management method Methods 0.000 title claims abstract description 203
- 238000012545 processing Methods 0.000 claims abstract description 243
- 238000000034 method Methods 0.000 claims abstract description 72
- 230000036961 partial effect Effects 0.000 claims description 34
- 238000004590 computer program Methods 0.000 claims description 15
- 230000007246 mechanism Effects 0.000 claims description 15
- 238000004422 calculation algorithm Methods 0.000 claims description 6
- 238000005201 scrubbing Methods 0.000 claims description 3
- 230000000087 stabilizing effect Effects 0.000 abstract description 2
- 230000002349 favourable effect Effects 0.000 abstract 1
- 230000008569 process Effects 0.000 description 40
- 238000010586 diagram Methods 0.000 description 18
- 238000011010 flushing procedure Methods 0.000 description 17
- 238000006243 chemical reaction Methods 0.000 description 13
- 230000000694 effects Effects 0.000 description 12
- 238000004891 communication Methods 0.000 description 8
- 230000000670 limiting effect Effects 0.000 description 7
- 238000004458 analytical method Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000002452 interceptive effect Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000007405 data analysis Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000003068 static effect Effects 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
-
- 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/5022—Mechanisms to release 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/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/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
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 Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种内存管理方法、装置、设备及存储介质,内存管理方法包括:利用中央内存管理器获取数据处理请求,建立数据处理请求所对应的至少一个待写出线程,确定至少一个待写出线程各自对应的本地内存管理器;在本地内存管理器执行待写出线程时,确定待写出线程所对应的内存开销信息,并将待写出线程所对应的内存开销信息发送至中央内存管理器;利用中央内存管理器基于所有待写出线程所对应的内存开销信息进行内存管理操作。本申请所提供的技术方案,能够在高并发多路写出中,解决对内存开销完全无保护的问题,这样不仅有利于稳定系统的内存开销、保证文件写出格式正确,并且有利于提高数据处理操作的质量和效率。
Description
技术领域
本申请涉及内存处理技术领域,尤其涉及一种内存管理方法、装置、设备及存储介质。
背景技术
在大数据系统应用的过程中,高并发多路写出parquet格式文件是非常常见的应用场景,在该场景下,同一时刻多个parquet文件都在写出,这样parquet文件都会在内存中积攒数据,在内存中积攒的数据接近一预设限值时会进行一次数据刷盘操作,这样极大增加了内存消耗峰值,容易导致内存溢出。
发明内容
本申请实施例提供了一种内存管理方法、装置、设备及存储介质,能够解决对内存开销完全无保护的问题,稳定控制整个数据系统的内存开销,保证了内存管理方法使用的安全稳定性。
第一方面,本申请实施例提供了一种内存管理方法,包括:
利用中央内存管理器获取数据处理请求,建立所述数据处理请求所对应的至少一个待写出线程,确定所述至少一个待写出线程各自对应的本地内存管理器;
在本地内存管理器执行所述待写出线程时,确定所述待写出线程所对应的内存开销信息,并将所述待写出线程所对应的内存开销信息发送至中央内存管理器;
利用中央内存管理器基于所有待写出线程所对应的内存开销信息进行内存管理操作。
第二方面,本申请实施例提供了一种内存管理方法,包括:
获取数据处理请求;
建立所述数据处理请求相对应的至少一个待写出线程;
在执行所述至少一个待写出线程时,确定所述至少一个待写出线程各自对应的内存开销信息;
基于所有待写出线程所对应的内存开销信息进行内存管理操作。
第三方面,本申请实施例提供了一种内存管理装置,包括:
第一获取模块,用于获取数据处理请求;
第一建立模块,用于建立所述数据处理请求相对应的至少一个待写出线程;
第一确定模块,用于在执行所述至少一个待写出线程时,确定所述至少一个待写出线程各自对应的内存开销信息;
第一处理模块,用于基于所有待写出线程所对应的内存开销信息进行内存管理操作。
第四方面,本申请实施例提供了一种电子设备,包括:存储器、处理器;其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行时实现上述第二方面所示的内存管理方法。
第五方面,本发明实施例提供了一种计算机存储介质,用于储存计算机程序,所述计算机程序使计算机执行时实现上述第二方面所示的内存管理方法。
第六方面,本发明实施例提供了一种计算机程序产品,包括:存储有计算机指令的计算机可读存储介质,当所述计算机指令被一个或多个处理器执行时,致使所述一个或多个处理器执行上述第二方面所示的内存管理方法。
第七方面,本发明实施例提供了一种内存管理方法,包括:
获取全局内存查询请求和至少一个待写出线程各自对应的内存开销信息;
基于所述全局查询请求和所有待写出线程所对应的内存开销信息,确定全局内存信息;
基于所述全局内存信息进行内存管理操作。
第八方面,本发明实施例提供了一种内存管理装置,包括:
第二获取模块,用于获取全局内存查询请求和至少一个待写出线程各自对应的内存开销信息;
第二确定模块,用于基于所述全局查询请求和所有待写出线程所对应的内存开销信息,确定全局内存信息;
第二处理模块,用于基于所述全局内存信息进行内存管理操作。
第九方面,本申请实施例提供了一种电子设备,包括:存储器、处理器;其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行时实现上述第七方面所示的内存管理方法。
第十方面,本发明实施例提供了一种计算机存储介质,用于储存计算机程序,所述计算机程序使计算机执行时实现上述第七方面所示的内存管理方法。
第十一方面,本发明实施例提供了一种计算机程序产品,包括:存储有计算机指令的计算机可读存储介质,当所述计算机指令被一个或多个处理器执行时,致使所述一个或多个处理器执行上述第七方面所示的内存管理方法。
第十二方面,本发明实施例提供了一种内存管理装置,包括:
中央内存管理器,用于获取数据处理请求,建立所述数据处理请求所对应的至少一个待写出线程,确定所述至少一个待写出线程各自对应的本地内存管理器;
本地内存管理器,与所述中央内存管理器通信连接,用于在执行所述待写出线程时,确定所述待写出线程各自对应的内存开销信息,并将所述待写出线程各所对应的内存开销信息发送至中央内存管理器;
所述中央内存管理器,用于基于所有待写出线程所对应的内存开销信息进行内存管理操作。
本申请实施例提供的技术方案,通过中央内存管理器获取数据处理请求,而后建立数据处理请求所对应的至少一个待写出线程,在本地内存管理器执行至少一个待写出线程时,可以确定至少一个待写出线程各自对应的内存开销信息,并将内存开销信息发送至中央内存管理器;而后中央内存管理器可以基于所有待写出线程所对应的内存开销信息进行内存管理操作,从而有效地实现了一种全新的内存管理与保护机制,该机制能够在高并发多路写出的场景中,解决对内存开销完全无保护的问题,这样不仅有利于稳定整个数据系统的内存开销、并保证文件写出格式正确,另外,还有效地保证了数据系统使用的安全性和稳定性,并且也提高了数据处理操作的质量和效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种中央内存管理器与本地内存管理器的连接示意图;
图2为本申请实施例提供的一种内存管理方法的信令交互示意图;
图3为本申请实施例提供的一种内存管理方法的流程示意图;
图4为本申请实施例提供的在本地内存管理器执行所述至少一个待写出线程时,确定所述至少一个待写出线程各自对应的内存开销信息的流程示意图;
图5为本申请实施例提供的建立所述数据处理请求所对应的至少一个待写出线程的流程示意图一;
图6为本申请实施例提供的建立所述数据处理请求所对应的至少一个待写出线程的流程示意图二;
图7为本申请实施例提供的另一种内存管理方法的流程示意图;
图8为本申请实施例提供的控制所述目标处理线程执行数据刷盘操作的流程示意图;
图9为本申请实施例提供的又一种内存管理方法的流程示意图;
图10为本申请实施例提供的一种内存管理方法的流程示意图;
图11为本申请实施例提供的一种内存管理方法的流程示意图;
图12为本申请应用实施例提供的一种内存管理方法的示意图;
图13为本申请实施例提供的一种内存管理装置的结构示意图;
图14为本申请实施例提供的另一种内存管理装置的结构示意图;
图15为图14所示的内存管理装置所对应的电子设备的结构示意图;
图16为本申请实施例提供的又一种内存管理装置的结构示意图;
图17为图16所示的内存管理装置所对应的电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种,但是不排除包含至少一种的情况。
应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。
术语定义:
联机分析处理(Online Analytical Processing,简称OLAP),是一种软件技术,它使分析人员能够迅速、一致、交互地从各个方面观察信息,以达到深入理解数据的目的。
Parquet:是一种支持嵌套结构的列式存储格式,支持高压缩、低io、映射下推、谓词下推等特性,是Hadoop生态圈中主流的列式存储格式。
另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。
为了方便本领域技术人员理解本申请实施例提供的技术方案,下面对相关技术进行说明:
在联机分析处理OLAP或者大数据分析的应用场景中,数据处理量大且字段多,但每次查询只需要针对其中几个字段,这时由于列式存储格式parquet具有与语言无关、平台无关,不需要与任何数据处理架构进行绑定操作,对数据的压缩效果良好的优势,并且parquet可以使用映射下推和谓词下推等特性减少数据扫描量、提升查询性能。因此,列式存储格式parquet是比较好的选择,但是在parquet文件写入的过程中,需要在内存积攒数据,这样会对内存消耗产生极大的影响。
通过阅读parquet底层代码的实现逻辑可知,写出线程parquet writer的内部数据通常是先写入内存缓存,当内存缓存接近预设限值(默认128M)时,会执行一次数据刷盘操作。而在联机分析处理OLAP或者大数据分析的应用场景中,高并发多路写出parquet格式文件是比较常见的应用场景,例如:插入动态分区的Parquet表,在该场景中,同一时刻多个parquet文件都在写出,它们都会在内存中积攒数据,在内存中积攒的数据接近设定限值时,执行数据刷盘操作,这样极大增加了内存消耗峰值,容易导致内存溢出。
为了解决上述技术问题,相关技术提供了一种内存管理方式,其具体可以应用在Spark生态圈、hive生态圈中,具体的,上述内存管理方式主要是通过控制任务并发度,并配置用于确定是否进行刷盘操作的预设限值的大小来降低全局内存消耗,实际上就是通过控制全局parquet写出线程的数量以及每个parquet写出线程的内存缓存占用来降低全局内存消耗。
但是,上述实现方式不能系统地对全局的parquet写出进程进行内存管理,因此始终存在内存溢出的风险,例如:当存在多个客户端同时进行内存访问操作时,虽然单一客户端下所对应的parquet写出线程的数量得到有效限制,但是若进行访问操作的客户端数量比较大,也会容易出现内存溢出的风险。
为了解决在OLAP场景或者大数据分析处理的场景中,高并发多路写出以parquet格式存储的外部数据表期间,针对parquet写出进程的内存开销极大、多文件并发写出时可能导致内存溢出的问题,本实施例提供了一种内存管理方法、装置及设备,其中,内存管理方法的执行主体可以为内存管理系统,该内存管理系统中可以包括一个中央内存管理器和多个本地内存管理器,参考附图1所示,中央内存管理器分别与多个本地内存管理器通信连接,而每个本地内存管理器用于对所对应的线程进行管理和维护操作,例如:待处理的写出进程包括:进程1、进程2、进程3和进程n,进程1可以对应有本地内存管理器1,进程2可以对应有本地内存管理器2,进程3可以对应有本地内存管理器3,进程n可以对应有本地内存管理器n。具体的,参考附图2所示,在内存管理系统执行内存管理方法时,可以包括如下步骤:
利用中央内存管理器获取数据处理请求,其中,数据处理请求可以是客户端发送至内存管理系统的,从而使得中央内存管理器可以获取到数据处理请求,在获取到数据处理请求之后,可以基于数据处理请求建立至少一个待写出线程。
在建立至少一个待写出线程之后,可以利用本地内存管理器执行待写出线程;在执行至少一个待写出线程时,可以确定至少一个待写出线程各自对应的内存开销信息,并将至少一个待写出线程各自对应的内存开销信息发送至中央内存管理器。
在中央内存管理器获取到各个本地内存管理器所发送的内存开销信息之后,可以对所有的内存开销信息进行统计,而后可以基于所有待写出线程所对应的内存开销信息进行内存管理操作,其中,内存管理操作可以包括控制某一个进程保持当前的数据处理操作、控制某一个进程的数据执行刷盘操作,以释放所占用的内存资源,避免内存溢出情况的出现。
本实施例提供的技术方案,通过中央内存管理器获取数据处理请求,而后建立数据处理请求所对应的至少一个待写出线程,在本地内存管理器执行至少一个待写出线程时,可以确定至少一个待写出线程各自对应的内存开销信息,并将内存开销信息发送至中央内存管理器;而后中央内存管理器可以基于所有待写出线程所对应的内存开销信息进行内存管理操作,从而有效地实现了一种全新的内存管理与保护机制,该机制能够在高并发多路写出的场景中,解决对内存开销完全无保护的问题,这样不仅有利于稳定整个数据系统的内存开销、并保证文件写出格式正确,另外,还有效地保证了数据系统使用的安全性和稳定性,并且也提高了数据处理操作的质量和效率。
下面通过一个示例性的应用场景具体说明本申请各个实施例提供的内存管理方法、装置及设备。
图3为本申请实施例提供的一种内存管理方法的流程示意图;参考附图3所示,本实施例提供了一种内存管理方法,该方法的执行主体可以为内存管理装置,可以理解的是,该内存管理装置可以实现为软件、或者软件和硬件的组合。具体的,内存管理装置可以包括本地内存管理器和与本地内存管理器通信连接的中央内存管理器,在内存管理装置执行内存管理方法时,包括以下步骤:
步骤S301:利用中央内存管理器获取数据处理请求,建立数据处理请求所对应的至少一个待写出线程,确定与至少一个待写出线程相对应的本地内存管理器;
步骤S302:在本地内存管理器执行待写出线程时,确定待写出线程所对应的内存开销信息,并将待写出线程所对应的内存开销信息发送至中央内存管理器。
步骤S303:利用中央内存管理器基于所有待写出线程所对应的内存开销信息进行内存管理操作。
下面对上述各个步骤进行详细说明:
步骤S301:利用中央内存管理器获取数据处理请求,建立数据处理请求所对应的至少一个待写出线程,确定与至少一个待写出线程各自对应的本地内存管理器。
其中,中央内存管理器用于对统计系统的全局内存消耗信息,并基于全局内存消耗信息对系统内存进行管理和控制。当存在数据处理需求时,可以生成与数据处理需求相对应的数据处理请求,具体的,生成数据处理请求的执行主体可以为客户端,在客户端生成数据处理请求时,一种实现的方式为,客户端上设置有交互界面,用户可以在交互界面上输入执行操作,通过执行操作可以生成数据处理请求;另一种实现的方式为:客户端上设置有预设接口,通过预设接口可以接收到其他设备发送的数据处理请求。在客户端生成或者获取到数据处理请求之后,可以将数据处理请求发送至内存管理装置,从而使得内存管理装置中的中央内存管理器可以获取数据处理请求。
在获取到数据处理请求之后,可以基于数据处理请求建立至少一个待写出线程,可以理解的是,一个数据处理请求可以建立一个或多个待写出线程,不同的数据处理请求可以对应有不同数量的待写出线程。在建立至少一个待写出线程之后,可以控制各个待写出线程执行数据处理操作,为了能够及时获取到各个待写出线程的执行信息,可以确定至少一个待写出线程各自对应的本地内存管理器,一个本地内存管理器可以对应有一个待写出线程,不同的待写出线程可以对应有不同的本地内存管理器。
步骤S302:在本地内存管理器执行待写出线程时,确定待写出线程所对应的内存开销信息,并将待写出线程所对应的内存开销信息发送至中央内存管理器。
其中,本地内存管理器用于对待写出进程的内存开销信息进行统计,并将统计的内存开销信息发送至中央内存管理器,此外,本地内存管理器还用于对进程的数据处理操作进行控制。对于本地内存管理器而言,数量可以为一个或多个,在本地内存管理器的数量为多个时,多个本地内存管理器可以同时对多个进程的内存开销信息进行管理。
在建立数据处理请求所对应的至少一个待写出线程之后,可以利用本地内存管理器控制待写出线程执行数据处理操作。为了能够有效地对系统内存进行管理操作,在本地内存管理器执行待写出线程时,可以确定待写出线程所对应的内存开销信息。为了能够使得中央内存管理器可以获取到所有待写出线程所对应的内存开销信息,在本地内存管理器获取到各自所对应的待写出线程的内存开销信息之后,可以将待写出线程所对应的内存开销信息发送至中央内存管理器,从而使得中央内存管理器可以获取到所有本地内存管理器所发送的内存开销信息。
举例来说,建立的数据处理请求所对应的至少一个待写出线程包括:线程1、线程2、线程3和线程4,上述至少一个待写出线程各自对应有本地内存管理器,具体可以包括:与线程1相对应的本地内存管理器1、与线程2相对应的本地内存管理器2、与线程3相对应的本地内存管理器3、与线程4相对应的本地内存管理器4。
在本地内存管理器1执行线程1时,可以确定线程1相对应的内存开销信息1;在本地内存管理器2执行线程2时,可以确定线程2相对应的内存开销信息2;在本地内存管理器3执行线程3时,可以确定线程3相对应的内存开销信息3;在本地内存管理器4执行线程4时,可以确定线程4相对应的内存开销信息4。
在获取到内存开销信息1、内存开销信息2、内存开销信息3和内存开销信息4之后,可以将内存开销信息1、内存开销信息2、内存开销信息3和内存开销信息4发送至中央内存管理器,从而使得中央内存管理器可以获取到所有待写出线程所对应的内存开销信息。
步骤S303:利用中央内存管理器基于所有待写出线程所对应的内存开销信息进行内存管理操作。
在中央内存管理器获取到所有待写出线程所对应的内存开销信息之后,可以利用中央内存管理器基于所有待写出线程所对应的内存开销信息进行内存管理操作。在一些实例中,基于所有待写出线程所对应的内存开销信息进行内存管理操作可以包括:基于所有待写出线程所对应的内存开销信息确定全局开销信息,基于全局开销信息进行内存管理操作,具体的,可以将全局开销信息与预设内存阈值进行分析比较,在全局开销信息小于预设内存阈值时,则说明此时不存在内存溢出的风险,进而可以不执行任何操作;在全局开销信息大于或等于预设内存阈值时,则说明此时存在内存溢出的风险,进而可以基于全局开销信息控制至少一部分的待写出线程执行数据刷盘操作,这样可以释放上述部分的待写出线程所占用的内存资源,进而会避免出现内存溢出的情况。
当然的,本领域技术人员也可以采用其他的方式来实现基于所有待写出线程所对应的内存开销信息进行内存管理操作,只要能够保证内存管理操作进行的稳定可靠性即可,在此不再赘述。
本实施例提供的内存管理方法,通过中央内存管理器获取数据处理请求,而后建立数据处理请求所对应的至少一个待写出线程,在本地内存管理器执行至少一个待写出线程时,可以确定至少一个待写出线程各自对应的内存开销信息,并将内存开销信息发送至中央内存管理器;而后中央内存管理器可以基于所有待写出线程所对应的内存开销信息进行内存管理操作,从而有效地实现了一种全新的内存管理与保护机制,该机制能够在高并发多路写出的场景中,解决对内存开销完全无保护的问题,这样不仅有利于稳定整个数据系统的内存开销、并保证文件写出格式正确,另外,还有效地保证了数据系统使用的安全性和稳定性,并且也提高了数据处理操作的质量和效率。
图4为本申请实施例提供的在本地内存管理器执行至少一个待写出线程时,确定至少一个待写出线程各自对应的内存开销信息的流程示意图;参考附图4所示,本实施例提供了一种确定至少一个待写出线程各自对应的内存开销信息的实现方式,具体的,本实施例中的在本地内存管理器执行待写出线程时,确定待写出线程所对应的内存开销信息可以包括:
步骤S401:在利用本地内存管理器执行待写出线程时,记录待写出线程所对应的数据写出行数。
步骤S402:在数据写出行数满足设定阈值时,确定待写出线程所对应的内存开销信息。
其中,在利用本地内存管理器执行待写出线程时,为了能够及时了解待写出线程所占用的内存资源,可以记录待写出线程所对应的数据写出行数,可以理解的是,随着待写出线程的执行时间的增加,数据写出行数也会不断增加。
在获取到待写出线程所对应的数据写出行数之后,可以将数据写出行数与设定阈值进行分析比较,在数据写出行数大于或等于设定阈值时,即数据写出行数满足设定阈值所对应的条件,则说明此时的待写出进程已经执行了一定数量的数据,为了能够提高内存开销信息统计的质量和效率,则可以在数据写出行数满足设定阈值所对应的条件时,确定待写出进程所对应的内存开销信息。
在确定待写出线程所对应的内存开销信息之后,本实施例中的方法还可以包括:对内存开销信息进行存储。当获取到不同时刻所对应的多个内存开销信息时,可以基于当前时刻所对应的内存开销信息对历史时刻所对应的内存开销信息进行更新操作。举例来说,在T1时刻时,获取到内存开销信息1;在T2时刻时,获取到内存开销信息2。在T2时刻(相当于当前时刻)晚于T1时刻(相当于历史时刻)时,则可以将历史时刻存储的内存开销信息1更新为当前时刻的内存开销信息2,从而有效地实现了在线程开始执行写出任务时,可以每隔一定的数据行数之后,确定或者更新待写出线程所对应的内存开销信息。
另外,在待写出进程包括parquet写出线程时,确定待写出线程所对应的内存开销信息可以包括:利用反射机制调用parquet算法内包括的内存计算接口;基于内存计算接口,确定待写出线程所对应的内存开销信息。
其中,在待写出进程包括parquet写出线程时,由于parquet算法中配置有内存计算接口,该内存计算结果口用于确定待写出线程所对应的内存开销信息。因此,在待写出线程所对应的数据写出行数满足设定阈值(数据写出行数大于或等于设定阈值)时,可以利用反射机制调用parquet算法内所包括的内存计算接口,而后利用内存计算接口来确定待写出线程所对应的内存开销信息,从而有效地保证了对内存开销信息进行获取的准确可靠性。
当然的,本领域技术人员也可以采用其他的方式来确定待写出线程所对应的内存开销信息,只要能够保证对待写出线程所对应的内存开销信息进行确定的准确可靠性即可,在此不再赘述。
本实施例中,在利用本地内存管理器执行待写出线程时,通过记录待写出线程所对应的数据写出行数,在数据写出行数满足设定阈值时,则可以确定待写出线程所对应的内存开销信息,有效地实现了在线程开始执行写出任务时,可以每隔一定的数据行数确定待写出线程所对应的内存开销信息,进而保证了对内存开销信息进行确定的质量和效率,有利于提高基于内存开销信息进行内存管理操作的稳定可靠性。
图5为本申请实施例提供的建立数据处理请求所对应的至少一个待写出线程的流程示意图一;参考附图5所示,本实施例提供了一种建立数据处理请求所对应的至少一个待写出线程的实现方式,具体的,本实施例中的建立数据处理请求所对应的至少一个待写出线程可以包括:
步骤S501:确定数据处理请求所对应的待处理数据。
步骤S502:对待处理数据进行批次划分操作,获得至少一批子数据。
步骤S503:基于至少一批子数据,建立至少一个待写出线程。
其中,在获取到数据处理请求之后,可以确定数据处理请求所对应的待处理数据,不同的数据处理请求所对应的待处理数据的数据量可以相同或者不同。在确定数据处理请求所对应的待处理数据之后,为了提高数据处理的质量和效率,可以对待处理数据进行批次划分操作,获得至少一批子数据,在获取到至少一批子数据之后,可以对至少一批子数据进行分析处理,以建立至少一个待写出线程。在一些实例中,一个待写出线程可以对应同一批子数据,并且,不同的子数据所对应的数据行数相同。
举例来说,在获取到数据处理请求之后,基于数据处理请求所确定的待处理数据可以包括待处理数据,其中,待处理数据包括100万行数据、1万行数据、10万行数据等等,而后可以按照预设规则对待处理数据进行批次划分操作,例如:可以每100行数据划分为一批子数据,或者每200行数据划分为一批子数据,或者每300行数据划分为一批子数据,从而可以获得至少一批子数据。
在待处理数据包括400行数据,而后将待处理数据按照每100行数据划分为一批子数据时,此时的至少一批子数据可以包括:第一批子数据、第二批子数据、第三批子数据和第四批子数据,上述各个批次的子数据中可以包括相同的数据处理行数。而后可以基于上述所获得的至少一批子数据来建立至少一个待写出线程,具体的,第一批子数据可以建立待写出线程1,第二批子数据可以建立待写出线程2,第三批子数据可以建立待写出线程3,第四批子数据可以建立待写出线程4;从而有效地实现了对待写出线程可以准确地建立操作。
本实施例中,通过确定数据处理请求所对应的待处理数据,而后对待处理数据进行批次划分操作,获得至少一批子数据,并基于至少一批子数据建立至少一个待写出线程,从而有效地实现了对待写出线程进行准确地建立操作,提高了内存管理操作的质量和效率。
图6为本申请实施例提供的建立数据处理请求所对应的至少一个待写出线程的流程示意图二;参考附图6所示,本实施例提供了另一种建立数据处理请求所对应的至少一个待写出线程的实现方式,具体的,本实施例中的建立数据处理请求所对应的至少一个待写出线程可以包括:
步骤S601:获取数据处理请求所对应的数据写入方式。
步骤S602:在数据写入方式为流式写入方式时,则获取数据处理请求相对应的临时文件。
步骤S603:在临时文件的数据量满足文件切换阈值时,则将临时文件转换为parquet文件。
步骤S604:基于parquet文件生成数据处理请求相对应的至少一个待写出线程。
对于内存管理装置而言,写入至内存管理装置的数据可以对应有不同的数据写入方式,例如:流式写入方式或者parquet文件格式;在待处理请求所对应的数据为parquet文件格式时,可以利用上述实施例的实现方式来建立至少一个待写出线程。在待处理请求所对应的数据为流式写入方式时,为了保证数据处理的质量以及内存管理系统的兼容性,则可以对待处理请求所对应的数据进行格式转换操作,即将数据转换为parquet文件格式,而后便于基于parquet文件格式进行内存管理操作。
因此,为了能够保证内存管理操作运行的稳定性,在获取到数据处理请求之后,可以先对数据处理请求进行分析处理,以获取数据处理请求所对应的数据写入方式,不同的数据处理请求可以对应有不同的数据写入方式,数据写入方式可以包括流式写入方式。在数据写入方式为流式写入方式时,可以获取数据处理请求相对应的待数据处理,而后将待处理数据存储为临时文件,从而可以获取到与数据处理请求相对应的临时文件。
在获取到临时文件之后,可以确定临时文件所对应的数据量,而后可以将临时文件所对应的数据量与文件切换阈值进行分析比较,在临时文件的数据量大于或等于文件切换阈值时,即说明临时文件的数据量满足文件切换阈值,则可以将临时文件转换为parquet文件。在临时文件的数据量小于文件切换阈值时,则可以不进行文件的转换操作。
在获取到parquet文件之后,可以对parquet文件进行分析处理,以生成与数据处理请求相对应的至少一个待写出线程,从而有效地保证了对至少一个待写出线程进行建立的稳定可靠性。
本实施例中,通过获取数据处理请求所对应的数据写入方式,在数据写入方式为流式写入方式时,则获取数据处理请求相对应的临时文件,在临时文件的数据量满足文件切换阈值时,则将临时文件转换为parquet文件,并可以基于parquet文件生成数据处理请求相对应的至少一个待写出线程,从而有效地实现了在待处理请求的数据为流式写入方式时,可以先将待处理请求所对应的数据存储为临时文件,而后将临时文件转换为parquet文件,并基于parquet文件来建立至少一个待写出线程,这样不仅保证了对待写出线程可以准确地建立操作,并且还有效地拓展了该内存管理方法的适用范围。
图7为本申请实施例提供的另一种内存管理方法的流程示意图;在上述实施例的基础上,参考附图7所示,本实施例的方法还可以包括:
步骤S701:利用本地内存管理器获取待写出线程所对应的数据处理状态,在数据处理状态为处理完毕时,则生成全局内存查询请求,并将全局内存查询请求发送至中央内存管理器。
步骤S702:利用中央内存管理器基于全局内存查询请求和所有待写出线程所对应的内存开销信息,确定全局内存信息,并基于全局内存信息进行内存管理操作。
其中,在本地内存管理器执行待写出线程时,可以对应有不同的数据处理状态,例如:数据完毕状态、数据处理中状态等等。为了能够准确地实现内存管理操作,可以利用本地内存管理器获取待写出线程所对应的数据处理状态,在一些实例中,本地内存管理器中可以设置有状态机,通过读取状态机中的数据标识可以获取到待写出线程所对应的数据处理状态。例如:在状态机中的数据处理标识为“1”时,则可以确定数据处理状态为处理完毕状态;在状态机中的数据处理标识为“0”时,则可以确定数据处理状态为数据处理中状态。
在数据处理状态为处理完毕时,则说明本地内存管理器所对应的待处理进程已经执行完毕,此时则可以进行全局内存开销信息的查询操作。具体的,可以先生成全局内存查询请求,该全局内存查询请求用于向中央内存管理器请求进行全局内存的查询操作。由于全局内存信息只存储在中央内存管理器中,本地内存管理器中只存储有各自待写出线程所对应的内存开销信息,因此,为了能够实现全局内存信息的查询操作,在本地内存管理器生成全局内存查询请求之后,可以将全局内存查询请求发送至中央内存管理器。在中央内存管理器获取到全局内存查询请求之后,可以基于全局内存查询请求和所有待写出线程所对应的内存开销信息来确定全局内存信息,在确定全局内存信息之后,可以基于全局内存信息进行内存管理操作。
举例来说,在本地内存管理器包括管理器1、管理器2和管理器3时,管理器1、管理器2和管理器3与中央内存管理器通信连接,在t1时刻时,管理器2中待写出线程所对应的数据处理状态为处理完毕时,则可以生成全局内存查询请求1,而后管理器2可以将全局内存查询请求1发送至中央内存管理器;在t2时刻时,管理器1和管理器3中待写出线程所对应的数据处理状态均为处理完毕时,则管理器1和管理器3可以分别生成全局内存查询请求2和全局内存查询请求3,而后管理器1可以将全局内存请求2发送至中央内存管理器,管理器3可以将全局内存请求3发送至中央内存管理器。
在中央内存管理器获取到t1时刻的全局内存查询请求1之后,经过查询可以获取到全局内存信息1;在中央内存管理器获取到t2时刻的全局内存查询请求2和全局内存查询请求3之后,可以获取到全局内存信息2,其中,全局内存信息1和全局内存信息2可以相同或者不同。
在获取到全局内存信息之后,可以基于全局内存信息进行内存管理操作,在一些实例中,基于全局内存信息进行内存管理操作可以包括:在全局内存信息大于或等于预设内存阈值时,则获取所有待写出线程各自对应的全局内存占比信息;基于全局内存占比信息,在所有待写出线程中确定设定数量的目标处理线程,所有目标处理线程所对应的全局内存占比信息大于或等于预设阈值;控制目标处理线程执行数据刷盘操作。
在获取到全局内存信息之后,可以将全局内存信息与预设内存阈值进行分析比较,在全局内存信息大于或等于预设内存阈值时,则说明此时内存管理系统中的内存消耗资源比较大,此时则可以控制部分的待写出线程执行数据刷盘操作。具体的,为了能够有效地避免出现内存溢出的情况,可以按照以下方式来确定需要执行数据刷盘操作的待写出线程:在全局内存信息大于或等于预设内存阈值时,则可以获取所有待写出线程各自对应的全局内存占比信息。在获取到全局内存占比信息之后,可以对全局内存占比信息进行分析处理,以在所有待写出线程中确定设定数量的目标处理线程,所确定的所有目标处理线程所对应的全局内存占比信息大于或等于预设阈值,预设阈值可以为10%、5%或者15%等等。
举例来说,在预设内存阈值为70%的内存最大值时,在获取到全局内存信息之后,若全局内存信息大于或等于70%的最大内存限值,则说明此时内存管理系统中的内存消耗资源比较大,需要控制至少部分的待写出线程执行数据刷盘操作。假设所有待处理线程的全局内存信息可以包括:线程1所对应的内存开销信息为17M,线程2所对应的内存开销信息为15M,线程3所对应的内存开销信息为20M,线程4所对应的内存开销信息为8M,线程5所对应的内存开销信息为20M,最大内存限值为100M,预设内存阈值为70%*100M=70M,上述所有待处理线程的全局内存信息为80>70,因此,需要确定部分的待写出线程执行数据刷盘操作。
具体的,为了能够准确地确定需要执行数据刷盘操作的待写出线程,可以先确定所有待写出线程各自对应的全局内存占比信息,即线程1所对应的全局内存占比信息为17/80=0.2125,线程2所对应的全局内存占比信息为15/80=0.1875,线程3所对应的全局内存占比信息为20/80=0.25,线程4所对应的全局内存占比信息为8/80=0.1,线程5所对应的全局内存占比信息为20/80=0.25。基于全局内存占比信息可以对上述的待写出线程进行排序,线程3-线程5-线程1-线程2-线程4。
在获取到所有待写出线程的排序信息之后,可以获取全局内存占比信息为0.3的待写出线程,即可以获取到线程3,并将线程3确定为目标处理线程,而后可以控制目标处理线程执行数据刷盘操作,从而可以释放与线程3所对应的内存消耗资源,从而可以有效地避免内存溢出的情况出现;在全局内存占比信息为0.5时,则所确定的需要执行数据刷盘操作的待写出线程包括线程3和线程5,而后可以将线程3和线程5确定为目标处理线程,而后可以控制目标处理线程执行数据刷盘操作,从而可以释放与线程3和线程5所对应的内存消耗资源,从而可以有效地避免内存溢出的情况出现。
本实施例中,通过本地内存管理器获取待写出线程所对应的数据处理状态,在数据处理状态为处理完毕时,则生成全局内存查询请求,并将全局内存查询请求发送至中央内存管理器,而后利用中央内存管理器基于全局内存查询请求和所有待写出线程所对应的内存开销信息,确定全局内存信息,并基于全局内存信息进行内存管理操作,从而有效地避免了出现内存溢出的情况,保证了内存系统运行的稳定可靠性。
图8为本申请实施例提供的控制目标处理线程执行数据刷盘操作的流程示意图;在上述实施例的基础上,参考附图8所示,本实施例提供了一种控制目标处理线程执行数据刷盘操作实现方式,具体的,本实施例中的控制目标处理线程执行数据刷盘操作可以包括:
步骤S801:生成与目标处理线程相对应的线程列表,线程列表中包括所有目标处理线程所对应的目标文件句柄描述。
步骤S802:将线程列表发送至所有的本地内存管理器,以使本地内存管理器基于线程列表控制目标处理线程执行数据刷盘操作。
其中,在中央内存管理器获取到所有需要执行数据刷盘操作的目标处理线程之后,为了能够实现数据刷盘操作,中央内存管理器可以生成与目标处理线程相对应的线程列表,该线程列表中包括所有目标处理线程所对应的目标文件句柄描述。由于目标处理线程的数据刷盘操作只能由本地内存管理器来控制执行,因此,在生成与目标处理线程相对应的线程列表之后,可以将线程列表发送至所有的本地内存管理器,以使得本地内存管理器可以基于线程列表控制目标处理线程执行数据刷盘操作。
举例来说,在目标处理线程包括线程1和线程2时,线程1对应有本地内存管理器1,线程2对应有本地内存管理器2,在生成包括有线程1和线程2的线程列表时,可以将线程列表分别发送至所有的本地内存管理器(包括本地内存管理器1、本地内存管理器2、本地内存管理器3等等),从而使得所有的本地内存管理器可以分别基于线程列表控制所对应的线程执行数据刷盘操作。
在一些实例中,在本地内存管理器获取到线程列表之后,可以基于线程列表控制目标处理线程执行数据刷盘操作,具体的,基于线程列表控制目标处理线程执行数据刷盘操作可以包括:获取本地待写出线程所对应的文件句柄描述;在线程列表中包括与文件句柄描述相匹配的目标文件句柄描述时,则控制与目标文件句柄描述相对应的目标处理线程执行数据刷盘操作;在线程列表中不包括与文件句柄描述相匹配的目标文件句柄描述时,则忽略线程列表。
具体的,在本地内存管理器获取到线程列表之后,可以获取与本地内存管理器所负责的本地待写出线程所对应的文件句柄描述,在获取到文件句柄描述之后,可以将文件句柄描述与线程列表中所包括的目标文件句柄描述进行分析匹配,在线程列表中包括与文件句柄描述相匹配的目标文件句柄描述时,则可以控制与目标文件句柄描述相对应的目标处理线程执行数据刷盘操作;在线程列表中不包括与文件句柄描述相匹配的目标文件句柄描述时,则可以忽略线程列表。
举例来说,所有的本地内存管理器可以包括本地内存管理器1、本地内存管理器2、本地内存管理器3和本地内存管理器4,在线程列表中包括线程1和线程2时,线程1对应有本地内存管理器1,线程2对应有本地内存管理器2,线程3对应有本地内存管理器3,线程4对应有本地内存管理器4。在中央内存管理器生成线程列表之后,可以将所生成的线程列表发送至所有的本地内存管理器,在本地内存管理器1、本地内存管理器2、本地内存管理器3和本地内存管理器4获取到线程列表之后,上述各个本地内存管理器可以获取所对应的本地待写出线程所对应的文件句柄描述,即本地内存管理器1、本地内存管理器2、本地内存管理器3和本地内存管理器4可以分别获取到线程1所对应的文件句柄描述1,线程2所对应的文件句柄描述2,线程3所对应的文件句柄描述3,线程4所对应的文件句柄描述4。
在获取到上述的各个本地待写出线程所对应的文本句柄描述之后,可以将文本句柄描述与线程列表中所包括的目标文件句柄描述进行分析匹配,通过分析匹配可以确定线程列表中包括分别与线程1和线程2相对应的目标文件句柄描述,线程列表中不包括与线程3和线程4相对应的目标文件句柄描述。之后,本地内存管理器1和本地内存管理器2可以基于上述的分析匹配结果来控制线程1和线程2执行数据刷盘操作。
本实施例中,通过生成与目标处理线程相对应的线程列表,而后将线程列表发送至所有的本地内存管理器,在本地内存管理器获取到线程列表之后,可以基于线程列表控制目标处理线程执行数据刷盘操作,从而有效地实现了可以提前控制部分的线程执行数据刷盘操作,实现了至少部分内存资源的有效回收,进而可以有效降低内存溢出的风险。
图9为本申请实施例提供的又一种内存管理方法的流程示意图;在上述实施例的基础上,参考附图9所示,本实施例中的方法还可以包括:
步骤S901:利用中央内存管理器获取用于限定将临时文件转换为parquet文件的数量信息。
步骤S902:利用中央内存管理器基于数量信息进行内存管理操作。
在数据处理请求所对应的数据写入方式为流式写入方式时,为了能够避免内存溢出情况的出现,实现内存管理操作,需要对数据进行格式转换操作,在对数据进行转换操作时,会占用比较多的数据资源,为了避免在数据转换过程中出现内存溢出的情况,可以对数据转换过程中的文件转换数量进行限定,具体的,可以利用中央内存管理器获取用于限定临时文件转换为parquet文件的数量信息,可以理解的是,上述的数量信息可以是预先设置的参数,本实施例对于数量信息的具体数值范围不做限定,本领域技术人员可以根据具体的应用场景或者应用需求进行设置,例如:数量信息可以为100、50、20或者10等等。在获取到数量信息之后,利用中央内存管理器可以基于数量信息进行内存管理操作。
举例来说,客户端以流式写入方式进行内存访问操作所对应的临时文件数量为20个,在用于限定将临时文件转换为parquet文件的数量信息为10个时,那么在将上述的临时文件转换为parquet文件时,在一次数据转换操作过程中,只允许将10个临时文件转换为parquet文件,这样内存管理装置中的内存开销信息只由上述所生成的10个parquet文件所生成的,内存开销信息会比较小,其他的临时文件可以在下一次操作时进行文件转换操作,从而有效地避免了出现内存溢出的风险。
本实施例中,利用中央内存管理器获取用于限定将临时文件转换为parquet文件的数量信息,而后利用中央内存管理器基于数量信息进行内存管理操作,有效地提供了另一种内存管理操作的实现方式,具体是基于数量信息限定进行数据处理操作的parquet文件,这样在进行数据转换操作时,内存开销信息会比较小,从而有效地避免了出现内存溢出的风险。
图10为本申请实施例提供的一种内存管理方法的流程示意图;参考附图10所示,本实施例提供了一种内存管理方法,该方法的执行主体可以为内存管理装置,可以理解的是,该内存管理装置可以实现为软件、或者软件和硬件的组合。具体的,该内存管理方法可以包括以下步骤:
步骤S1001:获取数据处理请求。
当存在数据处理需求时,可以生成与数据处理需求相对应的数据处理请求,具体的,生成数据处理请求的执行主体可以为客户端,在客户端生成数据处理请求时,一种实现的方式为,客户端上设置有交互界面,用户可以在交互界面上输入执行操作,通过执行操作可以生成数据处理请求;另一种实现的方式为:客户端上设置有预设接口,通过预设接口可以接收到其他设备发送的数据处理请求。在客户端生成或者获取到数据处理请求之后,可以将数据处理请求发送至内存管理装置,从而使得内存管理装置中的中央内存管理器可以获取数据处理请求。
步骤S1002:建立数据处理请求相对应的至少一个待写出线程。
在获取到数据处理请求之后,可以建立数据处理请求所对应的至少一个待写出线程,可以理解的是,一个数据处理请求可以建立一个或多个待写出线程,不同的数据处理请求可以对应有不同数量的待写出线程。
具体的,本实施例中“建立数据处理请求相对应的至少一个待写出线程”的实现方式和实现效果与上述实施例中“建立数据处理请求相对应的至少一个待写出线程” 的实现方式和实现效果相类似,具体可参考上述陈述内容,在此不再赘述。
步骤S1003:在执行至少一个待写出线程时,确定至少一个待写出线程各自对应的内存开销信息。
在建立至少一个待写出线程时,可以控制上述所建立的待写出线程执行数据处理操作。在执行至少一个待写出线程时,可以对至少一个待写出线程进行分析处理,以确定至少一个待写出线程各自对应的内存开销信息,其中,本实施例中“确定至少一个待写出线程各自对应的内存开销信息”的实现方式和实现效果与上述实施例中“确定至少一个待写出线程各自对应的内存开销信息”的实现方式和实现效果相类似,具体可参考上述陈述内容,在此不再赘述。
步骤S1004:基于所有待写出线程所对应的内存开销信息进行内存管理操作。
在获取到所有待写出线程所对应的内存开销信息之后,可以基于所有待写出线程所对应的内存开销信息进行内存管理操作,在一些实例中,基于所有待写出线程所对应的内存开销信息进行内存管理操作可以包括:基于所有待写出线程所对应的内存开销信息确定全局开销信息,基于全局开销信息进行内存管理操作,具体的,可以将全局开销信息与预设内存阈值进行分析比较,在全局开销信息大于或等于预设内存阈值时,则可以基于全局开销信息控制至少一部分待写出线程执行数据刷盘操作,这样可以释放部分待写出线程所占用的内存资源,避免内存溢出情况的出现。
在一些实例中,基于所有待写出线程所对应的内存开销信息进行内存管理操作可以包括:获取待写出线程所对应的数据处理状态;在数据处理状态为处理完毕时,则生成全局内存查询请求;基于全局内存查询请求和所有待写出线程所对应的内存开销信息,确定全局内存信息;基于全局内存信息进行内存管理操作。
在一些实例中,控制目标处理线程执行数据刷盘操作可以包括:生成与目标处理线程相对应的线程列表,线程列表中包括所有目标处理线程所对应的目标文件句柄描述;获取本地待写出线程所对应的文件句柄描述;在线程列表中包括与文件句柄描述相匹配的目标文件句柄描述时,则控制与目标文件句柄描述相对应的目标处理线程执行数据刷盘操作;在线程列表中不包括与文件句柄描述相匹配的目标文件句柄描述时,则忽略线程列表。
需要注意的是,本实施例中“基于所有待写出线程所对应的内存开销信息进行内存管理操作”的实现方式和实现效果与上述实施例中“基于所有待写出线程所对应的内存开销信息进行内存管理操作”的实现方式和实现效果相类似,具体可参考上述陈述内容,在此不再赘述。
本实施例提供的内存管理方法,通过获取数据处理请求,建立数据处理请求相对应的至少一个待写出线程,在执行至少一个待写出线程时,确定至少一个待写出线程各自对应的内存开销信息,而后基于所有待写出线程所对应的内存开销信息进行内存管理操作,从而有效地实现了一种全新的内存管理与保护机制,该机制能够在高并发多路写出的场景中,解决对内存开销完全无保护的问题,这样不仅有利于稳定整个数据系统的内存开销、并保证文件写出格式正确,另外,还有效地保证了数据系统使用的安全性和稳定性,并且也提高了数据处理操作的质量和效率。
图11为本申请实施例提供的一种内存管理方法的流程示意图;参考附图11所示,本实施例提供了一种内存管理方法,该方法的执行主体可以为内存管理装置,可以理解的是,该内存管理装置可以实现为软件、或者软件和硬件的组合。具体的实现时,内存管理装置可以实现为中央内存管理器,在中央内存管理器执行该内存管理方法时,可以包括以下步骤:
步骤S1101:获取全局内存查询请求和至少一个待写出线程各自对应的内存开销信息。
步骤S1102:基于全局查询请求和所有待写出线程所对应的内存开销信息,确定全局内存信息。
步骤S1103:基于全局内存信息进行内存管理操作。
其中,中央内存管理器可以通信连接有多个本地内存管理器,当本地内存管理器所对应的数据处理状态满足设定条件时,可以生成全局内存查询请求,为了能够实现内存管理操作,本地内存管理器可以将所生成的全局内存查询请求发送至中央内存管理器,从而使得中央内存管理器可以获取到全局内存查询请求。
另外,本地内存管理器可以统计各自所对应的待写出线程的内存开销信息,在本地内存管理器获取到各自对应的待写出线程的内存开销信息之后,为了能够保证全局内存的管理操作的稳定可靠性,本地内存管理器可以将所获得的待写出线程的内存开销信息发送至中央内存管理器,从而使得中央内存管理器可以获取到至少一个待写出线程各自对应的内存开销信息。
在获取到全局内存查询请求和至少一个待写出线程各自对应的内存开销信息之后,可以基于全局查询请求和所有待写出线程所对应的内存开销信息确定全局内存信息,在获取到全局内存信息之后,可以基于全局内存信息进行内存管理操作,其中,本实施例中的“基于全局内存信息进行内存管理操作”的具体实现方式和实现效果与上述实施例中的“基于全局内存信息进行内存管理操作”的具体实现方式和实现效果相类似,具体可参考上述陈述内容,在此不再赘述。
本实施例提供的内存管理方法,通过获取全局内存查询请求和至少一个待写出线程各自对应的内存开销信息,而后基于全局查询请求和所有待写出线程所对应的内存开销信息来确定全局内存信息,并基于全局内存信息进行全局内存管理操作,从而有效地避免出现内存溢出的情况,保证了内存管理方法使用的稳定可靠性,进一步提高了该数据系统运行的安全可靠性。
具体应用时,本应用实施例提供了一种内存管理方法,该内存管理方法实现了一种全新的针对parquet格式的全局内存管理和保护机制,该内存管理方法能够在高并发多路写出的场景下,有效地解决在parquet格式写出时内存开销极大、多文件并发写出时可能导致内存溢出的问题,从而可以稳定控制整个联机分析处理系统的内存开销、并保证parquet文件写出格式正确,另外,该内存管理方法还能够解决对内存开销完全无保护的问题。
为了能够实现内存管理操作,对于系统中的每个计算节点而言,需要进行内存管理器的配置操作,参考附图12所示,对每个计算节点而言,全局可以引入中央内存管理器,每个parquet写出线程引入本地内存管理器,其中,中央内存管理器可以与一个或多个本地内存管理器通信连接。具体的,该内存管理方法可以包括以下步骤:
步骤1:在parquet写出线程开始执行任务时,每隔一定的数据行数之后,可以确定或者更新本地内存管理器所对应的parquet写出线程的内存开销信息(即更新本地内存管理中所获得的内存开销信息与写出线程之间的映射关系)。
其中,上述的“一定的数据行数”可以为100行或者100以内,需要注意的是,在对数据行数进行配置时,需要使得配置后的数据行数所对应的内存开销值要小于或等于用于判断是否进行刷盘操作的设定限值的二分之一。
可以理解的是,对于内存开销信息的统计操作而言,若每执行一行数据就进行一次内存开销信息的统计操作,则内存管理系统的数据处理压力会比较大,因此,每隔一定的数据行数进行一次内存开销信息的统计操作,则可以有效地缓解内存管理系统的数据处理压力。
另外,在获取内存开销信息时,可以通过反射机制调用parquet开源算法中所包括的内存计算接口(私有接口),通过内存计算接口确定当前执行线程的内存开销信息。由于获取parquet写出线程所对应的内存开销信息的计算会占用比较多的CPU资源,因此,采用每个一定的数据行数进行内存开销信息的更新操作,与有效地降低CPU资源的占用率。
步骤2:在本地内存管理器中所包括的内存开销信息发生更新时,可以将内存开销信息实时汇报到中央内存管理器。
步骤3:在本地内存管理器对parquet写出线程的一个批次的写任务执行结束之后,可以生成全局内存查询请求,并将全局内存查询请求发送至中央内存管理器。
举例来说,若需要执行操作的待处理数据包括1000万的数据时,则可以将每1000行或者800行的数据划分为一个批次的写任务,在本地内存管理器执行完一个批次的写任务(视为一个待写出进程处理完毕)之后,则可以生成一个全局内存查询请求,以实现全局内存开销信息的查询操作。
步骤4:中央内存管理器可以基于全局内存查询请求,确定全局内存开销信息。
步骤5:基于全局内存开销信息进行内存管理操作。
在全局内存开销信息超过预设的阈值,则说明内存存在溢出风险,而后可以查询全局占用内存最大的一定比例的前n个待写出线程的文件句柄描述,例如:可以获取全局占用内存排名前10个待写出线程的文件标识信息。在获取到文件句柄描述之后,可以将文件句柄描述与本地内存管理器中所获得的本地文件句柄描述进行分析匹配,若本地内存管理器中所获得的本地文件句柄描述与文件句柄描述相匹配时,则可以控制待写出进程所对应的数据提前进行数据刷盘操作,进而可以实现内存资源的回收操作。
在又一些实例中,本实施例中的内存管理方法还可以包括以下实现过程:在待处理数据写入时为流式序列化方式时,可以先以流式序列化的方式将数据写入临时文件,当写入临时文件的数据量大于或等于文件切换阈值时,则将临时文件一次性重新读取,并将临时文件转换为parquet文件,而后开启parquet写出线程的执行写入操作;在上述实现方式中,中央内存管理器可以全局用有限的信号量来控制开启临时文件转换为parquet文件的写出线程个数,这样同样可以避免出现内存溢出的情况。
本应用实施例提供的内存管理方法,通过引入的中央内存管理器、本地内存管理器两层内存管理模块,不仅降低模块之间的耦合程度,并且可以保证全局内存统计的精确性与稳定性,从而实现了一种针对整个OLAP、大数据系统中的parquet格式的全局内存管理与保护机制,彻底解决了parquet社区版本中完全忽视的内存管理问题,符合商业化大数据系统、OLAP系统的高标准。另外,相较于Spark、hive生态圈使用的内存管理方法而言,该方法可以全面统计整个系统中parquet文件的实时内存开销,并可以基于内存消耗信息对内存进行精确的管理和控制,例如:在存在内存溢出风险的时候,可以及时控制parquet 写出线程的缓存进行回收内存操作,在保证内存使用的安全性与稳定性的同时,也保证了parquet写出文件格式的完整性与正确性,进一步提高了该内存管理方法使用的稳定可靠性,有利于市场的推广与应用。
图13为本申请实施例提供的一种内存管理装置的流程示意图;参考附图13所示,本实施例提供了一种内存管理装置,该内存管理装置可以执行上述图3所示的内存管理方法,具体的,该内存管理装置可以包括:
中央内存管理器11,用于获取数据处理请求,建立数据处理请求所对应的至少一个待写出线程,确定至少一个待写出线程各自对应的本地内存管理器12;
本地内存管理器12,与中央内存管理器11通信连接,用于在执行至少一个待写出线程时,确定至少一个待写出线程各自对应的内存开销信息,并将至少一个待写出线程各自对应的内存开销信息发送至中央内存管理器11;
中央内存管理器11,用于基于所有待写出线程所对应的内存开销信息进行内存管理操作。
在一些实例中,在本地内存管理器12执行待写出线程时,确定待写出线程所对应的内存开销信息时,该本地内存管理器12用于执行:在执行待写出线程时,记录待写出线程所对应的数据写出行数;在数据写出行数满足设定阈值时,确定待写出线程所对应的内存开销信息。
在一些实例中,待写出线程包括parquet写出线程;在本地内存管理器12确定待写出线程所对应的内存开销信息时,该本地内存管理器12用于执行:利用反射机制调用parquet算法内包括的内存计算接口;基于内存计算接口,确定待写出线程所对应的内存开销信息。
在一些实例中,在中央内存管理器11建立数据处理请求所对应的至少一个待写出线程时,该中央内存管理器11用于执行:确定数据处理请求所对应的待处理数据;对待处理数据进行批次划分操作,获得至少一批子数据;基于至少一批子数据,建立至少一个待写出线程。
在一些实例中,本实施例中的本地内存管理器12和中央内存管理器11用于执行以下步骤:
本地内存管理器12,用于获取待写出线程所对应的数据处理状态,在数据处理状态为处理完毕时,则生成全局内存查询请求,并将全局内存查询请求发送至中央内存管理器11;
中央内存管理器11,用于基于全局内存查询请求和所有待写出线程所对应的内存开销信息,确定全局内存信息,并基于全局内存信息进行内存管理操作。
在一些实例中,在中央内存管理器11基于全局内存信息进行内存管理操作时,中央内存管理器11用于执行:在全局内存信息大于或等于预设内存阈值时,则获取所有待写出线程各自对应的全局内存占比信息;基于全局内存占比信息,在所有待写出线程中确定设定数量的目标处理线程,所有目标处理线程所对应的全局内存占比信息大于或等于预设阈值;控制目标处理线程执行数据刷盘操作。
在一些实例中,在中央内存管理器11控制目标处理线程执行数据刷盘操作时,中央内存管理器11用于执行:生成与目标处理线程相对应的线程列表,线程列表中包括所有目标处理线程所对应的目标文件句柄描述;将线程列表发送至所有的本地内存管理器12,以使本地内存管理器12基于线程列表控制目标处理线程执行数据刷盘操作。
在一些实例中,在中央内存管理器11基于线程列表控制目标处理线程执行数据刷盘操作时,中央内存管理器11用于执行:获取本地待写出线程所对应的文件句柄描述;在线程列表中包括与文件句柄描述相匹配的目标文件句柄描述时,则控制与目标文件句柄描述相对应的目标处理线程执行数据刷盘操作;在线程列表中不包括与文件句柄描述相匹配的目标文件句柄描述时,则忽略线程列表。
在一些实例中,在中央内存管理器11建立数据处理请求相对应的至少一个待写出线程时,该中央内存管理器11用于执行:获取数据处理请求所对应的数据写入方式;在数据写入方式为流式写入方式时,则获取数据处理请求相对应的临时文件;在临时文件的数据量满足文件切换阈值时,则将临时文件转换为parquet文件;基于parquet文件生成数据处理请求相对应的至少一个待写出线程。
在一些实例中,本实施例中的中央内存管理器11用于执行以下步骤:获取用于限定将临时文件转换为parquet文件的数量信息;基于数量信息进行内存管理操作。
图13所示装置可以执行图1-图9、图12所示实施例的方法,本实施例未详细描述的部分,可参考对图1-图9、图12所示实施例的相关说明。该技术方案的执行过程和技术效果参见图1-图9、图12所示实施例中的描述,在此不再赘述。
另外,本发明实施例提供了一种计算机存储介质,用于储存电子设备所用的计算机软件指令,其包含用于执行上述图1-图9、图12所示方法实施例中内存管理方法所涉及的程序。
图14为本申请实施例提供的另一种内存管理装置的结构示意图;参考附图14所示,本实施例提供了另一种内存管理装置,该内存管理装置用于执行上述图10所示的内存管理方法,具体的,该内存管理装置可以包括:
第一获取模块21,用于获取数据处理请求;
第一建立模块22,用于建立数据处理请求相对应的至少一个待写出线程;
第一确定模块23,用于在执行至少一个待写出线程时,确定至少一个待写出线程各自对应的内存开销信息;
第一处理模块24,用于基于所有待写出线程所对应的内存开销信息进行内存管理操作。
在一些实例中,在第一处理模块24基于所有待写出线程所对应的内存开销信息进行内存管理操作时,第一处理模块24用于执行:获取待写出线程所对应的数据处理状态;在数据处理状态为处理完毕时,则生成全局内存查询请求;基于全局内存查询请求和所有待写出线程所对应的内存开销信息,确定全局内存信息;基于全局内存信息进行内存管理操作。
在一些实例中,在第一处理模块24控制目标处理线程执行数据刷盘操作时,第一处理模块24用于执行:生成与目标处理线程相对应的线程列表,线程列表中包括所有目标处理线程所对应的目标文件句柄描述;获取本地待写出线程所对应的文件句柄描述;在线程列表中包括与文件句柄描述相匹配的目标文件句柄描述时,则控制与目标文件句柄描述相对应的目标处理线程执行数据刷盘操作;在线程列表中不包括与文件句柄描述相匹配的目标文件句柄描述时,则忽略线程列表。
图14所示装置可以执行图10、图12所示实施例的方法,本实施例未详细描述的部分,可参考对图10、图12所示实施例的相关说明。该技术方案的执行过程和技术效果参见图10、图12所示实施例中的描述,在此不再赘述。
在一个可能的设计中,图14所示内存管理装置的结构可实现为一电子设备,该电子设备可以是手机、平板电脑、服务器等各种设备。如图15所示,该电子设备可以包括:第一处理器31和第一存储器32。其中,第一存储器32用于存储相对应电子设备执行上述图10、图12所示实施例中提供的内存管理方法的程序,第一处理器31被配置为用于执行第一存储器32中存储的程序。
程序包括一条或多条计算机指令,其中,一条或多条计算机指令被第一处理器31执行时能够实现如下步骤:获取数据处理请求;建立数据处理请求相对应的至少一个待写出线程;在执行至少一个待写出线程时,确定至少一个待写出线程各自对应的内存开销信息;基于所有待写出线程所对应的内存开销信息进行内存管理操作。
进一步的,第一处理器31还用于执行前述图10、图12所示实施例中的全部或部分步骤。
其中,电子设备的结构中还可以包括第一通信接口33,用于电子设备与其他设备或通信网络通信。
另外,本发明实施例提供了一种计算机存储介质,用于储存电子设备所用的计算机软件指令,其包含用于执行上述图10、图12所示方法实施例中内存管理方法所涉及的程序。
此外,本发明实施例提供了一种计算机程序产品,包括:存储有计算机指令的计算机可读存储介质,当所述计算机指令被一个或多个处理器执行时,致使所述一个或多个处理器执行上述图10、图12所示的内存管理方法中的步骤。
图16为本申请实施例提供的又一种内存管理装置的结构示意图;参考附图16所示,本实施例提供了另一种内存管理装置,该内存管理装置用于执行上述图11所示的内存管理方法,具体的,该内存管理装置可以包括:
第二获取模块41,用于获取全局内存查询请求和至少一个待写出线程各自对应的内存开销信息;
第二确定模块42,用于基于全局查询请求和所有待写出线程所对应的内存开销信息,确定全局内存信息;
第二处理模块43,用于基于全局内存信息进行内存管理操作。
图16所示装置可以执行图11-图12所示实施例的方法,本实施例未详细描述的部分,可参考对图11-图12所示实施例的相关说明。该技术方案的执行过程和技术效果参见图11-图12所示实施例中的描述,在此不再赘述。
在一个可能的设计中,图16所示内存管理装置的结构可实现为一电子设备,该电子设备可以是手机、平板电脑、服务器等各种设备。如图17所示,该电子设备可以包括:第二处理器51和第二存储器52。其中,第二存储器52用于存储相对应电子设备执行上述图11-图12所示实施例中提供的内存管理方法的程序,第二处理器51被配置为用于执行第二存储器52中存储的程序。
程序包括一条或多条计算机指令,其中,一条或多条计算机指令被第二处理器51执行时能够实现如下步骤:获取全局内存查询请求和至少一个待写出线程各自对应的内存开销信息;基于全局查询请求和所有待写出线程所对应的内存开销信息,确定全局内存信息;基于全局内存信息进行内存管理操作。
进一步的,第二处理器51还用于执行前述图11-图12所示实施例中的全部或部分步骤。
其中,电子设备的结构中还可以包括第二通信接口53,用于电子设备与其他设备或通信网络通信。
另外,本发明实施例提供了一种计算机存储介质,用于储存电子设备所用的计算机软件指令,其包含用于执行上述图11-图12所示方法实施例中内存管理方法所涉及的程序。
此外,本发明实施例提供了一种计算机程序产品,包括:存储有计算机指令的计算机可读存储介质,当所述计算机指令被一个或多个处理器执行时,致使所述一个或多个处理器执行上述图11-图12所示的内存管理方法中的步骤。
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以计算机产品的形式体现出来,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程设备的处理器以产生一个机器,使得通过计算机或其他可编程设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器 (CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM) 和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体 (transitory media),如调制的数据信号和载波。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (12)
1.一种内存管理方法,包括:
利用中央内存管理器获取数据处理请求,建立所述数据处理请求所对应的至少一个待写出线程,确定所述至少一个待写出线程各自对应的本地内存管理器;
在本地内存管理器执行所述待写出线程时,确定所述待写出线程所对应的内存开销信息,并将所述待写出线程所对应的内存开销信息发送至中央内存管理器;
利用中央内存管理器基于所有待写出线程所对应的内存开销信息进行内存管理操作;
所述方法还包括:
利用本地内存管理器获取所述待写出线程所对应的数据处理状态,在所述数据处理状态为处理完毕时,则生成全局内存查询请求,并将所述全局内存查询请求发送至中央内存管理器;
利用中央内存管理器基于所述全局内存查询请求和所有待写出线程所对应的内存开销信息,确定全局内存信息,并基于所述全局内存信息进行内存管理操作;其中,基于所述全局内存信息进行内存管理操作包括:基于所述全局开销信息控制至少一部分的待写出线程执行数据刷盘操作。
2.根据权利要求1所述的方法,在本地内存管理器执行所述待写出线程时,确定所述待写出线程所对应的内存开销信息,包括:
在利用所述本地内存管理器执行所述待写出线程时,记录所述待写出线程所对应的数据写出行数;
在所述数据写出行数满足设定阈值时,确定所述待写出线程所对应的内存开销信息。
3.根据权利要求2所述的方法,所述待写出线程包括parquet写出线程;确定所述待写出线程所对应的内存开销信息,包括:
利用反射机制调用parquet算法内包括的内存计算接口;
基于所述内存计算接口,确定所述待写出线程所对应的内存开销信息。
4.根据权利要求1所述的方法,建立所述数据处理请求所对应的至少一个待写出线程,包括:
确定所述数据处理请求所对应的待处理数据;
对所述待处理数据进行批次划分操作,获得至少一批子数据;
基于所述至少一批子数据,建立至少一个待写出线程。
5.根据权利要求1所述的方法,基于所述全局内存信息进行内存管理操作,包括:
在所述全局内存信息大于或等于预设内存阈值时,则获取所有待写出线程各自对应的全局内存占比信息;
基于所述全局内存占比信息,在所有待写出线程中确定设定数量的目标处理线程,所有目标处理线程所对应的全局内存占比信息大于或等于预设阈值;
控制所述目标处理线程执行数据刷盘操作。
6.根据权利要求5所述的方法,控制所述目标处理线程执行数据刷盘操作,包括:
生成与所述目标处理线程相对应的线程列表,所述线程列表中包括所有目标处理线程所对应的目标文件句柄描述;
将所述线程列表发送至所有的本地内存管理器,以使所述本地内存管理器基于所述线程列表控制所述目标处理线程执行数据刷盘操作。
7.根据权利要求6所述的方法,基于所述线程列表控制所述目标处理线程执行数据刷盘操作,包括:
获取本地待写出线程所对应的文件句柄描述;
在所述线程列表中包括与所述文件句柄描述相匹配的目标文件句柄描述时,则控制与所述目标文件句柄描述相对应的目标处理线程执行数据刷盘操作;
在所述线程列表中不包括与所述文件句柄描述相匹配的目标文件句柄描述时,则忽略所述线程列表。
8.根据权利要求1-7中任意一项所述的方法,建立所述数据处理请求相对应的至少一个待写出线程,包括:
获取所述数据处理请求所对应的数据写入方式;
在所述数据写入方式为流式写入方式时,则获取所述数据处理请求相对应的临时文件;
在所述临时文件的数据量满足文件切换阈值时,则将所述临时文件转换为parquet文件;
基于所述parquet文件生成所述数据处理请求相对应的至少一个待写出线程。
9.一种内存管理方法,包括:
获取数据处理请求;
建立所述数据处理请求相对应的至少一个待写出线程;
在执行所述至少一个待写出线程时,确定所述至少一个待写出线程各自对应的内存开销信息;
基于所有待写出线程所对应的内存开销信息进行内存管理操作;
基于所有待写出线程所对应的内存开销信息进行内存管理操作,包括:
获取所述待写出线程所对应的数据处理状态;
在所述数据处理状态为处理完毕时,则生成全局内存查询请求;
基于所述全局内存查询请求和所有待写出线程所对应的内存开销信息,确定全局内存信息;
基于所述全局内存信息进行内存管理操作;
其中,基于所述全局内存信息进行内存管理操作包括:基于所述全局开销信息控制至少一部分的待写出线程执行数据刷盘操作。
10.一种内存管理方法,包括:
获取全局内存查询请求和至少一个待写出线程各自对应的内存开销信息;
基于所述全局查询请求和所有待写出线程所对应的内存开销信息,确定全局内存信息;
基于所述全局内存信息进行内存管理操作;
其中,基于所述全局内存信息进行内存管理操作包括:基于所述全局开销信息控制至少一部分的待写出线程执行数据刷盘操作。
11.一种内存管理装置,包括:
第一获取模块,用于获取数据处理请求;
第一建立模块,用于建立所述数据处理请求相对应的至少一个待写出线程;
第一确定模块,用于在执行所述至少一个待写出线程时,确定所述至少一个待写出线程各自对应的内存开销信息;
第一处理模块,用于基于所有待写出线程所对应的内存开销信息进行内存管理操作;
在所述第一处理模块基于所有待写出线程所对应的内存开销信息进行内存管理操作时,所述第一处理模块,用于获取所述待写出线程所对应的数据处理状态;在所述数据处理状态为处理完毕时,则生成全局内存查询请求;基于所述全局内存查询请求和所有待写出线程所对应的内存开销信息,确定全局内存信息;基于所述全局内存信息进行内存管理操作;其中,基于所述全局内存信息进行内存管理操作包括:基于所述全局开销信息控制至少一部分的待写出线程执行数据刷盘操作。
12.一种计算机存储介质,用于储存计算机程序,所述计算机程序使计算机执行时实现权利要求9所述的内存管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110845682.6A CN113296962B (zh) | 2021-07-26 | 2021-07-26 | 内存管理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110845682.6A CN113296962B (zh) | 2021-07-26 | 2021-07-26 | 内存管理方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113296962A CN113296962A (zh) | 2021-08-24 |
CN113296962B true CN113296962B (zh) | 2022-01-11 |
Family
ID=77330895
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110845682.6A Active CN113296962B (zh) | 2021-07-26 | 2021-07-26 | 内存管理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113296962B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101055533A (zh) * | 2007-05-28 | 2007-10-17 | 中兴通讯股份有限公司 | 一种多线程处理器动态内存管理系统及方法 |
CN107818052A (zh) * | 2016-09-13 | 2018-03-20 | 华为技术有限公司 | 内存访问方法及装置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101799773B (zh) * | 2010-04-07 | 2013-04-17 | 福州福昕软件开发有限公司 | 并行计算的内存访问方法 |
CN102567107B (zh) * | 2011-10-31 | 2014-03-05 | 广东电网公司电力科学研究院 | 高并行的实时内存资源管理调度方法 |
CN103605576B (zh) * | 2013-11-25 | 2017-02-08 | 华中科技大学 | 一种基于多线程的MapReduce执行系统 |
CN104503891B (zh) * | 2014-12-10 | 2018-10-02 | 北京京东尚科信息技术有限公司 | 对jvm线程进行在线监控的方法和装置 |
CN106844041B (zh) * | 2016-12-29 | 2020-06-16 | 华为技术有限公司 | 内存管理的方法及内存管理系统 |
CN108694187A (zh) * | 2017-04-07 | 2018-10-23 | 北京国双科技有限公司 | 实时流数据的存储方法及装置 |
US10776256B2 (en) * | 2018-05-16 | 2020-09-15 | International Business Machines Corporation | Sharing consumed off-heap for parallel data loading |
CN108804289A (zh) * | 2018-06-04 | 2018-11-13 | 郑州云海信息技术有限公司 | 一种进程监控的方法、装置及计算机存储介质 |
-
2021
- 2021-07-26 CN CN202110845682.6A patent/CN113296962B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101055533A (zh) * | 2007-05-28 | 2007-10-17 | 中兴通讯股份有限公司 | 一种多线程处理器动态内存管理系统及方法 |
CN107818052A (zh) * | 2016-09-13 | 2018-03-20 | 华为技术有限公司 | 内存访问方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113296962A (zh) | 2021-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9898469B1 (en) | Parallel streaming of external data | |
US10885030B2 (en) | Database management system and computer system having first and second query execution parts which execute database operations in parallel | |
US10606806B2 (en) | Method and apparatus for storing time series data | |
CN106407207B (zh) | 一种实时新增数据更新方法和装置 | |
US8843632B2 (en) | Allocation of resources between web services in a composite service | |
CN103020174A (zh) | 相似性分析方法、装置及系统 | |
US11194762B2 (en) | Spatial indexing using resilient distributed datasets | |
CN111339078A (zh) | 数据实时存储方法、数据查询方法、装置、设备、介质 | |
US9679012B1 (en) | Parallel streaming of external data | |
CN110807145A (zh) | 查询引擎获取方法、设备和计算机可读存储介质 | |
CN110413413A (zh) | 一种数据写入方法、装置、设备及存储介质 | |
CN113761003A (zh) | 用户画像数据处理方法和装置、电子设备和可读存储介质 | |
US10048991B2 (en) | System and method for parallel processing data blocks containing sequential label ranges of series data | |
CN106571935B (zh) | 一种资源调度的方法与设备 | |
CN113296962B (zh) | 内存管理方法、装置、设备及存储介质 | |
KR101772333B1 (ko) | 이종 NoSQL 데이터베이스들간의 지능적 조인 전략 제공 방법 및 시스템 | |
CN109063210B (zh) | 存储系统的资源对象查询方法、装置、设备及存储介质 | |
US11960939B2 (en) | Management computer, management system, and recording medium | |
CN113190549B (zh) | 多维表数据调取方法、装置、服务器及存储介质 | |
CN110427377B (zh) | 数据处理方法、装置、设备和存储介质 | |
CN110874268B (zh) | 数据处理方法、装置和设备 | |
CN110750569A (zh) | 数据提取方法、装置、设备及存储介质 | |
CN107180042B (zh) | 搜索引擎的流量统计方法、装置及系统 | |
US20110145276A1 (en) | Apparatus and method for parallel processing data flow | |
US20170132268A1 (en) | Method and apparatus for determining hot page in database |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |