CN112685438A - 数据处理系统、方法、装置及存储介质 - Google Patents
数据处理系统、方法、装置及存储介质 Download PDFInfo
- Publication number
- CN112685438A CN112685438A CN202011594743.8A CN202011594743A CN112685438A CN 112685438 A CN112685438 A CN 112685438A CN 202011594743 A CN202011594743 A CN 202011594743A CN 112685438 A CN112685438 A CN 112685438A
- Authority
- CN
- China
- Prior art keywords
- rdd
- data
- target
- data processing
- execution end
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请实施例公开了一种数据处理系统、方法、装置及存储介质,属于大数据技术领域。在本申请实施例提供的数据处理系统中,驱动端可以响应于数据处理请求向目标执行端下发RDD算子,基于该RDD算子所指示的数据处理流程,目标执行端会向自身所管理的多个块中各个块下发数据过滤算子,以将数据处理请求中的运算逻辑下推至各个块中。如此,在数据计算过程中,目标执行端仅仅需要基于各个块过滤后的数据进行数据计算即可,无需基于各个块中全部数据来进行数据计算,从而降低了数据计算的复杂度,进而提高了数据计算的效率。
Description
技术领域
本申请实施例涉及大数据技术领域,特别涉及一种数据处理系统、方法、装置及存储介质。
背景技术
为了应对当前的各种类型的数据处理需求,数据处理系统应运而生。数据处理系统具体是一种处理数据的计算引擎。用户可以通过数据处理系统来触发了一个数据处理任务,然后由该数据处理系统执行该数据处理任务,并向用户返回数据处理结果。
相关技术中,Spark系统是面对大规模数据处理的一种数据处理系统。当通过Spark系统执行针对大规模数据的数据处理任务时,为了提高数据处理的效率,Spark系统在接收到数据处理任务时,先从存储系统中获取该数据处理任务所需的所有数据,并将所有数据放置在Spark系统的缓存中。然后对缓存中这些数据依次迭代进行处理,从而提高数据处理任务的执行效率。
在上述Spark系统中,对于大数据量的数据处理任务,加载至缓存的数据的数量将非常大,这样导致迭代过程中处理的数据量也非常大,使得后续的数据计算的过程的效率比较低。
发明内容
本申请实施例提供了一种处理系统、方法、装置及存储介质,可以提高数据处理的效率。所述技术方案如下:
一方面,提供了一种数据处理系统,所述处理处理系统包括多个执行端(executor)和驱动端(driver),所述多个执行端中每个执行端包括缓存区,所述缓存区中管理有多个块(block),所述多个块中每个块用于缓存一个弹性分布式数据集RDD中的部分数据;
所述驱动端用于响应于数据处理请求确定目标执行端,向所述目标执行端下发弹性分布式数据集RDD算子,所述RDD算子指示所述目标执行端的数据处理流程和所述数据处理请求的运算逻辑;
所述目标执行端用于基于所述RDD算子向所述目标执行端管理的多个块中每个块下发和数据过滤算子,所述数据过滤算子指示所述数据处理请求的运算逻辑,,以使每个块基于所述数据过滤算子对自身存储的数据进行过滤并返回数据过滤结果;
所述目标执行端还用于接收所管理的多个块中每个块返回的数据过滤结果,基于每个块返回的数据过滤结果确定数据处理结果,向所述驱动端返回所述数据处理结果
可选地,所述驱动端包括RDD控制模块和分区RDD控制模块;
所述RDD控制模块用于响应于所述数据处理请求,确定目标RDD,所述目标RDD包括所述数据处理请求所需的数据;
所述RDD控制模块还用于基于所述目标RDD,确定目标分区RDD,所述目标分区RDD为所述目标RDD包括的多个分区RDD中的一个分区RDD;
所述RDD控制模块还用于向所述目标分区RDD对应的分区RDD控制模块下发操作算子,所述操作算子指示所述分区RDD控制模块控制所述目标分区RDD对应的目标执行端;
所述分区RDD控制模块用于基于所述目标分区RDD确定所述目标执行端,向所述目标执行端下发所述RDD算子。
可选地,所述目标执行端还包括迭代器;
所述驱动端用于:
基于所述迭代器逐步迭代处理每个块返回的数据过滤结果中每条数据,在确定所有数据过滤结果中的数据迭代完成后,得到所述数据处理结果。
可选地,所述驱动端还用于响应于所述数据处理请求确定目标RDD的标识,所述目标RDD包括所述数据处理请求所需的数据;
所述驱动端还用于基于所述目标RDD的标识控制目标执行端将所述目标RDD中包括的数据加载至所述缓存区中块中。
可选地,所述驱动端还用于:
响应于缓存区配置指令,确定目标存储介质类型;
基于所述目标存储介质类型配置所述缓存区。
可选地,所述驱动端还用于:
响应于缓存区配置指令,确定目标数据存储方式,所述目标数据存储方式为所述缓存区中的数据存储方式。
另一方面,提供了一种数据处理方法,所述方法由数据处理系统中的驱动端来执行,所述处理处理系统还包括多个执行端,所述多个执行端中每个执行端包括缓存区,所述缓存区中管理有多个块,所述多个块中每个块用于缓存一个弹性分布式数据集RDD中的部分数据;
所述方法包括:
所述驱动端响应于数据处理请求确定目标执行端,向所述目标执行端下发弹性分布式数据集RDD算子;
其中,所述RDD算子指示所述目标执行端的数据处理流程和所述数据处理请求的运算逻辑,以使所述目标执行端用于基于所述RDD算子向所述目标执行端管理的多个块中每个块下发和数据过滤算子,所述数据过滤算子指示所述数据处理请求的运算逻辑,以使每个块基于所述数据过滤算子对自身存储的数据进行过滤并返回给所述目标执行端数据过滤结果。
所述驱动端接收所述目标执行端返回的数据处理结果,所述数据处理结果是所述目标执行端基于所管理的各个块返回的数据过滤结果确定的。
可选地,所述驱动端包括RDD控制模块和分区RDD控制模块;
所述驱动端响应于数据处理请求确定目标执行端,向所述目标执行端下发弹性分布式数据集RDD算子,包括:
所述RDD控制模块响应于所述数据处理请求,确定目标RDD,所述目标RDD包括所述数据处理请求所需的数据;
所述RDD控制模块基于所述目标RDD,确定目标分区RDD,所述目标分区RDD为所述目标RDD包括的多个分区RDD中的一个分区RDD;
所述RDD控制模块向所述目标分区RDD对应的分区RDD控制模块下发操作算子,所述操作算子指示所述分区RDD控制模块控制所述目标分区RDD对应的目标执行端;
所述分区RDD控制模块基于所述目标分区RDD确定所述目标执行端,向所述目标执行端下发所述RDD算子。
可选地,所述目标执行端还包括迭代器;
所述数据处理结果是所述目标执行端基于所述迭代器逐步迭代处理所管理的各个块返回的数据过滤结果中每条数据,在确定所有数据过滤结果中的数据迭代完成后,得到所述数据处理结果。
可选地,所述驱动端响应于数据处理请求确定目标执行端,向所述目标执行端下发弹性分布式数据集RDD算子之前,所述方法还包括:
响应于所述数据处理请求确定目标RDD的标识,所述目标RDD包括所述数据处理请求所需的数据;
基于所述目标RDD的标识控制目标执行端将所述目标RDD中包括的数据加载至所述缓存区中块中。
可选地,所述方法还包括:
响应于缓存区配置指令,确定目标存储介质类型;
基于所述目标存储介质类型配置所述缓存区。
可选地,所述方法还包括:
响应于缓存区配置指令,确定目标数据存储方式,所述目标数据存储方式为所述缓存区中的数据存储方式。
第三方面,提供了一种数据处理装置,该装置包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述第二方面所述的方法的步骤。
第四方面,提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有指令,所述指令被处理器执行时实现上述第二方面所述的方法的步骤。
第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第二方面所述的方法的步骤。
本申请实施例提供的技术方案带来的有益效果至少包括:
在本申请实施例提供的数据处理系统中,驱动端可以响应于数据处理请求向目标执行端下发RDD算子,基于该RDD算子所指示的数据处理流程,目标执行端会向自身所管理的多个块中各个块下发数据过滤算子,以将数据处理请求中的运算逻辑下推至各个块中。如此,在数据计算过程中,目标执行端仅仅需要基于各个块过滤后的数据进行数据迭代计算即可,无需基于各个块中全部数据来进行数据迭代计算,从而降低了数据计算的复杂度,进而提高了数据计算的效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种Spark系统的架构示意图;
图2是本申请实施例提供的一种数据处理系统的架构示意图;
图3是本申请实施例提供的一种数据处理方法流程图;
图4是本申请实施例提供的另一种计算逻辑下推至块的示意图;
图5是本申请实施例提供的一种数据过滤示意图;
图6是本申请实施例提供的一种缓存数据的示意图;
图7是本申请实施例提供的一种服务器的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
为了后续便于说明,在此先对本申请实施例涉及的应用场景进行详细说明。
本申请实施例提供的数据处理系统为基于Spark系统的一种数据处理系统。也即是,本申请实施例对Spark系统进行了扩展,从而得到本申请实施例提供的数据处理系统。
图1是本申请实施例提供的一种Spark系统的架构示意图。如图1所示,Spark系统中包括驱动端(driver)和多个执行端(executor),这多个执行端中每个执行端和驱动端之间通过有线或无线方式连接以进行通信。
其中,驱动端用于响应于数据处理请求来完成该数据处理请求所指示的任务。用户可以通过编写一段程序代码来触发该数据处理请求,其中程序代码中编写有该数据处理请求所需携带的计算逻辑。换句话说,驱动端相当于一个客户端,用户通过该客户端可以实现某个数据处理任务,在实现数据处理任务的过程中基于该驱动端来触发数据处理请求。
驱动端在检测到该数据处理请求后,根据该数据处理请求从数据源中读取数据,然后生成一个RDD(resilient distributed dataset,弹性分布式数据集),该RDD中包括了该数据处理请求所需要的数据。然后基于RDD向各个执行端下发和该RDD对应的RDD算子。该RDD算子指示各个执行端的数据处理流程以及和该数据处理请求对应的运算逻辑,以便各个执行端基于该RDD算子进行数据计算。
目前的Spark系统中,RDD算子指示的各个执行端的数据处理流程通常为:各个执行端从底层存储介质中加载和该RDD对应的数据,并将加载的数据放置在自身的缓存中,数据在缓存中是以块(block)为单位存储的。在后续的数据计算时,各个执行端基于该数据处理请求对应的运算逻辑依次处理各个块中的每条数据,最终得到数据处理结果,然后将数据处理结果返回至驱动端。其中,该RDD对应的数据是指执行端的地层存储介质中存储的属于RDD的数据。
其中,执行端是通过迭代器(iterator)来基于该数据处理请求对应的运算逻辑依次处理各个块中的每条数据的。如此就需要通过迭代器获取各个块中的每一条数据,然后将每条数据应用到具体的算子上。此时,如果数据以序列化的方式存储缓存中,那么迭代器进行数据计算之前需要将各个块中所有数据进行反序列化,从而导致计算效率比较低。其中,序列化(serialization)是一种将对象以一连串的字节描述的过程,反序列化(deserialization)是一种将这些字节重建成一个对象的过程。
此外,目前的Spark系统中,每个执行端上的缓存可以包括基于内存的缓存(memory store)和基于硬盘的缓存(disk-store)。其中,基于内存的缓存是指从执行端的内存中划分一部分存储空间来作为缓存。基于磁盘的缓存试试从执行端的磁盘中划分一部分存储空间来作为缓存。
此外,如图1所示,执行端中包括块管理模块(block manager),块管理模块用于对缓存中各个块进行管理。比如,在针对某个数据处理请求,执行端在确定了缓存和该数据处理请求对应的数据中的各个块后,执行端还将这些块的相关信息上报给驱动端。驱动端中包括块管理主机(block manager master),块管理主机用于存储各个块和RDD之间的映射关系,以便于在后续数据计算时,基于该映射关系快速触发数据计算。
需要说明的是,图1中是以一个执行端为例进行说明,每个执行端相当于一个独立的任务执行进程,各个执行端之间相互独立,从而实现数据处理的并发进行,进而提高数据处理效率。
对于图1所示的Spark系统,目前主要存在两个问题。一个问题是:在数据计算时,需要通过迭代器获取各个块中的每一条数据,然后将每条数据应用到具体的算子上。此时,如果数据以序列化的方式存储缓存中,那么迭代器在进行数据计算之前需要将各个块中所有数据进行反序列化,从而导致计算效率比较低。另一个问题是:各个执行端中的缓存均是预先配置的,灵活性较低。
对于图1所提供的Spark系统存在的技术问题,本申请实施例提供了一种数据处理系统。该数据处理系统对图1所示的Spark系统进行了扩展。具体扩展内容包括以下两个方面。
1、对驱动端向执行端下发的RDD算子所指示的各个执行端的数据处理流程进行更改。
在图1所示的系统,RDD算子指示的各个执行端的数据处理流程为:各个执行端在缓存数据后,在后续的数据计算时,各个执行端基于该数据处理请求对应的运算逻辑依次处理各个块中的每条数据,最终得到数据处理结果,然后将数据处理结果返回至驱动端。
在本申请实施例中,RDD算子指示的各个执行端的数据处理流程为:各个执行端在缓存数据后,在后续的数据计算时,各个执行端向缓存中的各个块下发数据过滤算子,该数据过滤算子指示该数据处理请求的运算逻辑,以使每个块基于该数据过滤算子对自身存储的数据进行过滤并返回数据过滤结果,然后执行端再基于每个块返回的数据过滤结果确定数据处理结果,向驱动端返回数据处理结果。
如此,迭代器仅仅需获取各个块过滤后的数据即可,然后将过滤后的各条数据应用到具体的算子上即可,无需将各个块中所有数据应用到具体的算子上。此时,如果数据以序列化的方式存储在缓存中,那么迭代器进行数据计算之前仅仅需要将各个块过滤后的数据进行反序列化,大大减少了需要反序列化的数据的数量,从而提高了迭代器的数据处理效率,进而提高了整个数据处理流程。上述内容的具体实现方式将在后续实施例中详细说明在,在此先不展开阐述。
需要说明的是,每个块基于该数据过滤算子对自身存储的数据进行过滤并返回数据过滤结果的过程中,并不涉及需要将块中序列化的数据反序列化。也即是,在每个块进行数据过滤的过程中,仅仅需要过滤掉不符合条件的序列化数据即可,然后将符合条件的序列化数据返回至执行端来迭代处理即可。
2、在执行端中扩展新的类型的缓存。
在图1所示的系统中,执行端中缓存要么是基于内存的缓存要么是基于磁盘的缓存,且这两种类型的缓存是预先配置好的,并不会随着用户的业务的变化而变化,也即是,在不同的业务场景中,执行端中配置的缓存均是这两种类型。此外,这两种类型的缓存中存储的数据的格式也是固定不变的。
对此,本申请实施例提供的数据处理系统中的执行端中的缓存可以在上述两种类型的缓存的基础上,新增一种用户自定义缓存(user defined store),该用户自定义缓存也称为storage buffer,该用户自定义缓存的存储介质的类型以及数据存储格式均可以由用户通过驱动端来配置。从而提高了本申请实施例提供的数据处理系统的灵活性。其中,用户自定义缓存的底层存储介质可以为硬盘(disk)、堆内内存(ON-HEAP)、堆外内存(OFF-HEAP)、DCPMM(一种永久性内存)等等。
如此,当用户在不同的业务场景中使用本申请实施例通过的数据处理系统时,便可基于不同的业务需求配置用户自定义缓存的底层存储介质以及缓存中的数据的具体存储格式。具体实现方式将在后续实施例中详细说明在,在此先不展开阐述。
基于上述配置本申请实施例提供了一种全新的数据处理系统。图2是本申请实施例提供的一种数据处理系统的架构示意图。如图2所示,该数据处理系统包括多个执行端(executor)和驱动端(driver),这多个执行端中每个执行端包括缓存区,该缓存区中管理有多个块(block),这多个块中每个块用于缓存一个RDD中的部分数据。
如图2所示,驱动端中扩展有RDD控制模块(storageRDD)和分区RDD控制模块(storage partition RDD)。此外,如图2所示,驱动端中还包括有其他的RDD模块,在此不再一一举例说明。
其中,RDD控制模块用于实现指定具体的用户自定义缓存,并定义了操作(mapstorgage)算子,该算子用于将某个RDD转换为分区RDD。分区RDD控制模块用于直接操作底层的执行端上的用户自定义缓存,通过对执行端的用户自定义缓存中的每个块应用计算函数,实现各个块对数据的过滤。
关于RDD控制模块和分区RDD控制模块的功能将在后续实施例中详细说明,在此就先不展开阐述。
如图2所示,每个执行端上除了包括块管理模块(block manager),还包括缓存,该缓存可以包括本申请实施例提供的用户自定义缓存,也可以包基于内存的缓存和/或基于磁盘的缓存。
此外,为了能够实现上述用户自定义缓存,执行端上还可以配置缓存定义模块和资源管理模块。
其中,缓存定义模块用于自定义该用户自定义缓存的存储介质和存储方式(存储方式指示数据的存储格式),具体可以基于spark系统的缓存机制实现。如此,数据便可以指定的格式通过迭代的方式写入指定的存储介质中,该指定的存储介质可以包括内存、DCPMM、磁盘等等。在数据写入用户自定义缓存之后,由于用户自定义缓存中的数据是以块为单位存储的,因此执行端还向驱动端上的块管理主机报告写入的块的信息。其中,用户自定义缓存中提供了数据读取和写入的相关具体操作。本申请实施例对此不作限定。
资源管理模块上保存着用户自定义缓存中使用资源的情况和总资源量,在初始化用户自定义缓存时,可以根据配置文件生成该用户自定义缓存的资源,用户可以在配置文件中配置用户自定义缓存中的资源使用的上限。当RDD进行缓存操作时,执行申请和释放相关用户自定义缓存中的资源的操作。
下面对本申请实施例提供的数据处理方法进行详细解释说明。
图3是本申请实施例提供的一种数据处理方法流程图。该数据处理方法应用于图2所示的数据处理系统,如图3所示,该方法包括如下几个步骤。
步骤301:驱动端响应于数据处理请求确定目标执行端,向目标执行端下发RDD算子,其中,RDD算子指示目标执行端的数据处理流程和数据处理请求的运算逻辑,以使目标执行端用于基于RDD算子向目标执行端管理的多个块中每个块下发数据过滤算子,数据过滤算子指示数据处理请求的运算逻辑,以使每个块基于数据过滤算子对自身存储的数据进行过滤并返回给目标执行端数据过滤结果。
基于图2所示的数据处理系统可知,在一种可能的实现方式中,驱动端可以包括RDD控制模块和分区RDD控制模块。此时,驱动端响应于数据处理请求确定目标执行端,向目标执行端下发RDD算子的实现过程为:RDD控制模块响应于数据处理请求,确定目标RDD,目标RDD包括数据处理请求所需的数据;RDD控制模块基于目标RDD,确定目标分区RDD,目标分区RDD为目标RDD包括的多个分区RDD中的一个分区RDD;RDD控制模块向目标分区RDD对应的分区RDD控制模块下发操作算子,操作算子指示分区RDD控制模块控制目标分区RDD对应的目标执行端;分区RDD控制模块基于目标分区RDD确定目标执行端,向目标执行端下发RDD算子。
也即是,在本申请实施例中,RDD控制模块并不直接作用于执行端,而是由RDD对应的分区RDD的分区RDD控制模块来作用于执行端,从而便于各个RDD分区的并行处理。
其中,每个数据处理请求在执行时均需要利用存储介质上已经存储的数据,在数据处理系统中,为了提高数据处理请求的效率,当接收到数据处理请求时,先响应于数据处理请求确定目标RDD,也即是先确定存储介质中哪些数据会被使用到,以构成一个临时的数据集合,该临时的数据集合即为该数据处理请求对应的RDD。因此,每个数据处理请求对应一个RDD,不同数据处理请求对应的RDD可不同,也可以相同。在每个数据处理请求执行结束后,相应的RDD也可以释放。
此外,为了便于数据的并发处理,数据处理系统中的数据可以以分区形式存在。如此,上述确定的目标RDD也相应被划分为多个分区RDD。每个分区RDD对应一个或多个执行端,这一个或多个执行端的底层存储介质中存储有相应分区RDD中的数据。且每个分区RDD对应一个分区RDD控制模块,该分区RDD控制模块用于控制该分区RDD对应的各个执行端。
可选地,驱动端也可以通过其他途径向目标执行端来下发RDD算子,比如,驱动端仅通过RDD控制模块来向目标执行端下发RDD算子。本申请实施例对此不作限定。
目标执行端在接收到RDD算子之后,由于本申请实施例中RDD算子指示的数据处理流程为:各个执行端在缓存数据后,在后续的数据计算时,各个执行端向缓存中的各个块下发数据过滤算子,该数据过滤算子指示该数据处理请求的运算逻辑,以使每个块基于该数据过滤算子对自身存储的数据进行过滤并返回数据过滤结果,然后执行端再基于每个块返回的数据过滤结果确定数据处理结果,向驱动端返回数据处理结果。
因此,在本申请实施例中,目标执行端在接收到RDD算子后,并不是将管理的各个块中的所有数据反序列化之后,通过迭代器依次处理。而是基于RDD算子向目标执行端管理的多个块中每个块下发数据过滤算子。由于该数据过滤算子指示数据处理请求的运算逻辑,如此每个块基于数据过滤算子便可对自身存储的数据进行过滤,得到数据过滤结果,然后各个块向目标执行端返回数据过滤结果即可。
此外,目标执行端还包括迭代器的情况下,上述数据处理结果是目标执行端基于迭代器逐步迭代处理所管理的各个块返回的数据过滤结果中每条数据,在确定所有数据过滤结果中的数据迭代完成后,得到数据处理结果。
图4是一种通过图1所示的Spark系统和图2所示的数据处理系统分别处理数据处理请求的流程对比图。图4箭头左边所示的流程为基于优化前的图1所示的Spark系统的数据处理流程。图4箭头右边所示的流程为基于优化后的图2所示的数据处理系统的数据处理流程。如图4所示,通过本申请实施例提供的优化后的数据处理系统可以将计算任务下推至各个块,然后各个块向迭代器返回的过滤后的数据。从而减少了后续迭代器的数据处理量。
此外,图4中通过输入模块将数据写入各个块用于说明各个块中的数据如何写入的,本申请实施例对这部分内容不做限定。
图5是对上述过程的进一步说明,如图5所示,假设某个块中包括数据1(data1)、数据2(data2)、数据3(data3)、数据4(data4)等数据。在经过该块的过滤之后,该块仅需要向迭代器返回部分的数据1和数据3即可,无需返回块中该块中缓存的全部数据。如此,迭代器仅需对数据1和数据3进行反序列化操作,然后进一步计算后输出数据处理结果即可。
此外,上述目标执行端管理的各个块中缓存的数据是在接收到数据处理请求后先缓存的。也即是,在图2所示的数据处理系统中,数据的缓存和执行的操作是分开的,也就是在真正触发计算的行动操作出现之前,数据处理系统会存储起来对哪些数据(也即是该数据处理请求对应的RDD)执行哪些计算。数据和计算之间的映射关系就存储在RDD控制模块中。
下面对本申请实施例涉及的数据缓存过程进行详细说明。
在一种可能的实现方式中,驱动端响应于数据处理请求确定目标RDD的标识,目标RDD包括数据处理请求所需的数据,基于目标RDD的标识控制目标执行端将目标RDD中包括的数据加载至缓存区中的块中。
关于驱动端如何确定目标RDD以及目标执行端前述实施例中已经详细说明,在此不再赘述。
在本申请实施例中,上述缓存区可以是用户自定义的缓存区,从而提高了数据缓存的灵活性。
在一种可能的实现方式中,驱动端可以响应于缓存区配置指令,确定目标存储介质类型,基于目标存储介质类型配置缓存区。在另一种可能的实现方式中,驱动端可以响应于缓存区配置指令,确定目标数据存储方式,目标数据存储方式为缓存区中的数据存储方式。
上述缓存区配置指令可以由用户通过预设操作触发。
上述缓存区配置指令均由用户通过预设操作触发,该预设操作可以为点击、滑动或语音等操作。也即是,在本申请实施例中,用户可以基于业务需求灵活设置用户自定义缓存的存储介质的类型以及用户自定义缓存中的数据存储格式,提高了用户自定义缓存的灵活性。
图6是本申请实施例提供的一种缓存数据的流程示意图。如图6所示,该数据缓存流程包括以下几个步骤。
(1)首先通过RDD控制模块自定义执行端上的缓存,从而实现在执行端上配置用户自定义缓存。
(2)在检测到数据处理请求后,通过RDD控制模块中指定通过用户自定义缓存来缓存数据处理请求所需的数据。具体可以通过调用persist()函数的方式设置数据需要的缓存为用户自定义缓存。
(3)然后RDD控制模块执行运行(Action)算子,实现具体计算逻辑,然后将运行算子分发到目标执行端(Executor)中,该算子用于指示目标执行端缓存数据;
(4)在每个目标执行端中,块管理模块(BlockManager)检查分区RDD中的块是否已经缓存,若没有缓存则获取父RDD数据进行计算。由于RDD中的数据是一级一级计算得到的,因此当前RDD没有缓存数据时,则获取上一级也即是父RDD的数据,然后计算父RDD的数据,把将计算结果放入缓存,以便下一次从当前计算结果开始计算,避免了需要重新开始计算。
(5)并在自身的资源管理模块中申请缓存资源,将针对父RDD数据的数据计算结果以迭代的方式写入申请到的用户自定义缓存中。
(6)目标执行端在写入完成后,通知驱动端数据缓存在哪些块上。至此完整数据缓存过程。
步骤302:驱动端接收目标执行端返回的数据处理结果,数据处理结果是目标执行端基于所管理的各个块返回的数据过滤结果确定的。
在本申请实施例提供的数据处理系统中,驱动端可以响应于数据处理请求向目标执行端下发RDD算子,基于该RDD算子所指示的数据处理流程,目标执行端会向自身所管理的多个块中各个块下发数据过滤算子,以将数据处理请求中的运算逻辑下推至各个块中。如此,在数据计算过程中,目标执行端仅仅需要基于各个块过滤后的数据进行数据计算即可,无需基于各个块中全部数据来进行数据计算,从而降低了数据计算的复杂度,进而提高了数据计算的效率。
上述所有可选技术方案,均可按照任意结合形成本申请的可选实施例,本申请实施例对此不再一一赘述。
图7是本申请实施例提供的一种服务器结构示意图。该服务器可以是后台服务器集群中的服务器。具体来讲:
服务器700包括中央处理单元(CPU)701、包括随机存取存储器(RAM)702和只读存储器(ROM)703的系统存储器704,以及连接系统存储器704和中央处理单元701的系统总线705。服务器700还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)706,和用于存储操作系统713、应用程序714和其他程序模块715的大容量存储设备707。
基本输入/输出系统706包括有用于显示信息的显示器708和用于用户输入信息的诸如鼠标、键盘之类的输入设备709。其中显示器708和输入设备709都通过连接到系统总线705的输入输出控制器710连接到中央处理单元701。基本输入/输出系统706还可以包括输入输出控制器710以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器710还提供输出到显示屏、打印机或其他类型的输出设备。
大容量存储设备707通过连接到系统总线705的大容量存储控制器(未示出)连接到中央处理单元701。大容量存储设备707及其相关联的计算机可读介质为服务器700提供非易失性存储。也就是说,大容量存储设备707可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
不失一般性,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。上述的系统存储器704和大容量存储设备707可以统称为存储器。
根据本申请的各种实施例,服务器700还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器700可以通过连接在系统总线705上的网络接口单元711连接到网络712,或者说,也可以使用网络接口单元711来连接到其他类型的网络或远程计算机系统(未示出)。
上述存储器还包括一个或者一个以上的程序,一个或者一个以上程序存储于存储器中,被配置由CPU执行。所述一个或者一个以上程序包含用于进行本申请实施例提供的数据处理方法的指令。
本申请实施例还提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由服务器的处理器执行时,使得服务器能够执行上述实施例提供的数据处理方法。
本申请实施例还提供了一种包含指令的计算机程序产品,当其在服务器上运行时,使得服务器执行上述实施例提供的数据处理方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请实施例的较佳实施例,并不用以限制本申请实施例,凡在本申请实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (14)
1.一种数据处理系统,其特征在于,所述处理处理系统包括多个执行端(executor)和驱动端(driver),所述多个执行端中每个执行端包括缓存区,所述缓存区中管理有多个块(block),所述多个块中每个块用于缓存一个弹性分布式数据集RDD中的部分数据;
所述驱动端用于响应于数据处理请求确定目标执行端,向所述目标执行端下发弹性分布式数据集RDD算子,所述RDD算子指示所述目标执行端的数据处理流程和所述数据处理请求的运算逻辑;
所述目标执行端用于基于所述RDD算子向所述目标执行端管理的多个块中每个块下发数据过滤算子,所述数据过滤算子指示所述数据处理请求的运算逻辑,以使每个块基于所述数据过滤算子对自身存储的数据进行过滤并返回数据过滤结果;
所述目标执行端还用于接收所管理的多个块中每个块返回的数据过滤结果,基于每个块返回的数据过滤结果确定数据处理结果,向所述驱动端返回所述数据处理结果。
2.如权利要求1所述的系统,其特征在于,所述驱动端包括RDD控制模块和分区RDD控制模块;
所述RDD控制模块用于响应于所述数据处理请求,确定目标RDD,所述目标RDD包括所述数据处理请求所需的数据;
所述RDD控制模块还用于基于所述目标RDD,确定目标分区RDD,所述目标分区RDD为所述目标RDD包括的多个分区RDD中的一个分区RDD;
所述RDD控制模块还用于向所述目标分区RDD对应的分区RDD控制模块下发操作算子,所述操作算子指示所述分区RDD控制模块控制所述目标分区RDD对应的目标执行端;
所述分区RDD控制模块用于基于所述目标分区RDD确定所述目标执行端,向所述目标执行端下发所述RDD算子。
3.如权利要求1所述的系统,其特征在于,所述目标执行端还包括迭代器;
所述驱动端用于:
基于所述迭代器逐步迭代处理每个块返回的数据过滤结果中每条数据,在确定所有数据过滤结果中的数据迭代完成后,得到所述数据处理结果。
4.如权利要求1至3任一所述的系统,其特征在于,
所述驱动端还用于响应于所述数据处理请求确定目标RDD的标识,所述目标RDD包括所述数据处理请求所需的数据;
所述驱动端还用于基于所述目标RDD的标识控制目标执行端将所述目标RDD中包括的数据加载至所述缓存区中块中。
5.如权利要求1所述的系统,其特征在于,所述驱动端还用于:
响应于缓存区配置指令,确定目标存储介质类型;
基于所述目标存储介质类型配置所述缓存区。
6.如权利要求1所述的系统,其特征在于,所述驱动端还用于:
响应于缓存区配置指令,确定目标数据存储方式,所述目标数据存储方式为所述缓存区中的数据存储方式。
7.一种数据处理方法,其特征在于,所述方法由数据处理系统中的驱动端来执行,所述处理处理系统还包括多个执行端,所述多个执行端中每个执行端包括缓存区,所述缓存区中管理有多个块,所述多个块中每个块用于缓存一个弹性分布式数据集RDD中的部分数据;
所述方法包括:
所述驱动端响应于数据处理请求确定目标执行端,向所述目标执行端下发弹性分布式数据集RDD算子;
其中,所述RDD算子指示所述目标执行端的数据处理流程和所述数据处理请求的运算逻辑,以使所述目标执行端用于基于所述RDD算子向所述目标执行端管理的多个块中每个块下发数据过滤算子,所述数据过滤算子指示所述数据处理请求的运算逻辑,以使每个块基于所述数据过滤算子对自身存储的数据进行过滤并返回给所述目标执行端数据过滤结果;
所述驱动端接收所述目标执行端返回的数据处理结果,所述数据处理结果是所述目标执行端基于所管理的各个块返回的数据过滤结果确定的。
8.如权利要求7所述的方法,其特征在于,所述驱动端包括RDD控制模块和分区RDD控制模块;
所述驱动端响应于数据处理请求确定目标执行端,向所述目标执行端下发弹性分布式数据集RDD算子,包括:
所述RDD控制模块响应于所述数据处理请求,确定目标RDD,所述目标RDD包括所述数据处理请求所需的数据;
所述RDD控制模块基于所述目标RDD,确定目标分区RDD,所述目标分区RDD为所述目标RDD包括的多个分区RDD中的一个分区RDD;
所述RDD控制模块向所述目标分区RDD对应的分区RDD控制模块下发操作算子,所述操作算子指示所述分区RDD控制模块控制所述目标分区RDD对应的目标执行端;
所述分区RDD控制模块基于所述目标分区RDD确定所述目标执行端,向所述目标执行端下发所述RDD算子。
9.如权利要求7所述的方法,其特征在于,所述目标执行端还包括迭代器;
所述数据处理结果是所述目标执行端基于所述迭代器逐步迭代处理所管理的各个块返回的数据过滤结果中每条数据,在确定所有数据过滤结果中的数据迭代完成后,得到所述数据处理结果。
10.如权利要求7至9任一所述的方法,其特征在于,所述驱动端响应于数据处理请求确定目标执行端,向所述目标执行端下发弹性分布式数据集RDD算子之前,所述方法还包括:
响应于所述数据处理请求确定目标RDD的标识,所述目标RDD包括所述数据处理请求所需的数据;
基于所述目标RDD的标识控制目标执行端将所述目标RDD中包括的数据加载至所述缓存区中块中。
11.如权利要求7所述的方法,其特征在于,所述方法还包括:
响应于缓存区配置指令,确定目标存储介质类型;
基于所述目标存储介质类型配置所述缓存区。
12.如权利要求7所述的方法,其特征在于,所述方法还包括:
响应于缓存区配置指令,确定目标数据存储方式,所述目标数据存储方式为所述缓存区中的数据存储方式。
13.一种数据处理装置,其特征在于,所述装置包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述权利要求6至权利要求12中的任一项权利要求所述的方法的步骤。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有指令,所述指令被处理器执行时实现上述权利要求6至权利要求12中的任一项权利要求所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011594743.8A CN112685438B (zh) | 2020-12-29 | 2020-12-29 | 数据处理系统、方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011594743.8A CN112685438B (zh) | 2020-12-29 | 2020-12-29 | 数据处理系统、方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112685438A true CN112685438A (zh) | 2021-04-20 |
CN112685438B CN112685438B (zh) | 2023-03-24 |
Family
ID=75455172
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011594743.8A Active CN112685438B (zh) | 2020-12-29 | 2020-12-29 | 数据处理系统、方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112685438B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106445676A (zh) * | 2015-08-05 | 2017-02-22 | 杭州海康威视系统技术有限公司 | 一种分布式数据计算的任务分配方法和任务分配装置 |
CN107194411A (zh) * | 2017-04-13 | 2017-09-22 | 哈尔滨工程大学 | 一种改进的分层级联的支持向量机并行化方法 |
CN107229751A (zh) * | 2017-06-28 | 2017-10-03 | 济南大学 | 一种面向流式数据的并行增量式关联规则挖掘方法 |
CN111736776A (zh) * | 2020-06-24 | 2020-10-02 | 杭州海康威视数字技术股份有限公司 | 一种数据存储、读取方法及装置 |
-
2020
- 2020-12-29 CN CN202011594743.8A patent/CN112685438B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106445676A (zh) * | 2015-08-05 | 2017-02-22 | 杭州海康威视系统技术有限公司 | 一种分布式数据计算的任务分配方法和任务分配装置 |
CN107194411A (zh) * | 2017-04-13 | 2017-09-22 | 哈尔滨工程大学 | 一种改进的分层级联的支持向量机并行化方法 |
CN107229751A (zh) * | 2017-06-28 | 2017-10-03 | 济南大学 | 一种面向流式数据的并行增量式关联规则挖掘方法 |
CN111736776A (zh) * | 2020-06-24 | 2020-10-02 | 杭州海康威视数字技术股份有限公司 | 一种数据存储、读取方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112685438B (zh) | 2023-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4330941B2 (ja) | データベース分割格納管理装置、方法及びプログラム | |
US8086810B2 (en) | Rapid defragmentation of storage volumes | |
US10025533B2 (en) | Logical block addresses used for executing host commands | |
EP3396542B1 (en) | Database operating method and device | |
EP3961395A1 (en) | Method and apparatus for scheduling memory access request, device and storage medium | |
CN104731569A (zh) | 一种数据处理方法及相关设备 | |
JP6877435B2 (ja) | データベース動作方法及び装置 | |
US20170277439A1 (en) | Techniques for Path Optimization in Storage Networks | |
US20230384979A1 (en) | Data processing method, apparatus, and system | |
CN115543224B (zh) | 基于zns ssd的文件系统控制方法、装置及设备 | |
CN114090580A (zh) | 数据处理方法、装置、设备、存储介质及产品 | |
US9933838B2 (en) | Power management in a storage compute device | |
CN111488323A (zh) | 一种数据处理方法、装置及电子设备 | |
US9189290B2 (en) | Distributing processing of array block tasks | |
CN109063210A (zh) | 存储系统的资源对象查询方法、装置、设备及存储介质 | |
US9298769B1 (en) | Method and apparatus to facilitate discrete-device accelertaion of queries on structured data | |
CN113220650A (zh) | 数据存储方法、装置、设备、存储介质及程序 | |
CN112685438B (zh) | 数据处理系统、方法、装置及存储介质 | |
KR20210103393A (ko) | 낮은-지역성 데이터에서 높은-지역성 데이터로의 변환을 관리하기 위한 시스템 및 방법 | |
CN115951845B (zh) | 一种磁盘管理方法、装置、设备及存储介质 | |
CN110597912B (zh) | 一种区块存储方法及装置 | |
CN108376104B (zh) | 节点调度方法及装置、计算机可读存储介质 | |
CN112685334A (zh) | 一种分块缓存数据的方法、装置及存储介质 | |
CN114116790A (zh) | 数据处理的方法及装置 | |
CN113342853B (zh) | 流式数据处理方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |