一种基于Spark语义的数据重用方法及其系统与流程

文档序号:12176355阅读:217来源:国知局
一种基于Spark语义的数据重用方法及其系统与流程

本发明涉及数据处理领域,尤其涉及一种基于Spark语义的数据重用方法及其系统。



背景技术:

Spark是目前高效且在产业界被广泛使用的大数据计算框架,尤其适用于多次迭代计算的应用领域,如机器学习、图处理、数据挖掘、交互式查询等,其原因在于spark可以将中间数据缓存在内存中。Spark比Hadoop更加通用、灵活,为用户提供了多种算子,并且用户可以命名、物化和控制中间结果的存储、分区等,这给开发上层应用的用户提供了方便。

此外,目前Spark的性能瓶颈已经转向CPU与内存,大容量的内存将有效地提升Spark的内存计算效率。非易失内存具有容量大、读速率快、功耗低的特点可以有效解决Spark内存计算对内存容量的需求。

目前,对Spark的数据重用技术仅局限于其本身提供的缓存算子cache等,而且这需要程序开发人员对应用程序熟悉,在程序中必须人为指导地显式调用缓存操作,不能进行启发式的自动缓存操作,并且也不具备重用缓存数据的迁移功能。



技术实现要素:

有鉴于此,本发明的目的在于提供一种基于Spark语义的数据重用方法及其系统,旨在解决现有技术中由于过度依赖人为指导地显式调用缓存操作,不能进行启发式的自动缓存操作,并且也不具备重用缓存数据的迁移功能而导致数据重用率较低且计算时间较长的问题。

本发明提出一种基于Spark语义的数据重用方法,主要包括:

语义信息收集步骤、收集Spark应用运行时的语义信息;

语义维护步骤、维护来自所述语义信息收集步骤所收集到的语义信息;

数据主动缓存步骤、根据所述语义信息和预设的阈值模型缓存未被用户程序显式缓存的数据;

缓存数据迁移步骤、根据所述语义信息和预设的阈值模型将缓存数据在动态随机存取存储器与固定存储器之间迁移。

另一方面,本发明还提供一种基于Spark语义的数据重用系统,所述系统包括:

语义信息收集模块,用于收集Spark应用运行时的语义信息;

语义维护模块,用于维护来自所述语义信息收集步骤所收集到的语义信息;

数据主动缓存模块,用于根据所述语义信息和预设的阈值模型缓存未被用户程序显式缓存的数据;

缓存数据迁移模块,用于根据所述语义信息和预设的阈值模型将缓存数据在动态随机存取存储器与固定存储器之间迁移。

本发明提供的技术方案,通过引入混合内存介质,在不增加集群规模的前提下增大了集群内存容量;通过语义信息的探索和启发式数据缓存,可以主动将被应用程序多次使用而又未被用户程序显式缓存的数据缓存起来,减少重复数据计算,提升计算效率,加速计算,有效避免了对开发人员经验的依赖;在数据缓存较多时,通过将缓存数据从动态随机存取存储器(DRAM)迁移到固定存储器(NVM),可以避免DRAM容量紧张;在DRAM内存充足时,通过将缓存数据从NVM迁移到DRAM,可以提升计算速率。

附图说明

图1为本发明一实施方式中基于Spark语义的数据重用方法流程图;

图2为本发明一实施方式中的软件系统架构图;

图3为本发明一实施方式中基于Spark语义的数据重用系统10的内部结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明提供的技术方案,为了提升Spark中的数据重用效率,加速计算,需要在Spark中设计能适应混合内存介质的启发式数据缓存与迁移机制。其原因在于在这种迭代计算框架的应用中,需要反复操作的次数越多、所需读取的数据量越大,计算受益越大,机器学习算法、交互式查询都是典型的应用,需要对重用数据进行缓存操作;非易失内存为需要缓存的数据提供了大的内存容量,在动态随机存取存储器(DRAM)内存紧张时,可以将缓存在DRAM的数据迁移到非易失内存。

以下将对本发明所提供的一种基于Spark语义的数据重用方法进行详细说明。

请参阅图1,为本发明一实施方式中基于Spark语义的数据重用方法流程图。

在步骤S1中,语义信息收集步骤、收集Spark应用运行时的语义信息。

在本实施方式中,所述语义信息收集步骤主要包括:

根据Spark任务在被执行时,利用调度器(DAG scheduler)将Spark任务拆分成多个有依赖关系的执行阶段(Stage),然后通过语义收集器在Spark任务被执行过程中收集语义信息。

在本实施方式中,为了克服现有技术的缺陷,提供一种基于Spark语义的数据重用方法,该方法引入了非易失内存,在Spark中设计能适应混合内存介质的启发式数据缓存与迁移机制,在保证数据内存充足的前提下,提高数据重用率,减少计算时间。

