用于大数据处理系统的内存数据集置换系统与置换方法

文档序号:10471032阅读:434来源:国知局
用于大数据处理系统的内存数据集置换系统与置换方法
【专利摘要】本发明公开了一种用于大数据处理系统的内存数据集置换系统,包括分析模块、信息监测模块、决策模块。分析模块用于对上层用户程序进行逻辑分析,得出各运算阶段中生成内存数据集时的运算步骤集合;信息监测模块用于对运行中的用户程序进行监测,并收集生成内存数据集时的信息提交给决策模块;决策模块用于对收集到的信息进行分析和排序,判断当前阶段是否需要对系统中的内存数据集进行置换,在系统需要进行置换时确定需要移除的内存数据集并通知系统换入新的内存数据集。本发明在工作过程中,对上层用户层程序完全透明,能够灵活地根据系统实时状况决策内存数据集的置换方案,同时相比传统置换方法很好地降低了对系统性能的影响。
【专利说明】
用于大数据处理系统的内存数据集置换系统与置换方法
技术领域
[0001 ]本发明属于大数据分布式计算领域,更具体地,涉及一种用于大数据处理系统的内存数据集置换系统与置换方法。
【背景技术】
[0002]近年来,大数据分布式处理系统受到了广泛关注。工业界和学术界涌现了多个大数据分布式处理系统:Spark,F1 ink,Dryad ,GraphX等。开发者利用此类系统提供的API描述大数据应用程序,通常情况下,此类应用程序处理的数据量远超过单机器的运算能力。因此实际中,通常在包含多个运算节点的集群中部署此类系统。
[0003]大数据应用程序处理的输入数据通常位于集群共享的存储(如HDFS等)中,程序运行阶段大数据处理系统将程序划分为多个运算阶段对数据进行处理。同一运算阶段中,集群各节点同时处理分布式系统调度到该节点的部分输入数据;相邻阶段之间,分布式处理系统通过网络将前一阶段生成的结果数据序列化后传输到后一阶段,反序列化后在后一阶段中进行下一步处理操作,这一网络传输的过程在分布式系统中称为Shuf fie操作,该操作需要使用大量的网络及运算资源,通常情况下消耗的时间占应用程序整体作业时间的相当大比例。
[0004]由于大数据分布式处理系统所处理的数据量远大于运算节点的内存容量,处理系统无法一次性将数据读入内存,所以通常会利用数据分区方法将输入数据均分为多个分片,运算节点对各分片依次根据用户程序逻辑进行处理。从运算逻辑角度上看,处理系统在一个运算阶段中对输入数据、或经过Shuffle获得的数据进行一系列运算操作,生成一系列中间数据并最终得到运算结果,运算结果保留在本地或传送到其它节点供下一运算阶段使用。
[0005]大数据处理系统面对的应用复杂度在逐渐增加,同时对运算速度的要求越来越高。由于内存的读取速度远高于机械硬盘或固态硬盘的读取速度,利用内存缓存部分数据是提升运算速度的一种常见策略。另一方面对大数据上进行具有多轮次的程序十分常见(如进行图处理或机器学习算法),此类程序中,后期运算阶段使用到前期阶段的计算数据的情况十分常见,在内存中缓存此类数据能够显著提升处理速度,因此大数据处理系统允许用户程序在内存中缓存部分数据集,后期阶段使用到这类数据时,可直接读取内存数据集,提升了系统的运行效率,其它数据作为临时数据集,在初次使用后可立即从内存中移除。
[0006]大数据分布式处理系统运行时使用到的内存资源通常用于两个方面:一是用于应用程序的运算;二是用于缓存运算过程中生成的数据。为避免缓存数据过多,占用了大量的内存空间而影响应用程序的正常运算,系统通常会设置缓存空间的最大可用内存容量并设置阈值,如果在添加缓存数据时出现剩余内存空间小于阈值的情况,需要将部分数据从内存中移除。程序后期使用已经被移除的数据时,处理系统会运行必要的运算再次生成数据,该过程中的运算步骤与初次生成数据时一致,所需的时间也与初次生成时耗费的时间接近,重算引入的计算开销影响了程序运行所需的整体时间。
[0007]当前大数据处理系统大多采用LRlKLeastRecently Used)算法决策如何置换内存数据集,LRU算法在运行时会移除距离当前时间最久未使用的内存数据集,没有考虑数据重算的开销大小,导致具有高重算开销的数据被置换出内存,从而系统整体运行时间增长。其它常见的置换算法如FIF0(First In First Out)算法根据内存数据集的生成时间进行决策,LFU(Least Frequently Used)算法根据数据集的访问的频率进行决策,同样无法保证重算数据集时引入的开销最小。目前缺乏针对大数据分布式处理系统中内存数据集置换问题的,重算开销低的置换方法。

【发明内容】

[0008]针对现有技术的缺陷,本发明的目的在于提供一种用于大数据处理系统的内存数据集置换系统,旨在保证被移除的内存数据集在后期重新生成时引入的重算开销小,程序整体的运算时间少。
[0009]为实现上述目的,按照本发明的一方面,提供了一种用于大数据处理系统的内存数据集置换系统,包括分析模块、信息监测模块、决策模块。分析模块用于对上层用户程序进行逻辑分析,得出各运算阶段中生成内存数据集的运算步骤集合;信息监测模块用于对运行中的用户程序进行监测,并收集生成内存数据集时的信息提交给决策模块;决策模块用于对信息监测模块收集到的信息进行分析,判断当前阶段是否需要对系统中的内存数据集进行置换,在系统需要进行置换时确定需要移除的内存数据集并通知系统换入新的内存数据集。
[0010]分析模块在上层用户程序运行时在分布式系统的Master节点上对程序逻辑进行分析,确定用户程序中生成的内存数据集,并确定生成时所经历的运算步骤。分析功能的实现主要通过分析程序运行中的逻辑运算关系图,找出程序生成的需要放入内存的数据集,在逻辑运算关系图中搜索该内存数据集生成过程中经历的运算集合,搜索过程中在遇到其它内存数据集、或经过Shuffle操作得到的数据集时停止,以避免包含其它内存数据集的运算集合。Master节点将分析的结果传送到各Worker节点。
[0011]信息监测模块在进行实际运算的Worker节点上对运算中的程序进行实时监控,监测信息包括生成内存数据集过程的运算集合中各运算消耗的时间,对消耗的时间进行加和作为整体消耗时间。内存数据集生成完毕后,将整体消耗时间和数据集大小传送到决策模块。信息监测模块同时监测节点的内存剩余状况,在剩余内存不足以存放新的内存数据集时,通知决策模块置换出部分已存在的内存数据集。监测功能的主要通过在运算集合中的各运算操作前后记录时间戳,在生成数据时记录数据集占用空间大小,动态更新内存剩余空间大小与内存阈值进行比较来实现。
[0012]决策模块根据信息监测模块传送来的信息,以生成内存数据集时的整体消耗时间除以内存数据集的大小,得到的算术结果作为内存数据集的置换优先级,并放入TreeMap结构中进行排序。在监测模块监测到内存资源不足、需要置换出内存数据集时,选择并移除优先级最小的内存数据集。
[0013]通过本发明所构思的以上技术方案,与现有技术相比,本发明的系统具有以下的优点和技术效果:
[0014]1、由于采用了分析模块和信息监测模块,能够分析出生成内存数据集所必需的运算操作集合,能够实时地监测生成操作所需的开销大小;
[0015]2、由于采用了决策模块,通过TreeMap结构动态地记录内存数据集的相关信息,能够高效地根据生成开销进行排序,置换发生时优先移除最小开销的内存数据集,有效降低了重算时带来的开销,切实提高了程序的整体运算效果;
[0016]3、由于本发明无需对用户程序进行任何修改,对用户完全透明,用户无需知晓底层实现方法。
[0017]按照本发明的另一方面,还提供了一种用于大数据处理系统的内存数据集置换方法,包括以下步骤:
[0018](I)分析模块分析当前运算阶段内部各中间数据集之间的依赖关系图,对于本阶段生成的需要在内存中进行保存的数据集,利用深度优先搜索或广度优先搜索算法在逻辑运算关系图中搜索生成过程中经历的运算集合C。如果生成过程中需要Shuffle运算,则还需将Shuffle运算集合添加到运算集合C中,将运算集合C传送到信息监测模块,并跳转步骤
(2);
[0019](2)信息监测模块运行在各Worker节点,首先记录节点上可用于内存数据集存储的最大内存大小,确定内存阈值,在当前剩余的可用于内存数据集使用的内存低于该阈值时则需要进行置换操作。计算当前节点上可用于内存数据集存储的内存大小,在程序生成内存数据集时,根据步骤(I)传入的运算集合C,记录集合中各运算的起始及结束时间间隔,对各子运算所需的时间间隔进行加和得到整体消耗时间T,记录当前生成的内存数据集的大小s i z e,更新节点上当前可用于内存数据集存储的内存大小。当该值小于阈值时,认为当前需要清除出部分内存数据集,转入步骤(3)。否则,判断程序是否需要进入下一运算阶段,如需进入下一阶段则转入步骤(I);
[0020](3)决策模块接收步骤(2)传入的内存数据集的信息,以内存数据集的唯一id为Key,以该内存数据集的(T,size)信息为Value放入TreeMap结构中。TreeMap内部以T/size为依据对数据进行排序,在信息监测模块通知需要进行内存数据集清除时,优先清除T/s i ze值最小的内存数据集。
[0021]通过本发明所构思的以上技术方案,与现有技术相比,本发明的系统具有以下的优点和技术效果:
[0022]1、由于采用了步骤(I),在运算程序运行时,根据程序已有的阶段划分,在Master节点上对程序逻辑进行分析,再将分析结果传送到Worker节点上,能够避免重复的程序分析操作,因此分析开销小;
[0023]2、由于采用了步骤(I),确定了监测内存数据集生成或重新生成所需经历的运算步骤,避免了监测到与内存数据集生成无关的运算操作;
[0024]3、由于采用了步骤(2),在运算程序运行时,动态地监测内存使用状况,在达到内存使用阈值时通知决策模块进行清理,保证了系统不会因为内存不足而出现崩溃或错误;
[0025]4、由于采用了步骤(3),以TreeMap结构存储内存数据集的相关信息,使得排序及查找内存数据集的算法复杂度低,决策模块运行时的开销小;
[0026]5、由于采用了以上步骤(1)-(3),本发明工作时不需要对用户层程序进行代码上的分析或更改,整个工作过程对用户透明。
【附图说明】
[0027]图1为本发明用于大数据处理系统的内存数据集置换系统的模块框图;
[0028]图2为本发明用于大数据处理系统的内存数据集置换方法的流程图;
[0029]图3为本发明用于大数据处理系统的内存数据集置换方法分析一个运算阶段的示意图。
【具体实施方式】
[0030]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0031]如图1所示,本发明提供了一种用于大数据处理系统的内存数据集置换系统,包括分析模块、信息监测模块、决策模块。分析模块用于对上层用户程序进行逻辑分析,得出各运算阶段中生成内存数据集的运算步骤集合;信息监测模块用于对运行中的用户程序进行监测,并收集生成内存数据集时的信息提交给决策模块;决策模块用于对信息监测模块收集到的信息进行分析,判断当前阶段是否需要对系统中的内存数据集进行置换,在系统需要进行置换时确定需要移除的内存数据集并通知系统换入新的内存数据集。
[0032]分析模块在上层用户程序运行时在分布式系统的Master节点上对程序逻辑进行分析,确定用户程序中生成的内存数据集,并确定生成时所经历的运算步骤。分析功能的实现主要通过分析程序运行中的逻辑运算关系图,找出程序生成的需要放入内存的数据集,在逻辑运算关系图中搜索该内存数据集生成过程中经历的运算集合。Master节点将分析的结果传送到各Worker节点。
[0033]信息监测模块在进行实际运算的Worker节点上对运算中的程序进行实时监控,监测信息包括生成内存数据集过程的运算集合中各运算消耗的时间,对消耗的时间进行加和作为整体消耗时间。内存数据集生成完毕后,将整体消耗时间和数据集大小传送到决策模块。信息监测模块同时监测节点的内存剩余状况,在剩余内存不足以存放新的内存数据集时,通知决策模块置换出部分已存在的内存数据集。
[0034]监测功能的主要通过在运算集合中的各运算操作前后记录时间戳,在生成数据时记录数据集占用空间大小,动态更新内存剩余空间大小与内存阈值进行比较来实现。
[0035]决策模块根据信息监测模块传送来的信息,以生成内存数据集时的整体消耗时间除以内存数据集的大小,得到的算术结果作为内存数据集的置换优先级,并放入TreeMap结构中进行排序。在监测模块监测到内存资源不足、需要置换出内存数据集时,选择并移除优先级最小的内存数据集。
[0036]如图2所示,本发明提供了一种用于大数据处理系统的内存数据集置换系统,包括以下步骤:
[0037](I)如图3所示,分析模块分析当前运算阶段内部各中间数据集之间的依赖关系图,对于本阶段生成的需要在内存中进行保存的数据集,利用深度优先搜索或广度优先搜索算法在逻辑运算关系图中搜索生成过程中经历的运算集合CIC1,C2,C3,C4}。如果生成过程中需要Shuff Ie运算,则还需将Shuff Ie运算Si添加到运算集合C中,将运算集合C{Ci,C2,C3,C4,Si}传送到信息监测模块,并跳转步骤(2);
[0038](2)信息监测模块运行在各Worker节点,首先记录节点上可用于内存数据集存储的最大内存大小Mmax,确定内存阈值,在当前剩余的可用于内存数据集使用的内存M低于该阈值时则需要进行置换操作。计算当前节点上可用于内存数据集存储的内存大小,在程序生成需要放入内存的数据集时,根据步骤(I)传入的运算集合C,记录集合中各子运算的起始及结束时间间隔,对各子运算所需的时间间隔进行加和得到整体消耗时间T,记录当前生成的内存数据集的大小size,更新节点上当前可用于内存数据集存储的内存大小M的值为M-size。当该值小于阈值时,认为当前需要清除出部分内存数据集,转入步骤(3)。否则,判断程序是否需要进入下一运算阶段,如需进入下一阶段则转入步骤(I);
[0039](3)决策模块接收步骤(2)传入的内存数据集的信息,以内存数据集的唯一id为Key,以该内存数据集的(T,size)信息为Value放入TreeMap结构中。TreeMap内部以T/size为依据对数据进行排序,在信息监测模块通知需要进行内存数据集清除时,优先清除T/s ize值最小的内存数据集。
[0040]本发明提供了一种用于大数据处理系统的内存数据集置换系统,其中由于采用了步骤(I),在运算程序运行时,根据程序已有的阶段划分,在Master节点上对程序逻辑进行分析,再将分析结果传送到Worker节点上,能够避免重复的程序分析操作,因此分析开销小;由于采用了步骤(I),确定了监测内存数据集生成或重新生成所需经历的运算步骤,避免了监测到与内存数据集生成无关的运算操作;由于采用了步骤(2),在运算程序运行时,动态地监测内存使用状况,在达到内存使用阈值时通知决策模块进行清理,保证了系统不会因为内存不足而出现崩溃或错误;由于采用了步骤(3),以TreeMap结构存储内存数据集的相关信息,使得排序及查找内存数据集的算法复杂度低,决策模块运行时的开销小;由于采用了以上步骤(1)-(3),本发明工作时不需要对用户层程序进行代码上的分析或更改,整个工作过程对用户透明。
[0041]对于本发明提供的用于大数据处理系统的内存数据集置换系统而言,由于采用了分析模块和信息监测模块,能够分析出生成内存数据集所必需的运算操作集合,能够实时地监测生成操作所需的开销大小;由于采用了决策模块,通过TreeMap结构动态地记录内存数据集的相关信息,能够高效地根据生成开销进行排序,置换发生时优先移除最小开销的内存数据集,有效降低了重算时带来的开销,切实提高了程序的整体运算效果;由于本发明无需对用户程序进行任何修改,对用户完全透明,用户无需知晓底层实现方法。
[0042]本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种用于大数据处理系统的内存数据集置换系统,包括分析模块、信息监测模块、决策模块,其特征在于, 所述分析模块用于对上层用户程序进行逻辑分析,得出各运算阶段中生成内存数据集的运算步骤集合; 所述信息监测模块用于对运行中的用户程序进行监测,并收集生成内存数据集时的信息提交给决策模块; 所述决策模块用于对信息监测模块收集到的信息进行分析,判断当前阶段是否需要对系统中的内存数据集进行置换,在系统需要进行置换时确定需要移除的内存数据集并通知系统换入新的内存数据集。2.根据权利要求1所述的内存数据集置换系统,其特征在于,所述分析模块在上层用户程序运行时在分布式系统的Master节点上对程序逻辑进行分析,确定用户程序中生成的内存数据集,并确定生成时所经历的运算步骤。3.根据权利要求2所述的内存数据集置换系统,其特征在于,所述分析模块的分析功能是通过分析程序运行中的逻辑运算关系图,找出程序生成的需要放入内存的数据集,在逻辑运算关系图中搜索该内存数据集生成过程中经历的运算集合;Master节点将分析的结果传送到各Worker节点。4.根据权利要求1或2所述的内存数据集置换系统,其特征在于,所述信息监测模块在进行实际运算的Worker节点上对运算中的程序进行实时监控,监测信息包括生成内存数据集过程的运算集合中各运算消耗的时间;内存数据集生成完毕后,将消耗时间和数据集大小传送到决策模块。信息监测模块同时监测节点的内存剩余状况,在剩余内存不足以存放新的内存数据集时,通知决策模块置换出部分已存在的内存数据集。5.根据权利要求4所述的内存数据集置换系统,其特征在于,所述信息监测模块的监测功能是通过在运算集合中的各运算操作前后记录时间戳,在生成数据时记录数据集占用空间大小,动态更新内存剩余空间大小并与内存阈值进行比较来实现。6.根据权利要求1或2所述的内存数据集置换系统,其特征在于,所述决策模块根据信息监测模块传送来的信息,处理后作为内存数据集的置换优先级,并放入TreeMap结构中进行排序;在监测模块监测到内存资源不足、需要置换出内存数据集时,选择并移除优先级最小的内存数据集。7.—种用于大数据处理系统的内存数据集置换方法,其特征在于,包括以下步骤: (1)分析模块分析当前运算阶段内部各中间数据集之间的依赖关系图,对于本阶段生成的需要在内存中进行保存的数据集,利用深度优先搜索或广度优先搜索算法在逻辑运算关系图中搜索生成过程中经历的运算集合C;如果生成过程中需要Shuffle运算,则还需将Shuffle运算集合添加到运算集合C中,将运算集合C传送到信息监测模块,并跳转步骤(2); (2)信息监测模块运行在各Worker节点,首先记录节点上可用于内存数据集存储的最大内存大小,确定内存阈值,在当前剩余的可用于内存数据集使用的内存低于该阈值时则需要进行置换操作;计算当前节点上可用于内存数据集存储的内存大小,在程序生成内存数据集时,根据步骤(I)传入的运算集合C,记录集合中各运算的起始及结束时间间隔,对各子运算所需的时间间隔进行加和得到整体消耗时间T,记录当前生成的内存数据集的大小size,更新节点上当前可用于内存数据集存储的内存大小;当该值小于阈值时,认为当前需要清除出部分内存数据集,转入步骤(3);否则,判断程序是否需进入下一运算阶段,如进入下一运算阶段则转入步骤(I); (3)决策模块接收步骤(2)传入的内存数据集的信息,以内存数据集的唯一id为Key,以该内存数据集的(T,size)信息为Value放入TreeMap结构中!TreeMap内部以T/size为依据对数据进行排序,在信息监测模块通知需要进行内存数据集清除时,优先清除T/size值最小的内存数据集。
【文档编号】G06F11/30GK105824737SQ201610196543
【公开日】2016年8月3日
【申请日】2016年3月31日
【发明人】石宣化, 金海 , 耿元振, 王斐
【申请人】华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1