一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种数据存储方法、系统、电子设备及存储介质与流程

2021-11-03 14:34:00 来源:中国专利 TAG:
1.本技术涉及内存计算
技术领域
:,特别涉及一种数据存储方法、系统、一种电子设备及一种存储介质。
背景技术
::2.持久内存(pmem,persistentmemory)是新一代的存储介质,除了字节可寻址、高速读写性能以外,还具有掉电非易失、高存储密度、低静态功耗等dram(dynamicrandomaccessmemory,动态随机存取存储器)不具备的优点。以上优良特性让持久内存有望在未来成为dram的替代者,为构建更高效的存储计算系统带来了新的机遇。3.spark是一种大数据内存计算框架,基于持久内存可以对spark进行优化。目前社区有通过使用持久内存的devdax模式,将spark计算过程的中间数据存储在持久内存上的,从而减少i/o(计算机的数据读写操作)时间、加速计算任务执行的方案。这种方案中devdax模式的持久内存设备需要与spark的执行器一一对应,此时spark无法同时执行多个任务,spark计算框架的任务执行效率较低,且在连续运行时稳定性较差。4.因此,如何提高spark计算框架的任务执行效率是本领域技术人员目前需要解决的技术问题。技术实现要素:5.本技术的目的是提供一种数据存储方法、系统、一种电子设备及一种存储介质,能够提高持久内存设备中存储中间数据的数量。6.为解决上述技术问题,本技术提供一种数据存储方法,应用于spark计算框架,所述数据存储方法包括:7.确定持久内存设备的设备名称和预设文件大小;其中,所述持久内存设备为处于fsdax模式的设备;8.根据所述设备名称在所述持久内存设备中创建多个spark任务对应的文件路径,并在每一所述文件路径下生成所述预设文件大小的持久内存文件;9.将每一所述spark任务生成的中间数据存储至对应的所述持久内存文件。10.可选的,根据所述设备名称在所述持久内存设备中创建多个spark任务对应的文件路径,包括:11.随机生成多个中间文件名,并根据所述设备名称和所述中间文件名在所述持久内存设备中创建多个所述spark任务对应的所述文件路径。12.可选的,还包括:13.在检测到所述spark计算框架执行新spark任务时,随机生成新中间文件名,并根据所述设备名称和所述新中间文件名在所述持久内存设备中创建所述新spark任务对应的新文件路径;14.在所述新文件路径下生成新持久内存文件,并将所述新spark任务生成的新中间数据存储至所述新持久内存文件。15.可选的,在将每一所述spark任务生成的中间数据存储至对应的所述持久内存文件之前,还包括:16.确定所述持久内存设备对应的目标cpu核心;17.获取所述spark任务的当前进程号;18.配置所述当前进程号和所述目标cpu核心的绑定关系;19.相应的,将每一所述spark任务生成的中间数据存储至对应的所述持久内存文件,包括:20.根据所述绑定关系控制所述目标cpu核心将每一所述spark任务生成的中间数据存储至对应的所述持久内存文件。21.可选的,配置所述当前进程号和所述目标cpu核心的绑定关系,包括:22.通过taskset方法或sched_setaffinity方法配置所述当前进程号和所述目标cpu核心的绑定关系。23.可选的,在确定持久内存设备的设备名称和预设文件大小之前,还包括:24.判断所述持久内存设备的设备属性是否为目录;25.若是,则判定所述持久内存设备为处于fsdax模式的设备。26.可选的,在将每一所述spark任务生成的中间数据存储至对应的所述持久内存文件之后,还包括:27.若检测到spark任务执行完毕,则通过调用posix的文件删除方法删除执行完毕的spark任务对应的持久内存文件。28.本技术还提供了一种数据存储系统,应用于spark计算框架,所述数据存储系统包括:29.参数确定模块,用于确定持久内存设备的设备名称和预设文件大小;其中,所述持久内存设备为处于fsdax模式的设备;30.文件创建模块,用于根据所述设备名称在所述持久内存设备中创建多个spark任务对应的文件路径,并在每一所述文件路径下生成所述预设文件大小的持久内存文件;31.数据存储模块,用于将每一所述spark任务生成的中间数据存储至对应的所述持久内存文件。32.本技术还提供了一种存储介质,其上存储有计算机程序,所述计算机程序执行时实现上述数据存储方法执行的步骤。33.本技术还提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时实现上述数据存储方法执行的步骤。34.本技术提供了一种数据存储方法,应用于spark计算框架,所述数据存储方法包括:确定持久内存设备的设备名称和预设文件大小;其中,所述持久内存设备为处于fsdax模式的设备;根据所述设备名称在所述持久内存设备中创建多个spark任务对应的文件路径,并在每一所述文件路径下生成所述预设文件大小的持久内存文件;将每一所述spark任务生成的中间数据存储至对应的所述持久内存文件。35.本技术先确定处于fsdax模式的持久内存设备的设备名称以及预设文件大小,根据设备名称在持久内存设备中创建文件路径,并在该文件路径下生成预设文件大小的持久内存文件。在spark计算框架执行spark任务的过程中将会产生中间数据,本技术将该中间数据存储至spark任务对应的文件路径下,即利用预设文件大小的持久内存文件存储中间数据。在上述过程中,在持久内存设备中分配预设文件大小的内存来存储spark任务的中间数据,可以实现在同一持久内存设备中存储多个spark任务的中间数据的方案。相对于相关技术中devdax模式下持久内存设备被单个spark任务独占的中间数据存储方式,本技术能够灵活分配执行器的数量,提高持久内存设备中存储中间数据的独立资源池数量,使得spark计算框架能够同时执行多个spark任务,提高了spark计算框架的任务处理效率和连续运行时的稳定性。本技术同时还提供了一种数据存储系统、一种电子设备和一种存储介质,具有上述有益效果,在此不再赘述。附图说明36.为了更清楚地说明本技术实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。37.图1为本技术实施例所提供的一种数据存储方法的流程图;38.图2为本技术实施例所提供的一种基于持久内存fsdax模式的内存计算方法的流程图;39.图3为本技术实施例所提供的一种基于持久内存fsdax模式的内存计算方法的原理示意图;40.图4为本技术实施例所提供的一种数据存储系统的结构示意图。具体实施方式41.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。42.下面请参见图1,图1为本技术实施例所提供的一种数据存储方法的流程图。43.具体步骤可以包括:44.s101:确定持久内存设备的设备名称和预设文件大小;45.其中,本实施例可以应用于spark计算框架,spark计算框架可以部署于服务器,持久内存设备即持久内存硬件设备,本实施例中的持久内存设备为处于fsdax模式的设备。fsdax指持久内存ad模式(appdirectmode,持久内存的应用直接访问模式)的一种块设备实现;处于fsdax模式的设备对用户暴露标准文件系统api,处于fsdax模式的设备使用时挂载为文件系统上的目录。46.本实施例可以通过读取配置文件确定持久内存设备的设备名称,还可以通过读取配置文件确定预设文件大小。此外,本实施例还可以根据当前执行的spark任务的任务类型确定预设文件大小。47.作为一种可行的实施方式,在本步骤之前还可以存在判断持久内存设备所处模式的操作,具体过程如下:判断所述持久内存设备的设备属性是否为目录;若是,则判定所述持久内存设备为处于fsdax模式的设备。48.s102:根据所述设备名称在所述持久内存设备中创建多个spark任务对应的文件路径,并在每一所述文件路径下生成所述预设文件大小的持久内存文件;49.其中,本步骤在持久内存设备中创建用于存储spark任务的中间数据的持久内存文件。在本步骤之前可以存在检测spark任务执行情况的操作,若检测到spark计算框架开始执行spark任务,则可以执行本步骤的相关操作,以便将执行每一spark任务过程中产生的中间数据存储至对应的持久内存文件。本实施例中可以先后依次创建多个spark任务对应的文件路径,即:每检测到一个spark任务开始被执行就创建一个对应的文件路径及持久内存文件,以使持久内存设备能够存储多个spark任务产生的中间数据。本实施例中的任意两个spark任务对应的文件路径不相同,即每一spark任务的中间数据与持久内存文件一一对应。50.具体的,本实施例可以根据持久内存设备的设备名称在持久内存设备中创建文件路径,并绑定spark任务与该文件路径的对应关系。在该文件路径下可以生成预设文件大小的持久内存文件,本实施例中生成的持久内存文件的大小应小于持久内存设备的总内存大小。作为一种可行的实施方式,持久内存文件的大小可以小于或等于持久内存设备总内存大小的二分之一,即持久内存设备中至少能够存储两个spark任务的中间数据,以便spark计算框架可以同时执行至少两个spark任务。51.作为一种可行的实施方式,在创建文件路径的过程中,为了区分不同spark任务对应的持久内存文件,本实施例可以随机生成多个中间文件名,并根据所述设备名称和所述中间文件名在所述持久内存设备中创建多个所述spark任务对应的所述文件路径。52.s103:将每一spark任务生成的中间数据存储至对应的持久内存文件。53.其中,在生成spark任务对应的持久内存文件之后,若检测到任意spark任务生成的中间数据,可以根据spark任务与持久内存文件的绑定关系将中间数据存储至对应的持久内存文件。上述中间数据指,执行spark任务的过程中,产生的除了输出结果之外的其他数据。具体的,spark任务对应的持久内存文件即:spark任务对应的文件路径下生成的持久内存文件。54.进一步的,在将所述中间数据存储至所述持久内存文件之后,若检测到spark任务执行完毕,则通过调用posix(portableoperatingsysteminterface,可移植操作系统接口)的文件删除方法删除已执行完毕的spark任务对应的持久内存文件。posix是api的一系列互相关联的标准总称。55.本实施例先确定处于fsdax模式的持久内存设备的设备名称以及预设文件大小,根据设备名称在持久内存设备中创建文件路径,并在该文件路径下生成预设文件大小的持久内存文件。在spark计算框架执行spark任务的过程中将会产生中间数据,本实施例将该中间数据存储至spark任务对应的文件路径下,即利用预设文件大小的持久内存文件存储中间数据。在上述过程中,在持久内存设备中分配预设文件大小的内存来存储spark任务的中间数据,可以实现在同一持久内存设备中存储多个spark任务的中间数据的方案。devdax模式为持久内存ad模式的一种字符设备实现,devdax模式可将持久性内存分配给虚拟机,或者为rdma(远程直接内存访问)注册持久性内存。相对于相关技术中devdax模式下持久内存设备被单个spark任务独占的中间数据存储方式,本实施例能够提高持久内存设备中存储中间数据的数量,使得spark计算框架能够同时执行多个spark任务,提高了spark计算框架的任务处理效率。56.作为一种可行的实施方式,在检测到所述spark计算框架执行新spark任务时,本技术还可以随机生成新中间文件名,并根据所述设备名称和所述新中间文件名在所述持久内存设备中创建所述新spark任务对应的新文件路径;在所述新文件路径下生成新持久内存文件,并将所述新spark任务生成的新中间数据存储至所述新持久内存文件。57.通过上述方式能够在检测到新的spark任务后,创建新的持久内存文件,以便存储新的中间数据。也就是说,上述过程能够使每一正在被执行的spark任务均有其对应的持久内存文件来存储中间数据。58.作为图1对应实施例的进一步描述,本实施例还可以在将所述spark任务生成的中间数据存储至所述持久内存文件之前,绑定cpu核心和spark任务的进程号,以使持久内存设备的性能最大化。具体过程如下:确定所述持久内存设备对应的目标cpu核心,获取所述spark任务的当前进程号,配置所述当前进程号和所述目标cpu核心的绑定关系。作为一种可行的实施方式,上述过程还可以通过taskset方法或sched_setaffinity方法配置所述当前进程号和所述目标cpu核心的绑定关系。59.在确定当前进程号和目标cpu核心的绑定关系之后,本实施例可以根据所述绑定关系控制所述目标cpu核心将每一所述spark任务生成的中间数据存储至对应的所述持久内存文件。60.以上实施例可以基于内存计算系统实现,该内存计算系统包括初始化模块、numa(non‑uniformmemoryaccess,非一致性内存访问)绑定模块和资源回收模块。61.初始化模块主要进行用户配置参数的读取与处理,在持久内存设备上创建出对应的持久内存文件。numa绑定模块用于将执行器使用的cpu核心与持久内存设备创建出对应关系。资源回收模块用于在计算任务即将结束时,调用系统标准api将计算过程的中间数据以文件粒度从持久内存上清除,以便后续任务的顺利执行。上述三个模块统一作为spark计算框架的一个插件,在任务运行时被spark计算框架主动调用达到优化效果。执行器为spark计算框架中负责任务的具体执行的组件,一个spark任务一般存在多个执行器。62.与使用devdax模式的持久内存不同,在使用fsdax模式时除了要指定使用哪一块持久内存设备,还要告诉程序使用多大的空间(如可以从用户配置中读取)。由于fsdax模式在使用时需要确定设备名称以及存储数据的目标文件名称,因此本实施例可以利用初始化模块读取用户配置文件确定设备名称和预设文件大小。63.由于fsdax模式下目标文件名具有不确定性和临时性,而持久内存的numa差异性是持久内存设备带来的,与文件名无关。故numa绑定模块需要获知当前执行器进程所使用的设备名称,根据设备名称获取预先配置的cpu核心号,再根据运行环境获取进程号,使用系统命令将进程号与cpu核心进行绑定,以最大化持久内存设备的性能。64.在资源回收模块的工作过程中,与devdax模式的主要差异是,devdax模式下程序需要逐个清除每个对象指针指向的内存位置的数据,然后修改已清除数据的大小,往复循环直到判断当前数据大小等于0时才正常退出。上述过程复杂,在运算数据量较大时易出错。在fsdax模式下,可以将所有中间数据视作一整个文件,采用posix标准文件操作api,只需要进行一次删除工作,清理工作变得简单而稳定。65.请参见图2和图3,图2为本技术实施例所提供的一种基于持久内存fsdax模式的内存计算方法的流程图,图3为本技术实施例所提供的一种基于持久内存fsdax模式的内存计算方法的原理示意图。66.相关技术中使用持久内存devdax模式对执行器数量有严格的限制,对于确定的服务器环境无法直接调整执行器数量(需要人工先删除旧设备,再重新创建对应数量的devdax命名空间),这可能导致任务无法达到最优配置;此外,在devdax模式释放临时数据占用的空间时,使用一种循环获取地址删除数据对象的本地方法,操作较为复杂、容易出错,可能会造成持久内存的泄露造成程序崩溃,大大降低了计算系统的可用性。本实施例提出一种基于持久内存fsdax模式的内存计算优化方案来解决上述问题。初始化模块根据用户指定的设备与大小,在持久内存设备上创建出对应的fsdax文件(持久内存文件)。numa绑定模块负责将执行器进程使用的cpu核心与持久内存设备创建出对应关系;资源回收模块负责在计算任务即将结束时,调用posix标准api将计算过程的中间数据以文件粒度从持久内存上清除。67.如图2所示,在程序开始后,可以先根据持久内存设备属性是否为目录来判断持久内存设备是否处于fsdax模式。其中,当持久内存设备属性为目录时,可以判定持久内存设备处于fsdax模式。持久内存设备的设备名称由用户在用户配置文件中进行指定,同时用户配置文件还可以指定有预设文件大小及持久内存设备对应的cpu核心列表。68.在初始化模块工作过程中,如果持久内存设备处于fsdax模式,则将一特定标记项的值修改为真(true),随机生成一个中间文件名,随后将设备名称和中间文件名组合为文件路径,创建出预设文件大小的持久内存文件,以便利用持久内存文件存储内存计算程序运行过程产生的中间数据。如果持久内存设备处于devdax模式,则不需要指定持久内存设备的大小,只需要设备名称,因为devdax模式运行时对设备是独占的,正因如此,在原有实现中spark计算框架无法同时执行多个任务;而在fsdax模式下,只要用户在配置信息中分配出一个合理的预设文件大小就可以同时运行多个spark任务,spark计算框架的作业效率与空间利用率都得到提升。如图3所示,持久内存设备将fsdax命名空间挂载至文件系统的挂载目录。spark计算框架通过初始化在持久内存设备中创建持久化内存文件,然后通过numa绑定模块绑定进程号与cpu核心,在内存计算(spark)任务数据交换过程将中间数据写入持久化内存文件,spark计算框架还可以从持久化内存文件中读取中间数据。在spark任务执行完毕后,可以清理持久化内存文件中的中间数据。69.在numa绑定模块的工作过程中,由于持久内存设备的读写性能受numa节点影响,numa绑定模块要将设备与正确的cpu核心进行绑定。这个上述绑定关系可以从用户配置文件中得到。用户在安装持久内存设备后,这上述绑定关系确定下来了,不会随着程序运行发生改变。70.在fsdax模式下,numa绑定模块根据设备名称读取到对应的cpu核心编号列表。numa绑定模块根据运行时环境(如jvm)获取当前的进程号(pid),通过系统命令将当前的进程号与cpu核心进行绑定。具体的,上述绑定操作可以通过“taskset”方法实现,也可以通过“sched_setaffinity”方法实现。71.待spark任务执行完毕后,进入到资源回收模块。资源回收模块先判断特定标记项是否为真,如果为真则进行fsdax文件的清理工作。fsdax模式下,可以直接调用posix的文件删除方法,无需编写复杂的内存地址获取与释放的代码逻辑,简单且稳定性大幅提高。72.以上实施例提供了一种基于持久内存fsdax模式的内存计算优化方案,可以使内存计算程序进行灵活的执行器分配,以达成任务所需的最优参数配置;还可以实现多个计算任务的并行,可以提高作业效率与持久内存设备的空间利用率。上述实施例在进行numa绑定后程序的性能得到提高,资源回收过程改造后程序代码易于维护,临时数据占用的空间释放过程不易出错,程序健壮性得到提升,相比改造之前任务连续运行时的稳定性提高数倍。73.请参见图4,图4为本技术实施例所提供的一种数据存储系统的结构示意图,该系统应用于spark计算框架,具体可以包括:74.参数确定模块401,用于确定持久内存设备的设备名称和预设文件大小;其中,所述持久内存设备为处于fsdax模式的设备;75.文件创建模块402,用于根据所述设备名称在所述持久内存设备中创建多个spark任务对应的文件路径,并在每一所述文件路径下生成所述预设文件大小的持久内存文件;76.数据存储模块403,用于将每一所述spark任务生成的中间数据存储至对应的所述持久内存文件。77.本实施例先确定处于fsdax模式的持久内存设备的设备名称以及预设文件大小,根据设备名称在持久内存设备中创建文件路径,并在该文件路径下生成预设文件大小的持久内存文件。在spark计算框架执行spark任务的过程中将会产生中间数据,本实施例将该中间数据存储至spark任务对应的文件路径下,即利用预设文件大小的持久内存文件存储中间数据。在上述过程中,在持久内存设备中分配预设文件大小的内存来存储spark任务的中间数据,可以实现在同一持久内存设备中存储多个spark任务的中间数据的方案。相对于相关技术中devdax模式下持久内存设备被单个spark任务独占的中间数据存储方式,本实施例能够提高持久内存设备中存储中间数据的数量,使得spark计算框架能够同时执行多个spark任务,提高了spark计算框架的任务处理效率。78.进一步的,文件创建模块402包括:79.路径创建模块,用于随机生成多个中间文件名,并根据所述设备名称和所述中间文件名在所述持久内存设备中创建多个所述spark任务对应的所述文件路径。80.进一步的,还包括:81.新中间数据存储模块,用于在检测到所述spark计算框架执行新spark任务时,随机生成新中间文件名,并根据所述设备名称和所述新中间文件名在所述持久内存设备中创建所述新spark任务对应的新文件路径;还用于在所述新文件路径下生成新持久内存文件,并将所述新spark任务生成的新中间数据存储至所述新持久内存文件。82.进一步的,还包括:83.绑定模块,用于在将所述spark任务生成的中间数据存储至所述持久内存文件之前,确定所述持久内存设备对应的目标cpu核心;还用于获取所述spark任务的当前进程号;还用于配置所述当前进程号和所述目标cpu核心的绑定关系;84.相应的,数据存储模块403具体为用于根据所述绑定关系控制所述目标cpu核心将每一所述spark任务生成的中间数据存储至对应的所述持久内存文件的模块。85.进一步的,所述绑定模块配置所述当前进程号和所述目标cpu核心的绑定关系的过程包括:通过taskset方法或sched_setaffinity方法配置所述当前进程号和所述目标cpu核心的绑定关系。86.进一步的,还包括:87.模式判断模块用于在确定持久内存设备的设备名称和预设文件大小之前,判断所述持久内存设备的设备属性是否为目录;若是,则判定所述持久内存设备为处于fsdax模式的设备。88.进一步的,还包括:89.文件删除模块,用于若检测到spark任务执行完毕,则通过调用posix的文件删除方法删除执行完毕的spark任务对应的持久内存文件。90.由于系统部分的实施例与方法部分的实施例相互对应,因此系统部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。91.本技术还提供了一种存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:u盘、移动硬盘、只读存储器(read‑onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。92.本技术还提供了一种电子设备,可以包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然所述电子设备还可以包括各种网络接口,电源等组件。93.说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本
技术领域
:的普通技术人员来说,在不脱离本技术原理的前提下,还可以对本技术进行若干改进和修饰,这些改进和修饰也落入本技术权利要求的保护范围内。94.还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语ꢀ“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献