本发明涉及大数据存储,尤其涉及一种大数据存储方法、引擎内存管理模型、方法及装置。
背景技术:
1、目前,大数据计算引擎主要用java或是基于jvm(java virtual machine)的编程语言实现的,例如apache hadoop、apache spark、apache drill、apache flink等。java语言的好处在于程序员不需要太关注底层内存资源的管理,因为jvm提供自动的内存开辟、销毁、回收等机制,大大的方便了软件的开发,使开发人员可以专注于业务逻辑。
2、但是在大数据应用场景中,大数据计算引擎往往处理的数据量巨大,单纯依靠jvm在内存中缓存和高效处理数据就会出现很多问题。在大数据场景下,jvm内存管理的不足之处:jvm的对象的内存有效利用率较低;垃圾回收(gc,garbage collection)耗时长,严重影响交互效率;outofmemoryerror错误频发,导致jvm崩溃,严重影响系统的正常运行等。
技术实现思路
1、本发明提供一种大数据引擎内存管理方法及装置,用以解决现有技术中存在的问题。
2、本发明提供一种大数据引擎内存管理方法,包括:
3、初始化网络管理器,以供网络缓存池生成预设数量的内存段;
4、基于任务执行线程创建缓冲池,并设定所述内存段的申请上限;
5、接收所述内存段的申请信息,并基于所述申请信息分配所述内存段,且当所述缓冲池中没有可用内存段且所述内存段的申请数量小于所述申请上限,则向所述网络缓存池申请所述内存段;当所述内存段的申请数量大于所述申请上限或所述网络缓存池没有可用内存段,则停止所述任务执行线程;
6、其中,在大数据引擎内存管理模型上执行所述大数据引擎内存管理方法。
7、根据本发明提供的一种大数据引擎内存管理方法,所述方法还包括:当所述内存段消费完成后,将所述内存段释放回所述缓冲池。
8、根据本发明提供的一种大数据引擎内存管理方法,所述方法还包括:当所述内存段的申请数量大于所述申请上限,则将所述缓冲池中的内存段释放回所述网络缓存池。
9、根据本发明提供的一种大数据引擎内存管理方法,在执行所述初始化网络管理器之前,还包括:将待处理数据写入内存段,所述将待处理数据写入内存段,具体包括:基于待处理数据类型加载对应的序列化器;利用所述序列化器对所述待处理数据进行序列化操作,得到二进制数据;将所述二进制数据写入内存段。
10、根据本发明提供的一种大数据引擎内存管理方法,所述大数据引擎内存管理模型包括:堆内存区,所述堆内存区包括引擎堆上内存区和任务堆上内存区。
11、根据本发明提供的一种大数据引擎内存管理方法,所述大数据引擎内存管理模型还包括:堆外内存区,所述堆外内存区包括引擎堆外内存区、任务堆外内存区、网络缓冲内存区、管理内存区、jvm元空间以及jvm执行开销区。
12、根据本发明提供的一种大数据引擎内存管理方法,所述任务堆上内存区包括:网络缓存池、内存资源管理池以及预留堆内存区。
13、本发明还提供一种大数据引擎内存管理装置,包括:
14、初始化模块,用于:初始化网络管理器,以供网络缓存池生成预设数量的内存段;
15、创建模块,用于:基于任务执行线程创建缓冲池,并设定所述内存段的申请上限;
16、分配模块,用于:接收所述内存段的申请数量,并基于所述申请信息分配所述内存段,且当所述缓冲池中没有可用内存段且所述申请数量小于所述申请上限,则向所述网络缓存池申请所述内存段;当所述申请数量大于所述申请上限或所述网络缓存池没有可用内存段,则停止所述任务执行线程;其中,在大数据引擎内存管理模型上执行所述大数据引擎内存管理方法。
17、本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述大数据引擎内存管理方法的步骤。
18、本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述大数据引擎内存管理方法的步骤。
19、本发明提供的大数据引擎内存管理方法及装置,通过基于任务执行线程创建输入缓冲池和输出缓冲池,利用上述缓冲池与网络缓存池进行连接,使内存段形成二级缓存处理,同时,输入缓冲池与输出缓冲池的生命周期与任务管理器的产生与销毁保持同步,从而使的缓冲池中内存段不会被执行垃圾回收过程。基于此,减少了系统内存的full gc(对整个堆上内存区进行扫描并进行内存回收)时间,提高系统运行效率。
1.一种大数据引擎内存管理方法,其特征在于,包括:
2.根据权利要求1所述的大数据引擎内存管理方法,其特征在于,所述方法还包括:当所述内存段消费完成后,将所述内存段释放回所述缓冲池。
3.根据权利要求1所述的大数据引擎内存管理方法,其特征在于,所述方法还包括:当所述内存段的申请数量大于所述申请上限,则将所述缓冲池中的内存段释放回所述网络缓存池。
4.根据权利要求1所述的大数据引擎内存管理方法,其特征在于,在执行所述初始化网络管理器之前,还包括:将待处理数据写入内存段,所述将待处理数据写入内存段,具体包括:
5.根据权利要求1所述的大数据引擎内存管理方法,其特征在于,所述大数据引擎内存管理模型包括:堆内存区,所述堆内存区包括引擎堆上内存区和任务堆上内存区。
6.根据权利要求5所述的大数据引擎内存管理方法,其特征在于,所述大数据引擎内存管理模型还包括:堆外内存区,所述堆外内存区包括引擎堆外内存区、任务堆外内存区、网络缓冲内存区、管理内存区、jvm元空间以及jvm执行开销区。
7.根据权利要求6所述的大数据引擎内存管理方法,其特征在于,所述任务堆上内存区包括:网络缓存池、内存资源管理池以及预留堆内存区。
8.一种大数据引擎内存管理装置,其特征在于,包括:
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述大数据引擎内存管理方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述大数据引擎内存管理方法的步骤。