具体的,将混合内存应用在spark上,并设计启发式数据重用方法。所述混合内存指的是DRAM和固定存储器(non-volatile memory,NVM,也称之为非易失性存储器或者非易失内存)混合介质;所述的启发式数据重用方法包括主动缓存机制和缓存数据迁移机制,体现在spark语义收集、语义维护、主动缓存和缓存数据迁移四个方面。其中,混合内存材质可以是Flash,结构可以是外部式结构。

在本实施方式中,所述语义信息可以保存以下信息:Stageid、RDDid、RDDid_size、RDDid_readtimes、RDDid_cacheflag、Cache_type。其中,Stageid表示Stage的标号,RDDid表示Stage中某一RDD的标号,RDDid_size表示这个RDD的大小,RDDid_readtimes表示该RDD被读(或者被使用)的次数,RDDid_cacheflag表示布尔值,表明一个RDD是否被用户程序显式缓存,Cache_type表示数据缓存的位置。其中,Stage表示执行阶段,RDD(Resilient Distributed Datasets)表示弹性分布式数据集,是分布式内存的一个抽象概念,是spark中最重要的概念,可以简单的把RDD理解成一个提供了许多操作接口的数据集合,和一般数据集不同的是,其实际数据分布存储于一批机器中(内存或磁盘中),当然,RDD肯定不会这么简单,它的功能还包括容错、集合内的数据可以并行处理等。与许多专有的大数据处理平台不同,Spark建立在统一抽象的RDD之上,使得它可以以基本一致的方式应对不同的大数据处理场景。

在步骤S2中,语义维护步骤、维护来自所述语义信息收集步骤所收集到的语义信息。

在本实施方式中,所述语义维护步骤主要包括:

利用语义信息维护组件保存并维护来自所述语义信息收集步骤所收集到的语义信息,并在维护过程中利用所述语义信息维护组件根据用户预定义的阈值触发缓存操作,其中,维护操作包括增加语义信息操作、修改语义信息操作以及删除语义信息操作。

在本实施方式中,本发明提供的语义收集主要通过在spark中设计语义信息收集器,用于在程序运行时,收集语义信息,并传递给予语义维护步骤,本发明提供的语义维护主要通过在spark中设计语义信息维护组件,用于维护语义信息,并运行阈值模型,触发执行引擎中的数据缓存或迁移。主要分两方面:

(a)、跟踪并计算语义中未显式缓存的RDD的大小以及读次数,然后判别是否到达阈值模型中的阈值,触发缓存操作,并修改维护的语义;

(b)、跟踪并计算语义中已经被缓存(包含用户显式缓存与启发式缓存)的RDD的大小以及读次数,调用阈值模型,然后在DRAM内存紧张时,触发缓存数据从DRAM迁移到NVM,并修改维护的语义。

在步骤S3中,数据主动缓存步骤、根据所述语义信息和预设的阈值模型缓存未被用户程序显式缓存的数据。

在本实施方式中,所述数据主动缓存步骤主要包括:

跟踪并计算语义中未被用户程序显式缓存的弹性分布数据集的大小以及读次数,如果大小和读次数都到达阈值模型中对应的阈值时,则触发缓存操作将没有主动缓存的数据缓存到所述固定存储器中,如果大小没有到达阈值但是读次数达到了阈值时,则触发缓存操作将没有主动缓存的数据缓存到所述动态随机存取存储器中。

在本实施方式中,提供的启发式数据主动缓存,在执行引擎中实现,设计新的storagelevel,调用缓存算子来实现,详细包括以下几个子步骤:

(1)Spark在执行任务时,其调度器(DAG scheduler)把任务拆分成多个有依赖关系的执行阶段(stage),这些阶段和关系一起构成一个有向无环图(DAG);

(2)语义收集器(主要是调用REST API)在spark任务执行过程中收集其语义信息,例如任务执行过程中的stage编号、RDD编号等;

(3)语义信息维护组件保存并维护上一步收集来的语义信息,具体维护操作有增加、修改、删除语义信息等,在维护过程中,语义维护组件根据用户预定义的“阈值”触发缓存操作,例如语义信息中的RDDID_READtimes大于用户预定义值时,对“对应的RDD”进行缓存操作;

(4)对于经常被读(用户可以自定义被读次数大于一预设值时称之为经常被读)、大小较大(具体大小的判别由用户自定义)且用户没有主动缓存的RDD,将触发数据主动缓存,数据将缓存到非易失内存;对于经常被读、大小不大且用户没有主动缓存的RDD,将被主动缓存到DRAM中;对于其他情况不进行任何操作;

(5)更新当前语义信息后回到子步骤(2),继续收集语义信息执行后继操作。

在步骤S4中,缓存数据迁移步骤、根据所述语义信息和预设的阈值模型将缓存数据在动态随机存取存储器与固定存储器之间迁移。

在本实施方式中,所述缓存数据迁移步骤主要包括:

对于已经被缓存的数据,如果弹性分布数据集的大小达到阈值但读次数没有达到阈值,且此时所述动态随机存取存储器的存储空间不足时,则将已经缓存到所述动态随机存取存储器中的数据迁移至所述固定存储器中进行存储,反之则迁移到所述动态随机存取存储器进行存储。

在本实施方式中,提供的启发式缓存数据迁移,在执行引擎中实现,在内存管理中增加对非易失内存申请分配的支持来实现,详细包括以下几个子步骤:

(6)Spark任务在执行时,通过DAG sheduler将DAG图分解成多个stage;

(7)语义收集器(主要是调用REST API)在程序运行时收集语义信息;

(8)语义信息维护组件对信息进行维护,并运行阈值模型,触发相应操作;

(9)对于已经被缓存的数据,若在DRAM中且大小较大被读的次数又不多(具体大小/多少的判断值由用户自定义),DRAM内存又紧张时,则迁移到非易失内存;反之,迁移到DRAM;

(10)更新当前语义信息后回到步骤(7),继续收集语义信息执行后继操作。

本发明提供的一种基于Spark语义的数据重用方法,通过引入混合内存介质,在不增加集群规模的前提下增大了集群内存容量;通过语义信息的探索和启发式数据缓存,可以主动将被应用程序多次使用而又未被用户程序显式缓存的数据缓存起来,减少重复数据计算,提升计算效率,加速计算,有效避免了对开发人员经验的依赖;在数据缓存较多时,通过将缓存数据从DRAM迁移到NVM,可以避免DRAM容量紧张;在DRAM内存充足时,通过将缓存数据从NVM迁移到DRAM,可以提升计算速率。

请参阅图2,为本发明一实施方式中的软件系统架构图。

以下将对本发明所提供的一种基于Spark语义的数据重用系统进行详细说明。

请参阅图3,所示为本发明一实施方式中基于Spark语义的数据重用系统10的结构示意图。

在本实施方式中,基于Spark语义的数据重用系统10,主要包括语义信息收集模块11、语义维护模块12、数据主动缓存模块13以及缓存数据迁移模块14。

语义信息收集模块11,用于收集Spark应用运行时的语义信息。

在本实施方式中,所述语义信息收集模块11具体用于:

根据Spark任务在被执行时,利用调度器将Spark任务拆分成多个有依赖关系的执行阶段,然后通过语义收集器在Spark任务被执行过程中收集语义信息。

语义维护模块12,用于维护来自所述语义信息收集步骤所收集到的语义信息。

在本实施方式中,所述语义维护模块12具体用于:

利用语义信息维护组件保存并维护来自所述语义信息收集步骤所收集到的语义信息,并在维护过程中利用所述语义信息维护组件根据用户预定义的阈值触发缓存操作,其中,维护操作包括增加语义信息操作、修改语义信息操作以及删除语义信息操作。

数据主动缓存模块13,用于根据所述语义信息和预设的阈值模型缓存未被用户程序显式缓存的数据。

在本实施方式中,所述数据主动缓存模块13具体用于:

跟踪并计算语义中未被用户程序显式缓存的弹性分布数据集的大小以及读次数,如果大小和读次数都到达阈值模型中对应的阈值时,则触发缓存操作将没有主动缓存的数据缓存到所述固定存储器中,如果大小没有到达阈值但是读次数达到了阈值时,则触发缓存操作将没有主动缓存的数据缓存到所述动态随机存取存储器中。

缓存数据迁移模块14,用于根据所述语义信息和预设的阈值模型将缓存数据在动态随机存取存储器与固定存储器之间迁移。

在本实施方式中,所述缓存数据迁移模块14具体用于:

对于已经被缓存的数据,如果弹性分布数据集的大小达到阈值但读次数没有达到阈值,且此时所述动态随机存取存储器的存储空间不足时,则将已经缓存到所述动态随机存取存储器中的数据迁移至所述固定存储器中进行存储,反之则迁移到所述动态随机存取存储器进行存储。

本发明提供的一种基于Spark语义的数据重用系统10,通过引入混合内存介质,在不增加集群规模的前提下增大了集群内存容量;通过语义信息的探索和启发式数据缓存,可以主动将被应用程序多次使用而又未被用户程序显式缓存的数据缓存起来,减少重复数据计算,提升计算效率,加速计算,有效避免了对开发人员经验的依赖;在数据缓存较多时,通过将缓存数据从DRAM迁移到NVM,可以避免DRAM容量紧张;在DRAM内存充足时,通过将缓存数据从NVM迁移到DRAM,可以提升计算速率。

值得注意的是,上述实施例中,所包括的各个单元只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。

另外,本领域普通技术人员可以理解实现上述各实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,相应的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘或光盘等。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1