法律状态公告日
法律状态信息
法律状态
2019-05-10
授权
授权
2016-09-14
实质审查的生效 IPC(主分类):G06F9/50 申请日:20160330
实质审查的生效
2016-08-17
公开
公开
技术领域
本发明属于计算机系统结构下I/O性能优化领域,更具体地,涉及一种解决大数据处理系统中内存资源激烈竞争的系统。
背景技术
随着大数据时代的到来,数据处理多采用集群编程模型MapReduce和Dryad来处理日益增长的数据集,这些模型能提供自动的任务调度机制、容错机制和负载均衡机制,实现细节对用户实现透明,其中MapReduce模型应用非常广泛。
开源的分布式处理系统Hadoop作为MapReduce模型最典型的代表,已经被工业界用来处理多种多样的离线批处理应用。但是Hadoop基于磁盘设计了一整套执行流程,中间数据需要存放在磁盘上,不适合迭代计算这种复杂的应用,磁盘I/O成为性能的主要瓶颈。同时Hadoop采用多进程执行引擎,任务以进程的形式被执行与调度。由于进程启动非常慢,导致Hadoop只适合离线批处理类型的作业,这无法满足当下对应用高时效性的需求。
但作为MapReduce模型当前最火的代表,Spark基于内存设计了一整套执行流程,数据结构多采用消耗内存的哈希表,并且提供了中间数据缓存在内存中的机制和接口,极大的减少了磁盘I/O操作。同时Spark采用多线程执行引擎,任务以线程的形式被调度,线程启动快,而且线程之间共享和复用内存空间,资源利用率高,导致Spark非常适合低延迟高响应类型的作业。同时多线程执行引擎也成为了当下流行的分布式处理系统的标准实现。
但是,当前的大数据处理应用大多都是数据密集性应用,大量的中间数据需要缓存在内存空间,而且大量的计算是消耗内存空间的,容易出现内存不充足的情况,此时线程任务对内存资源的竞争更加竞争。现有的线程任务调度机制直接根据工作节点是否含有空核来分发任务,未考虑工作节点当前的内存资源使用情况,会继续加剧内存的竞争。另一方面,多线程执行引擎为了保证每个线程任务在计算中都能分到足够的内存空间,根据工作节点中任务的数量均分内存空间。但工作节点的CPU核数(线程任务最大的并发度)是提前就申请好的,当每个线程任务消耗的内存增多,内存不足时,大量的数据溢出到磁盘,导致大量的磁盘I/O操作。同时大数据作业都是分阶段执行的,每个阶段的任务消耗的内存不一致,非常容易出现某些阶段中CPU和内存容量的比例不协调,影响大数据处理系统的整体性能。
发明内容
针对现有技术的缺陷,本发明的目的在于提供一种解决大数据处理系统中内存资源激烈竞争的系统,旨在解决现有方法中存在的内存资源激烈竞争过大、不必要的数据溢出到磁盘的I/O操作、无法动态调整CPU和内存资源比例的技术问题。
为实现上述目的,按照本发明的一方面,提供了一种解决大数据处理系统中内存资源激烈竞争的系统,包括内存信息反馈模块、信息采样与分析模块、决策与任务分发模块。
内存信息反馈模块用于对运行中的线程任务进行内存使用情况的监测,并将收集的内存信息转化后反馈给信息采样与分析模块;
信息采样与分析模块用于动态调控各个工作节点信息的采样次数,并且达到指定的采样次数后对数据进行分析,计算出当前工作节点的最佳CPU与内存比例,并将结果数据提交给决策与任务分发模块;
决策与任务分发模块根据分析得到的信息和当前工作节点的任务运行 信息,决策控制是否分发新的任务到工作节点进行计算操作,实现对CPU与内存使用关系的有效限制。
所述内存信息反馈模块,用于对运行中的线程任务进行内存使用情况的监测,统计线程任务执行过程中消耗的内存量,同时也统计当内存不足时,从内存中溢出到磁盘的数据量,根据内存实际消耗的总量和当前的工作节点所分配的最大CPU核数,计算最佳并发度信息反馈给信息采样与分析模块。
所述收集的信息,包括线程任务所使用的容器占用的内存大小,工作节点用于计算的最大内存值,内存空间不足时数据溢出到磁盘的大小,工作节点所拥有的CPU资源数。
所述监测功能的实现,主要是通过在工作节点调用大数据处理系统中与内存相关的关键函数,关键函数包括有内存分配函数、内存释放函数、获取内存配置信息与CPU核数函数、获取任务运行信息函数。
所述信息采样与分析模块,通过在主节点动态调控各个工作节点信息的采样次数,在收集信息的过程中选择性地调整工作节点CPU与内存资源比例,并且在达到指定的采样次数后对收集到的数据进行处理分析,来判断工作节点整体的内存资源竞争激烈情况,并确定工作节点当前最佳的CPU与内存资源比例。
所述决策与任务分发模块,通过在主节点对原有的任务调度机制进行扩展,加入对内存资源和CPU资源的综合考虑,根据采样结果和当前工作节点已经分配的任务情况,综合考虑后决定是否继续分发任务到工作节点,来协调工作节点CPU和内存资源的合理使用。
所述内存信息反馈模块,部署在每个工作节点上,追踪每一个线程任务运行过程中消耗的内存量Smem,并且记录内存不足时,内存数据溢出到磁盘的数据量Sspill,接着当线程任务运行完后,根据线程任务消耗的内存总量 Smem+Sspill,以及工作节点分配给计算所需的最大内存空间Smax和线程任务所允许的最大并发度CLmax(申请的CPU核数),计算出适合当前资源环境的最佳并发度CLop反馈给主节点的信息采样与分析模块。当Sspill=0时,说明当前的内存比较充足,CLop=CLmax。否则,内存资源不足,竞争激烈,
所述信息采样与分析模块,通过哈希表来管理采样数据,将各个工作节点收集的采样数据快速地分配到各个对应的处理模块进行分析处理,收到采样数据后,更新用来记录对应工作节正在运行的线程任务数量Tnum=Tnum-1。每个模块在指定的采样次数SN达到之后,将累加收集到的所有采样数据CLop,得到最后计算出适合工作节点当前最佳的并发度提交给决策与任务分发模块。
所述决策与任务分发模块,根据当前工作节点的并发度信息CLcurrent,以及信息采样与分析模块提交的CLbest,用CLbest直接赋值来更新当前的并发度信息CLcurrent和采样次数SN。最后任务分发模块根据更新后的CLcurrent值和工作节点当前正在运行的线程任务数量Tnum决策剩余线程任务是否分发到工作节点,当CLcurrent>Tnum时,继续分发任务到该工作子节点,并且更新Tnum=Tnum+1。
所述信息采样与分析模块,在收集采样数据的次数未达到SN的过程中,如果收集到CLop<CLcurrent时,说明当前内存资源竞争非常激烈,按照原来的CLcurrent值分发任务,不能快速的缓解竞争压力,需要实时做出调整CLcurrent=CLop。
通过本发明所构思的以上技术方案,与现有技术相比,本发明的系统具有以下的优点和技术效果:
1、由于采用了内存信息反馈模块,通过收集线程任务运行过程中实际消耗的内存空间,能够有效地预估当前工作节点的内存压力情况,提前将内存信息反馈给主节点进行决策,及时缓解工作节点的内存压力;
2、由于采用了信息采样与分析模块,通过动态的调整采样的次数,保证了收集到的数据能够从整体上反应工作节点的内存使用情况,确保了工作节点能够平稳高效的运行;
3、由于采用了决策与任务分发模块,在任务调度的过程中,能同时考虑工作节点CPU和内存的使用情况,确保了工作节点能高效的使用内存空间,有效减少了内存资源竞争紧张而导致的溢出磁盘I/O操作,切实缓解了内存资源激烈竞争的情况;
4、由于本发明本着方便用户使用的目标,实现在系统中内部,不涉及用户层程序的具体代码或额外操作,因此对用户层程序是完全透明的。同时解决的问题比较通用,实现方法具有很强的通用性和可移植性。
附图说明
图1为解决大数据处理系统中内存资源激烈竞争机制的模块框图。
图2为解决大数据处理系统中内存资源激烈竞争机制的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
如图1所示,本发明提供了一种解决大数据处理系统中内存资源激烈竞争的系统,包括内存信息反馈模块、信息采样与分析模块、决策与任务分发模块。
内存信息反馈模块用于对运行中的线程任务进行内存使用情况的监测,统计线程任务执行过程中消耗的内存量,同时也统计当内存不足时,从内存中溢出到磁盘的数据量,根据内存实际消耗的总量和当前的工作节 点所分配的最大CPU核数,计算最佳并发度信息反馈给信息采样与分析模块。
内存信息反馈模块收集的信息包括线程任务所使用的容器占用的内存大小,工作节点用于计算的最大内存值,内存空间不足时数据溢出到磁盘的大小,工作节点所拥有的CPU资源数。
监测功能的实现主要是通过在工作节点调用大数据处理系统中与内存相关的关键函数,关键函数包括有内存分配函数、内存释放函数、获取内存配置信息与CPU核数函数、获取任务运行信息函数。
信息采样与分析模块通过在主节点动态调控各个工作节点信息的采样次数,在收集信息的过程中选择性地调整工作节点CPU与内存资源比例,并且在达到指定的采样次数后对收集到的数据进行处理分析,来判断工作节点整体的内存资源竞争激烈情况,并确定工作节点当前最佳的CPU与内存资源比例。
决策与任务分发模块通过在主节点对原有的任务调度机制进行扩展,加入对内存资源和CPU资源的综合考虑,根据采样结果和当前工作节点已经分配的任务情况,综合考虑后决定是否继续分发任务到工作节点,来协调工作节点CPU和内存资源的合理使用。
如图2所示,解决大数据处理系统中内存资源激烈竞争机制的整体流程,包括以下步骤:
(1)内存信息反馈模块部署在每个工作节点上,追踪每一个线程任务运行过程中消耗的内存量Smem,并且记录内存不足时,内存数据溢出到磁盘的数据量Sspill,接着当线程任务运行完后,根据线程任务消耗的内存总量Smem+Sspill,以及工作节点分配给计算所需的最大内存空间Smax和线程任务所允许的最大并发度CLmax(申请的CPU核数),计算出适合当前资源环境的最佳并发度CLop反馈给主节点的信息采样与分析模块。当Sspill=0时,说明 当前的内存比较充足,CLop=CLmax。否则,内存资源不足,竞争激烈,
(2)信息采样与分析模块通过哈希表来管理采样数据,将各个工作节点收集的采样数据快速地分配到各个对应的处理模块进行分析处理,收到采样数据后,更新用来记录对应工作节正在运行的线程任务数量Tnum=Tnum-1。每个模块在指定的采样次数SN达到之后,将累加收集到的所有采样数据CLop,得到最后计算出适合工作节点当前最佳的并发度提交给决策与任务分发模块。
(3)决策与任务分发模块根据当前工作节点的并发度信息CLcurrent,以及信息采样与分析模块提交的CLbest,用CLbest直接赋值来更新当前的并发度信息CLcurrent和采样次数SN。最后任务分发模块根据更新后的CLcurrent值和工作节点当前正在运行的线程任务数量Tnum决策剩余线程任务是否分发到工作节点,当CLcurrent>Tnum时,继续分发任务到该工作子节点,并且更新Tnum=Tnum+1。
(4)信息采样与分析模块在收集采样数据的次数未达到SN的过程中,如果收集到CLop<CLcurrent时,说明当前内存资源竞争非常激烈,按照原来的CLcurrent值分发任务,不能快速的缓解竞争压力,需要实时做出调整CLcurrent=CLop。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
机译: 具有共享内存资源的多处理器计算机系统中动态优先级冲突解决的系统和方法
机译: 具有共享内存资源的多处理器计算机系统中动态优先级冲突解决的系统和方法
机译: 在共享内存系统中解决地址竞争和资源访问优先化的系统和方法