CN114428589A - 一种数据处理方法、装置、电子设备及存储介质 - Google Patents
一种数据处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114428589A CN114428589A CN202210004786.9A CN202210004786A CN114428589A CN 114428589 A CN114428589 A CN 114428589A CN 202210004786 A CN202210004786 A CN 202210004786A CN 114428589 A CN114428589 A CN 114428589A
- Authority
- CN
- China
- Prior art keywords
- processed
- data block
- data
- storage object
- target
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 22
- 238000000034 method Methods 0.000 claims description 54
- 238000012545 processing Methods 0.000 claims description 48
- 238000004590 computer program Methods 0.000 claims description 7
- 230000008569 process Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 17
- 238000004891 communication Methods 0.000 description 10
- 238000013507 mapping Methods 0.000 description 8
- 239000003638 chemical reducing agent Substances 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 4
- 230000005236 sound signal Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
- G06F3/0676—Magnetic disk device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开关于一种数据处理方法、装置、电子设备及存储介质,包括:获取多个待处理数据块,待处理数据块的数据量小于预设阈值;将多个待处理数据块划分为至少一个存储对象,每个存储对象包括多个待处理数据块;在接收到针对目标待处理数据块的访问请求之后,将目标待处理数据块对应的目标存储对象存储至本地缓存;从本地缓存的目标存储对象中读取目标待处理数据块。这样,将多个小粒度的待处理数据块组成至少一个存储对象,再将数据量较大的存储对象作为一个整体批量加载到本地缓存中,在读取待处理数据块时,可以从本地存储中读取,而不需要访问磁盘,以达成一次大粒度加载、多次使用,提高数据访问效率和系统性能。
Description
技术领域
本公开涉及互联网领域,尤其涉及一种数据处理方法、装置、电子设备及存储介质。
背景技术
Shuffle即为数据混洗流程,也就是分布式数据分析引擎中将分散在集群各节点的中间结果数据集按分布需求进行重新划分和分发的过程。
在MR/DAG(MapReduce/Directed Acyclic Graph,有向无环图框架)引擎中,为了保证下游stage可以充分利用集群资源加速计算,上游stage会将数据拆分为较小的粒度,通过Shuffle进行数据查询和分发,但该方式需要经过多次磁盘I/O(input/output,输入/输出),导致集群整体磁盘繁忙、数据访问效率下降等问题。
相关技术中,可以在读取到某个shuffle文件的数据块(block)时,将该文件的数据块均装入到内存缓存中,后续对此文件的数据块读取时,就可以直接从内存缓存中读取,从而减少磁盘I/O次数。但是,在存在大量Shuffle数据的情况下,该方案容易造成缓存空间的大量浪费,导致集群整体磁盘繁忙、数据访问效率下降的问题。
发明内容
本公开提供一种数据处理方法、装置、电子设备及存储介质,以至少解决相关技术中容易造成缓存空间的大量浪费,导致集群整体磁盘繁忙、数据访问效率下降的问题。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种数据处理系统方法,包括:
获取多个待处理数据块,所述待处理数据块的数据量小于预设阈值;
将所述多个待处理数据块划分为至少一个存储对象,每个存储对象包括多个待处理数据块;
在接收到针对目标待处理数据块的访问请求之后,将所述目标待处理数据块对应的目标存储对象存储至本地缓存;
从所述本地缓存的所述目标存储对象中读取所述目标待处理数据块。
可选的,所述将所述多个待处理数据块划分为至少一个存储对象,包括:
若当前待处理数据块与候选数据块的数据量之和不大于预设阈值,则将所述当前待处理数据块加入所述候选数据块,并获取下一个待处理数据块,作为新的当前待处理数据块,所述候选数据块为未被分组的待处理数据块;
若当前待处理数据块与候选数据块的数据量之和大于所述预设阈值,则将所述当前待处理数据块与所述候选数据块划分为一组,作为一个存储对象。
可选的,在所述获取多个待处理数据块之前,所述方法还包括:
依次获取原始数据块;
在所述原始数据块的数据量大于预设阈值的情况下,则将所述原始数据块作为单一数据块,在接收到针对所述单一数据块的访问请求之后,从磁盘空间中读取所述单一数据块;
所述获取多个待处理数据块,包括:
在所述原始数据块的数据量不大于预设阈值的情况下,则将所述原始数据块作为待处理数据块。
可选的,在所述将所述目标待处理数据块对应的目标存储对象存储至本地缓存之前,所述方法还包括:
获取本地缓存当前的可用空间的大小;
所述将所述目标待处理数据块对应的目标存储对象存储至本地缓存,包括:
若所述可用空间大于所述目标待处理数据块对应的目标存储对象的数据量,则执行所述将所述目标存储对象存储至本地缓存的步骤。
可选的,在所述获取本地缓存当前的可用空间的大小之后,所述方法还包括:
若所述可用空间不大于所述目标待处理数据块对应的目标存储对象的数据量,则将所述目标存储对象的状态信息标记为直读状态,从磁盘空间中访问所述目标待处理数据块。
可选的,在所述将所述多个待处理数据块划分为至少一个存储对象之后,所述方法还包括:
将所述存储对象的状态信息标记为可缓存状态,所述可缓存状态用于指示所述存储对象允许从磁盘空间存储至本地缓存中;
所述将所述目标待处理数据块对应的目标存储对象存储至本地缓存,包括:
在所述目标待处理数据块对应的目标存储对象为可缓存状态的情况下,将所述目标存储对象存储至本地缓存,并将所述目标存储对象的状态信息标记为已缓存状态。
可选的,在所述从所述本地缓存的所述目标存储对象中读取所述目标待处理数据块之前,所述方法包括:
获取所述目标存储对象的状态信息;
所述从所述本地缓存的所述目标存储对象中读取所述目标待处理数据块,包括:
在所述目标存储对象为已缓存状态的情况下,从所述本地缓存的所述目标存储对象中读取所述目标待处理数据块。
可选的,在所述获取所述目标存储对象的状态信息之后,所述方法还包括:
在所述目标存储对象为已剔除状态的情况下,从磁盘空间读取所述目标待处理数据块,所述已剔除状态用于指示所述目标存储对象已从所述本地缓存中删除且不会再次存储至所述本地缓存。
可选的,在所述从所述本地缓存的所述目标存储对象中读取所述目标待处理数据块之后,所述方法还包括:
在所述目标存储对象中的待处理数据块均已被读取的情况下,从所述本地缓存中删除所述目标存储对象,并将所述目标存储对象的状态信息标记为已剔除状态。
可选的,在所述将所述目标待处理数据块对应的目标存储对象存储至本地缓存之后,所述方法还包括:
生成所述目标存储对象的标识集合,所述标识集合中包括目标存储对象中的每个待处理数据块的标识信息;
在所述从所述本地缓存的所述目标存储对象中读取所述目标待处理数据块之后,所述方法还包括:
从所述标识集合中删除所述目标待处理数据块的标识信息,并在所述标识集合为空集时,判定所述目标待处理数据块均已被读取。
可选的,在所述从所述本地缓存的所述目标存储对象中读取所述目标待处理数据块之后,所述方法还包括:
在所述目标存储对象的最近读取时间与当前时间的间隔大于预设时长的情况下,从所述本地缓存中删除所述目标存储对象,并将所述目标存储对象的状态信息标记为已剔除状态。
根据本公开实施例的第二方面,提供一种数据处理装置,包括:
获取单元,被配置为执行获取多个待处理数据块,所述待处理数据块的数据量小于预设阈值;
划分单元,被配置为执行将所述多个待处理数据块划分为至少一个存储对象,每个存储对象包括多个待处理数据块;
存储单元,被配置为执行在接收到针对目标待处理数据块的访问请求之后,将所述目标待处理数据块对应的目标存储对象存储至本地缓存;
读取单元,被配置为执行从所述本地缓存的所述目标存储对象中读取所述目标待处理数据块。
可选的,所述划分单元,具体被配置为执行:
若当前待处理数据块与候选数据块的数据量之和不大于预设阈值,则将所述当前待处理数据块加入所述候选数据块,并获取下一个待处理数据块,作为新的当前待处理数据块,所述候选数据块为未被分组的待处理数据块;
若当前待处理数据块与候选数据块的数据量之和大于所述预设阈值,则将所述当前待处理数据块与所述候选数据块划分为一组,作为一个存储对象。
可选的,所述获取单元,还被配置为执行:
依次获取原始数据块;
在所述原始数据块的数据量大于预设阈值的情况下,则将所述原始数据块作为单一数据块,在接收到针对所述单一数据块的访问请求之后,从磁盘空间中读取所述单一数据块;
在所述原始数据块的数据量不大于预设阈值的情况下,则将所述原始数据块作为待处理数据块。
可选的,所述存储单元,还被配置为执行:
获取本地缓存当前的可用空间的大小;
若所述可用空间大于所述目标待处理数据块对应的目标存储对象的数据量,则执行所述将所述目标存储对象存储至本地缓存的步骤。
可选的,所述存储单元,还被配置为执行:
若所述可用空间不大于所述目标待处理数据块对应的目标存储对象的数据量,则将所述目标存储对象的状态信息标记为直读状态,从磁盘空间中访问所述目标待处理数据块。
可选的,存储单元,具体被配置为执行:
将所述存储对象的状态信息标记为可缓存状态,所述可缓存状态用于指示所述存储对象允许从磁盘空间存储至本地缓存中;
所述在接收到针对目标待处理数据块的访问请求之后,在所述目标待处理数据块对应的目标存储对象为可缓存状态的情况下,将所述目标存储对象存储至本地缓存,并将所述目标存储对象的状态信息标记为已缓存状态。
可选的,所述读取单元,还被配置为执行:
获取所述目标存储对象的状态信息;
在所述目标存储对象为已缓存状态的情况下,从所述本地缓存的所述目标存储对象中读取所述目标待处理数据块。
可选的,所述读取单元,还被配置为执行:
在所述目标存储对象为已剔除状态的情况下,从磁盘空间读取所述目标待处理数据块,所述已剔除状态用于指示所述目标存储对象已从所述本地缓存中删除且不会再次存储至所述本地缓存。
可选的,所述读取单元,还被配置为执行:
在所述目标存储对象中的待处理数据块均已被读取的情况下,从所述本地缓存中删除所述目标存储对象,并将所述目标存储对象的状态信息标记为已剔除状态。
可选的,所述存储单元,具体被配置为执行生成所述目标存储对象的标识集合,所述标识集合中包括目标存储对象中的每个待处理数据块的标识信息;
所述读取单元,具体被配置为执行在所述从所述本地缓存的所述目标存储对象中读取所述目标待处理数据块之后,从所述标识集合中删除所述目标待处理数据块的标识信息,并在所述标识集合为空集时,判定所述目标待处理数据块均已被读取。
可选的,所述读取单元,还被配置为执行:
在所述目标存储对象的最近读取时间与当前时间的间隔大于预设时长的情况下,从所述本地缓存中删除所述目标存储对象,并将所述目标存储对象的状态信息标记为已剔除状态。
根据本公开实施例的第三方面,提供一种数据处理电子设备,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现上述第一项所述的数据处理方法。
根据本公开实施例的第四方面,提供一种计算机可读存储介质,当所述计算机可读存储介质中的指令由数据处理电子设备的处理器执行时,使得数据处理电子设备能够执行上述第一项所述的数据处理方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现上述第一项所述的数据处理方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
获取多个待处理数据块,待处理数据块的数据量小于预设阈值;将多个待处理数据块划分为至少一个存储对象,每个存储对象包括多个待处理数据块;在接收到针对目标待处理数据块的访问请求之后,将目标待处理数据块对应的目标存储对象存储至本地缓存;从本地缓存的目标存储对象中读取目标待处理数据块。
这样,将多个小粒度的待处理数据块组成至少一个存储对象,再将数据量较大的存储对象作为一个整体批量加载到本地缓存中,在读取待处理数据块时,可以从本地存储中读取,而不需要访问磁盘,以达成一次大粒度加载、多次使用,减少每次数据处理和读取过程中的磁盘I/O次数,以及所占用大量的时间及磁盘资源,同时,每个存储对象都由多个小粒度的待处理数据块组成,大粒度的数据块不会存储在本地缓存中占用空间,从而在不提高运营成本的条件下,提高数据访问效率和系统性能。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的一种数据处理方法的流程图。
图2是根据一示例性实施例示出的一种分布式文件系统中的数据查询分析流程示意图。
图3是根据一示例性实施例示出的一种数据混洗流程的示意图。
图4是根据一示例性实施例示出的另一种数据处理方法的流程图。
图5是根据一示例性实施例示出的一种对原始数据块进行处理的逻辑示意图;
图6是根据一示例性实施例示出的另一种数据处理方法的流程图;
图7是根据一示例性实施例示出的一种状态信息的转移流程示意图;
图8是根据一示例性实施例示出的一种数据处理装置的框图。
图9是根据一示例性实施例示出的一种用于数据处理的电子设备的框图。
图10是根据一示例性实施例示出的一种用于数据处理的装置的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的一种数据处理方法的流程图,如图1所示,该数据处理方法包括以下步骤。
在步骤S11中,获取待处理数据块,待处理数据块的数据量小于预设阈值。
在采用MR/DAG引擎的分布式文件系统中,包括多个leaf stage(叶阶段),每个leaf stage由一组执行相同业务逻辑的task(进程)组成,同一个leaf stage的不同task采用相同的业务逻辑处理不同的数据,不同的task可以运行在同一节点设备中,也可以运行在同一个节点设备中,也就是说,每个leaf stage对应一个或多个节点设备。
举例而言,如图2所示,为采用MR/DAG引擎的分布式文件系统中的数据查询分析流程示意图,阶段1、阶段2、阶段3、阶段4以及阶段5均为该分布式文件系统中的leaf stage,阶段1、阶段2和阶段3从分布式文件系统的数据库中读取原始数据,然后,进入数据混洗流程,阶段1、阶段2和阶段3分别对自身所获取的原始数据进行处理,阶段1和阶段2可以将自身的处理结果传递至阶段4,进而,阶段3和阶段4将自身的处理结果传递给阶段5,这样,阶段5可以得到原始数据的查询分析结果,并将原始数据的查询分析结果传递至用户客户端。
其中,如果两个leaf stage之间可以直接进行数据传递,那么,可以说这两个leafstage具有数据依赖,在本公开中,具有数据依赖的leaf stage之间可以通过Shuffle流程进行数据有向传递。在数据依赖的两个leaf stage中,传出数据的一方称之为Map Stage(映射阶段),接收数据的一方则称之为Reduce stage(还原阶段)。
Map Stage可以包括至少一个Mapper(映射节点设备),Reduce stage可以包括至少一个Reducer(还原节点设备),每个Mapper可以根据Reducer的数量,将输入数据处理为多个数据块(Shuffle Block),然后,将生成的数据块及其对应的索引信息对应存储,得到每个Mapper的输出文件,其中,数据块是Shuffle数据缓存的基本单元,索引信息记录了每个数据块在输出文件中的位置。进而,Reducer可以根据索引信息,从Map Stage的多个输出文件中读取数据块,并对读取到的数据块进行下一步处理。
举例而言,如图3所示,为Map Stage和Reduce stage之间的Shuffle流程的示意图,其中,Map Stage包括m个Mapper,分别为映射节点1、映射节点2、…、映射节点m,Reducestage包括n个Reducer,分别为还原节点1、还原节点2、…、还原节点n。映射节点1的输入数据为M0,得到的输出文件包括n个数据块,分别为M0P0、M0P1、…、M0Pn-1,映射节点2的输入数据为M1,得到的输出文件包括n个数据块,分别为M1P0、M1P1、…、M1Pn-1,以此类推。其中,P0、P1、…、Pn-1代表索引信息,进而,还原节点1、还原节点2、…、还原节点n可以根据索引信息,经过m×n次磁盘I/O,读取到每个映射节点输出文件中的多个数据块。
本公开应用于分布式文件系统中的任一Mapper,Mapper将输入数据处理为多个数据块,其中,数据量小于预设阈值的数据块作为待处理数据块。预设阈值可以根据本地缓存的存储空间大小决定,也可以是由用户指定的经验值,具体不作限定。
一种实现方式中,可以在对输入数据进行处理,得到多个原始数据块之后,根据索引信息,也就是原始数据块在输出文件中的位置,遍历原始数据块,从多个原始数据块中获取数据量小于预设阈值的待处理数据块。原始数据块的数据量存储在current_block_size字段中。其中,原始数据块的索引信息可以存储在索引文件(Index File)中,便于对原始数据块的读取和查询。
具体而言,在获取多个待处理数据块之前,本方法还包括:依次获取原始数据块;在原始数据块的数据量大于预设阈值的情况下,则将原始数据块作为单一数据块,在接收到针对单一数据块的访问请求之后,从磁盘空间中读取单一数据块;获取多个待处理数据块,包括:在原始数据块的数据量不大于预设阈值的情况下,则将原始数据块作为待处理数据块。
也就是说,可以依次获取原始数据块,在原始数据块的数据量大于预设阈值的情况下,则将原始数据块作为单一数据块,每个单一数据块都可以作为一个SingleBlockSegment(单数据块文件段),进而,在接收到针对单一数据块的访问请求之后,从磁盘空间中读取单一数据块。举例而言,可以以MemoryMappedFile(内存映射文件)或NIO(new inputstreamoutputstream,输入输出流)的形式从磁盘空间中读取单一数据块。在原始数据块的数据量不大于预设阈值的情况下,则将原始数据块作为待处理数据块。
这样,根据原始数据块在输出文件的位置,依次对原始数据块的数据量进行判断,从中确定待处理数据块,可以有序的实现对原始数据块的遍历,避免遗漏,提高分布式文件系统的数据处理稳定性。而且,若数据粒度较大的单一数据块存储至本地缓存,将占用较大的本地缓存空间,而每个单一数据块只对应一次磁盘I/O,相比于利用同样的本地缓存空间存储更多的待处理数据块,显然将单一数据块存储至本地缓存会导致对磁盘I/O的减少效果较弱,因此,将数据粒度较大的单一数据块存储在磁盘空间,可以提高对本地缓存的利用效率。
在步骤S12中,将多个待处理数据块划分为至少一个存储对象,每个存储对象包括多个待处理数据块。
本步骤中,在获取到待处理数据块之后,可以将待处理数据块划分为至少一个存储对象,存储对象也就是MultiBlockSegment(多数据块文件段),每个文件段中包括多个待处理数据块。SingleBlockSegment和MultiBlockSegment都属于Shuffle Segment(数据混洗文件段)。
每个文件段都具有对应的文件段信息,文件段信息中可以包括该文件段的数据量(size)、状态信息、所包括的数据块的标识范围[startBlockId,endBlockId]、标识集合Set<BlockId>、文件段所属的文件datafile、文件段在所属文件中的起始偏移量startOffset以及文件段的最近被访问时间accessTime。其中,状态信息包括直读状态(Read_through)、可缓存状态(Cacheable),已缓存状态(Cached)以及已剔除状态(Evicted)等多种,标识集合中包括所有未被访问的数据块的标识。
其中,可以根据待处理数据块的数据量,对待处理数据块进行划分,比如,可以预设每个存储对象的数据量不能超过预设阈值,或者,也可以根据待处理数据块的数量,对待处理数据块进行划分,比如,可以预设每个存储对象中包括的数据块的数量不能超过预设数量,等等。
一种实现方式中,根据待处理数据块的数据量,依次对待处理数据块进行划分,具体来说,将多个待处理数据块划分为至少一个存储对象,可以包括:若当前待处理数据块与候选数据块的数据量之和不大于预设阈值,则将当前待处理数据块加入候选数据块,并获取下一个待处理数据块,作为新的当前待处理数据块,候选数据块为未被分组的待处理数据块;若当前待处理数据块与候选数据块的数据量之和大于预设阈值,则将当前待处理数据块与候选数据块划分为一组,作为一个存储对象。
也就是说,对待处理数据块的数据量进行累加,如果将候选数据块的数据量与当前待处理数据块的数据量进行累加之后,数据总量大于预设阈值,那么,将候选数据块划分为一个存储对象,如果数据总量不大于预设阈值,那么,将当前待处理数据块也作为候选数据块,然后对下一个待处理数据块的数据量进行累加,以此类推。其中,在数据总量大于预设阈值的情况下,如果候选数据块仅有一个,那么,该候选数据块可以作为一个单一数据块,也可以继续作为候选数据块,与后续的待处理数据块进行累加,具体不做限定。
这样,可以将多个小粒度的待处理数据作为一个较大粒度的存储对象进行后续的处理,可以减少后续将这些待处理数据块存储至本地缓存所需要的磁盘I/O次数,而且,对存储对象的数据量也进行了限制,减少了存储对象对本地缓存的占用。
在本公开中,每个存储对象都具有对应的状态信息,存储对象的状态信息可以包括直读状态(Read_through)、可缓存状态(Cacheable),已缓存状态(Cached)以及已剔除状态(Evicted)等。存储对象的不同的状态信息可能对应于不同的处理方式,在本步骤中,当得到存储对象之后,可以将存储对象的状态信息标记为可缓存状态,可缓存状态用于指示存储对象允许从磁盘空间存储至本地缓存中。
在步骤S13中,在接收到针对目标待处理数据块的访问请求之后,将目标待处理数据块对应的目标存储对象存储至本地缓存。
一种实现方式中,在将多个待处理数据块划分为至少一个存储对象之后,本方法还包括:将存储对象的状态信息标记为可缓存状态,可缓存状态用于指示存储对象允许从磁盘空间存储至本地缓存中;将目标待处理数据块对应的目标存储对象存储至本地缓存,包括:在目标待处理数据块对应的目标存储对象为可缓存状态的情况下,将目标存储对象存储至本地缓存,并将目标存储对象的状态信息标记为已缓存状态。
换句话说,将多个待处理数据块划分为至少一个存储对象之后,将存储对象标记为可缓存状态,那么,在接收到针对任一待处理数据块的访问请求之后,可以获取目标待处理数据块对应的目标存储对象的状态信息。在任一待处理数据块对应的存储对象为可缓存状态的情况下,再将任一待处理数据块对应的存储对象存储至本地缓存,并将任一待处理数据块对应的存储对象存储标记为已缓存状态。
也就是说,第一次接收到对目标存储对象中的目标待处理数据块的访问请求时,目标存储对象的状态信息为可缓存状态,此时,可以将目标存储对象存储至本地缓存,同时将目标存储对象的状态信息标记为已缓存状态,在此之后,如果再接收到对目标存储对象中的目标待处理数据块的访问请求,根据目标存储对象的状态信息,不再执行将目标存储对象存储至本地缓存的操作,从而可以避免目标存储对象再本地缓存中的重复存储,高效利用有限的本地缓存。
另外,目标存储对象的状态信息还可以是已剔除状态,在获取目标存储对象的状态信息之后,可以在目标存储对象为已剔除状态的情况下,从磁盘空间读取目标待处理数据块。其中,已剔除状态用于指示目标存储对象已从本地缓存中删除且不会再次存储至本地缓存。
通过目标存储对象的不同的状态信息,可以实现对目标存储对象的生命周期的管理,可缓存状态表示目标存储对象尚未存储至本地缓存,已缓存状态表示目标存储对象已存储至本地缓存,已剔除状态表示目标存储对象已从本地缓存中删除,而且,已剔除状态的目标存储对象不会再次存储至本地缓存,这样就可以避免同一存储对象反复存储至本地缓存造成的缓存抖动,维持本地缓存数据读写功能的稳定性。
在本步骤中,将目标待处理数据块对应的目标存储对象存储至本地缓存之前,可以获取本地缓存当前的可用空间的大小,那么,将目标待处理数据块对应的目标存储对象存储至本地缓存,包括:若可用空间大于目标待处理数据块对应的目标存储对象的数据量,则将目标存储对象存储至本地缓存,反之,若获取本地缓存当前的可用空间的大小之后,可用空间不大于目标待处理数据块对应的目标存储对象的数据量,则将目标存储对象的状态信息标记为直读状态,后续从磁盘空间中访问目标待处理数据块。
可以理解,当本地缓存较满时,其可用空间不足以存储目标存储对象,如果继续执行将目标存储对象存储至本地缓存的步骤,很可能造成缓存抖动,导致无法继续在本地缓存进行数据的读写,因此,在这种情况下,可以将目标存储对象的状态信息修改为直读状态,也就是说,目标存储对象不再存储至本地缓存,而是从磁盘空间读取目标待处理数据块,从而维持本地缓存数据读写功能的稳定性。
在步骤S14中,从本地缓存的目标存储对象中读取目标待处理数据块。
这样,在本公开中,以存储对象的形式,一次性将多个数据量小于预设阈值的待处理数据块存储至本地缓存,然后,可以从本地缓存中读取目标待处理数据块,达成了一次大粒度加载、多次使用,减少了每次数据处理和读取过程中的磁盘I/O次数。
一种实现方式中,在从本地缓存的目标存储对象中读取目标待处理数据块之前,本方法还包括:获取目标存储对象的状态信息;从本地缓存的目标存储对象中读取目标待处理数据块,包括:在目标存储对象为已缓存状态的情况下,从本地缓存的目标存储对象中读取目标待处理数据块。
也就是说,若将多个待处理数据块划分为至少一个存储对象之后,将存储对象的状态信息标记为可缓存状态,那么,在接收到针对目标待处理数据块的访问请求之后,将目标待处理数据块对应的目标存储对象存储至本地缓存,包括:在目标存储对象为已缓存状态的情况下,从本地缓存的目标存储对象中读取目标待处理数据块。
一种实现方式中,在从本地缓存的目标存储对象中读取目标待处理数据块之后,本方法还包括:在目标存储对象中的待处理数据块均已被读取的情况下,从本地缓存中删除目标存储对象,并将目标存储对象的状态信息标记为已剔除状态。
换句话说,可以获取目标存储对象中的待处理数据块的读取状态,如果目标存储对象中的待处理数据块均已被读取,那么,可以从本地缓存中删除目标存储对象,将目标存储对象的状态信息标记为已剔除状态。
也就是说,如果目标存储对象中的待处理数据块均已被读取,那么,可以认为后续再读取该目标存储对象的待处理数据块的可能性比较低,该目标存储对象的生命周期就可以结束了,因此,可以从本地缓存中删除目标存储对象,并将目标存储对象的状态信息标记为已剔除状态,从而进一步节约本地缓存的存储空间,避免发生缓存抖动的现象。
其中,目标存储对象中的待处理数据块的读取状态可以根据目标存储对象的标识集合确定,具体来说,在将目标待处理数据块对应的目标存储对象存储至本地缓存之后,本方法还包括:生成目标存储对象的标识集合,标识集合中包括目标存储对象中的每个待处理数据块的标识信息;在从本地缓存的目标存储对象中读取目标待处理数据块之后,本方法还包括:从标识集合中删除目标待处理数据块的标识信息,并在标识集合为空集时,判定目标待处理数据块均已被读取。
也就是说,在将目标待处理数据块对应的目标存储对象存储至本地缓存之后,可以生成目标存储对象的标识集合,标识集合中包括目标存储对象中的每个待处理数据块的标识信息(blockId),然后,每当从本地缓存的目标存储对象中读取目标待处理数据块之后,就从标识集合中删除目标待处理数据块的标识信息,直到标识集合为空集时,可以判定目标待处理数据块均已被读取。这样,便于快速确定目标存储对象中的待处理数据块的读取状态,从而实现对存储对象的生命周期管理,及时删除已经被读取过的目标存储对象,提高本地缓存的使用效率。
另一种实现方式中,可以根据目标存储对象的最近访问时间,对目标存储对象的生命周期进行管理,具体来说,在从本地缓存的目标存储对象中读取目标待处理数据块之后,本方法还包括:在目标存储对象的最近读取时间与当前时间的间隔大于预设时长的情况下,从本地缓存中删除目标存储对象,并将目标存储对象的状态信息标记为已剔除状态。
也就是说,在目标存储对象的最近读取时间与当前时间的间隔大于预设时长的情况下,可以认为目标存储对象已经在较长时间内没有被访问过,后续再访问的概率也比较小,那么,可以从本地缓存中删除目标存储对象,并将目标存储对象的状态信息标记为已剔除状态。从而进一步节约本地缓存的存储空间,避免发生缓存抖动的现象,提高本地缓存的使用效率。
由以上可见,本公开的实施例提供的技术方案,将多个小粒度的待处理数据块组成至少一个存储对象,再将数据量较大的存储对象作为一个整体批量加载到本地缓存中,在读取待处理数据块时,可以从本地存储中读取,而不需要访问磁盘,以达成一次大粒度加载、多次使用,减少每次数据处理和读取过程中的磁盘I/O次数,以及所占用大量的时间及磁盘资源,同时,每个存储对象都由多个小粒度的待处理数据块组成,大粒度的数据块不会存储在本地缓存中占用空间,从而在不提高运营成本的条件下,提高数据访问效率和系统性能。
图4根据一示例性实施例示出的一种数据处理方法的流程图,如图4所示,该数据处理方法包括以下步骤。
在步骤S21中,依次获取原始数据块。
本公开应用于分布式文件系统中的任一Mapper,Mapper对输入数据进行处理,得到输出文件,输出文件中包括多个原始数据块,在处理过程中,每个原始数据块具有对应的索引信息,索引信息记录了每个原始数据块在输出文件中的位置。
在本步骤中,依次获取原始数据块也就是按照原始数据块在输出文件中的位置,获取原始数据块。
在步骤S22中,在原始数据块的数据量大于预设阈值的情况下,则将原始数据块作为单一数据块,在接收到针对单一数据块的访问请求之后,从磁盘空间中读取单一数据块。
其中,预设阈值可以根据本地缓存的存储空间大小决定,也可以是由用户指定的经验值,具体不作限定。
在本步骤中,数据量大于预设阈值的原始数据块作为单一数据块,每个单一数据块都可以作为一个SingleBlockSegment,单一数据块存储在磁盘空间,在接收到针对单一数据块的访问请求之后,从磁盘空间中读取单一数据块。
可以理解,若数据粒度较大的单一数据块存储至本地缓存,将占用较大的本地缓存空间,对于同样大小的本地缓存空间而言,如果用于存储一个单一数据块,那么,本地缓存从磁盘空间读取单一数据块,不会减少磁盘I/O,而如果用于存储多个小粒度的待处理数据块,那么,本地缓存一次性从磁盘空间读取待处理数据块对应的存储对象,相比于下游的Reducer每次从磁盘空间读取一个待处理数据块,可以减少多次磁盘I/O,因此,将数据粒度较大的单一数据块存储在磁盘空间,可以提高对本地缓存的利用效率。
其中,在当前原始数据块的数据量大于预设阈值的情况下,如果存在候选数据块,也就是正在累加的待处理数据块,那么,如果候选数据块的数量为一,则可以将候选数据块作为单一数据块,如果候选数据块的数量不为一,则可以将候选数据块作为一个存储对象。
在步骤S23中,在原始数据块的数据量不大于预设阈值的情况下,则将原始数据块作为待处理数据块。
待处理数据块具有较小的数据粒度,如果下游的Reducer每次从磁盘空间中读取待处理数据块,那么,Reducer的磁盘寻道将占用大量的时间及磁盘资源,导致集群整体磁盘繁忙、数据访问效率下降,危害整体集群的正常执行。因此,需要对待处理数据块进行进一步处理,以减少磁盘I/O。
在步骤S24中,若当前待处理数据块与候选数据块的数据量之和不大于预设阈值,则将当前待处理数据块加入候选数据块,候选数据块为未被分组的待处理数据块。
在步骤S25中,若当前待处理数据块与候选数据块的数据量之和大于预设阈值,则将当前待处理数据块与候选数据块划分为一组,作为一个存储对象。
在本公开中,根据待处理数据块的数据量,对待处理数据块进行划分,也就是说,对待处理数据块的数据量进行累加,如果将候选数据块的数据量与当前待处理数据块的数据量进行累加之后,数据总量大于预设阈值,那么,将候选数据块划分为一个存储对象,如果数据总量不大于预设阈值,那么,将当前待处理数据块也作为候选数据块,然后对下一个待处理数据块的数据量进行累加,以此类推。一种实现方式中,在数据总量大于预设阈值的情况下,如果候选数据块仅有一个,那么,该候选数据块可以作为一个单一数据块。
这样,可以将多个小粒度的待处理数据作为一个较大粒度的存储对象进行后续的处理,可以减少后续将这些待处理数据块存储至本地缓存所需要的磁盘I/O次数,而且,对存储对象的数据量也进行了限制,减少了存储对象对本地缓存的占用。
如图5所示,为本公开提出的一种对原始数据块进行处理的逻辑示意图,每个方块代表一个数据块,方块的大小代表数据块的数据量,Mapper的输出文件中包括9个原始数据块,分别为M0P0、M0P1、…、M0P8,按照索引信息依次获取原始数据块,M0P0和M0P1均为待处理数据块,且两者的数据量之和小于预设阈值,而M0P2的数据量大于预设阈值,那么,将M0P0和M0P1组成一个存储对象,M0P2作为单一数据块;然后,M0P3和M0P4为待处理数据块,但两者的数据量之和大于预设阈值,则M0P3作为单一数据块,M0P5为待处理数据块,但M0P4和M0P5的数据量之和大于预设阈值,则M0P4也作为单一数据块;M0P6、M0P7和M0P8均为待处理数据块,且M0P5、M0P6、M0P7和M0P8的数据量之和小于预设阈值,因此,M0P5、M0P6、M0P7和M0P8组成一个存储对象。
这样,以存储对象的形式将多个待处理数据块一次性从磁盘空间存储至本地缓存中,而非按照待处理数据块的粒度进行shuffle文件缓存,可以高效利用有限的内存,以服务更多的小粒度shuffle I/O访问。同时,可以避免单独出现的大数据量的单一数据块存入本地缓存,尽可能将更多小数据量的待处理数据块划分到同一个存储对象中,加大数据加载时的I/O粒度。
在步骤S26中,在接收到针对目标待处理数据块的访问请求之后,将目标待处理数据块对应的目标存储对象存储至本地缓存。
本步骤与图1所示实施例中的步骤S13相同,这里不再赘述。
在步骤S27中,从本地缓存的目标存储对象中读取目标待处理数据块。
本步骤与图1所示实施例中的步骤S14相同,这里不再赘述。
由以上可见,本公开的实施例提供的技术方案,将多个小粒度的待处理数据块组成至少一个存储对象,再将数据量较大的存储对象作为一个整体批量加载到本地缓存中,在读取待处理数据块时,可以从本地存储中读取,而不需要访问磁盘,以达成一次大粒度加载、多次使用,减少每次数据处理和读取过程中的磁盘I/O次数,以及所占用大量的时间及磁盘资源,同时,每个存储对象都由多个小粒度的待处理数据块组成,大粒度的数据块不会存储在本地缓存中占用空间,从而在不提高运营成本的条件下,提高数据访问效率和系统性能。
图6根据一示例性实施例示出的一种数据处理方法的流程图,如图6所示,该数据处理方法包括以下步骤。
在步骤S31中,获取多个待处理数据块,待处理数据块的数据量小于预设阈值。
本步骤与图1所示实施例中的步骤S11相同,这里不再赘述。
在步骤S32中,将多个待处理数据块划分为至少一个存储对象,并将存储对象的状态信息标记为可缓存状态,每个存储对象包括多个待处理数据块,可缓存状态用于指示存储对象允许从磁盘空间存储至本地缓存中。
每个存储对象都具有对应的状态信息,存储对象的状态信息可以包括直读状态(Read_through)、可缓存状态(Cacheable),已缓存状态(Cached)以及已剔除状态(Evicted)等。存储对象的不同的状态信息可能对应于不同的处理方式,在本步骤中,当得到存储对象之后,可以将存储对象的状态信息标记为可缓存状态,可缓存状态用于指示存储对象允许从磁盘空间存储至本地缓存中。
在步骤S33中,在接收到针对目标待处理数据块的访问请求之后,获取目标存储对象的状态信息。
在本公开中,通过存储对象的不同的状态信息,可以实现对存储对象的生命周期的管理,如图7所示,为状态信息的转移流程示意图。其中,单一数据块一直处于直读状态,存储在磁盘空间。对于存储对象而言,在生成存储对象时,将存储对象的状态信息标记为可缓存状态;当目标存储对象存储至本地缓存,将存储对象的状态信息标记为已缓存状态;若本地缓存可用空间不足,无法对存储对象进行存储,将存储对象的状态信息标记为直读状态;当存储对象中的待处理数据块均已被读取,或存储对象已经在较长时间内没有被访问过,将存储对象的状态信息标记为已剔除状态。
在步骤S34中,在目标待处理数据块对应的目标存储对象为可缓存状态的情况下,获取本地缓存当前的可用空间的大小。
在步骤S35中,若可用空间不大于目标待处理数据块对应的目标存储对象的数据量,则将目标存储对象的状态信息标记为直读状态,从磁盘空间中访问目标待处理数据块。
可以理解,当本地缓存较满时,其可用空间不足以存储目标存储对象,如果继续执行将目标存储对象存储至本地缓存的步骤,很可能造成缓存抖动,导致无法继续在本地缓存进行数据的读写,因此,在这种情况下,可以将目标存储对象的状态信息修改为直读状态,也就是说,目标存储对象不再存储至本地缓存,而是从磁盘空间读取目标待处理数据块,从而维持本地缓存数据读写功能的稳定性。
在步骤S36中,若可用空间大于目标待处理数据块对应的目标存储对象的数据量,将目标待处理数据块对应的目标存储对象存储至本地缓存,从本地缓存的目标存储对象中读取目标待处理数据块,并将目标存储对象的状态信息标记为已缓存状态。
也就是说,第一次接收到对目标存储对象中的目标待处理数据块的访问请求时,目标存储对象的状态信息为可缓存状态,此时,可以将目标存储对象存储至本地缓存,同时将目标存储对象的状态信息标记为已缓存状态,在此之后,如果再接收到对目标存储对象中的目标待处理数据块的访问请求,根据目标存储对象的状态信息,不再执行将目标存储对象存储至本地缓存的操作,从而可以避免目标存储对象再本地缓存中的重复存储,高效利用有限的本地缓存。
在步骤S37中,在目标存储对象为已缓存状态的情况下,从本地缓存的目标存储对象中读取目标待处理数据块。
本步骤中,从本地缓存的目标存储对象中读取目标待处理数据块,与图1所示实施例中的步骤S14相同,这里不再赘述。
在步骤S38中,在目标存储对象为已剔除状态的情况下,从磁盘空间读取目标待处理数据块,已剔除状态用于指示目标存储对象已从本地缓存中删除且不会再次存储至本地缓存。
在本公开中,可以在存储对象中的待处理数据块均已被读取,或存储对象已经在较长时间内没有被访问过的情况下,将存储对象的状态信息标记为已剔除状态。
具体来说,一种实现方式中,可以获取目标存储对象中的待处理数据块的读取状态,如果目标存储对象中的待处理数据块均已被读取,那么,可以认为后续再读取该目标存储对象的待处理数据块的可能性比较低,该目标存储对象的生命周期就可以结束了,因此,可以从本地缓存中删除目标存储对象,并将目标存储对象的状态信息标记为已剔除状态,从而进一步节约本地缓存的存储空间,避免发生缓存抖动的现象。
其中,目标存储对象中的待处理数据块的读取状态可以根据目标存储对象的标识集合确定,具体来说,在将目标待处理数据块对应的目标存储对象存储至本地缓存之后,可以生成目标存储对象的标识集合,标识集合中包括目标存储对象中的每个待处理数据块的标识信息(blockId),然后,每当从本地缓存的目标存储对象中读取目标待处理数据块之后,就从标识集合中删除目标待处理数据块的标识信息,直到标识集合为空集时,可以判定目标待处理数据块均已被读取。这样,便于快速确定目标存储对象中的待处理数据块的读取状态,从而实现对存储对象的生命周期管理,及时删除已经被读取过的目标存储对象,提高本地缓存的使用效率。
另一种实现方式中,可以根据目标存储对象的最近访问时间,对目标存储对象的生命周期进行管理,具体来说,在目标存储对象的最近读取时间与当前时间的间隔大于预设时长的情况下,可以认为目标存储对象已经在较长时间内没有被访问过,后续再访问的概率也比较小,那么,可以从本地缓存中删除目标存储对象,并将目标存储对象的状态信息标记为已剔除状态。从而进一步节约本地缓存的存储空间,避免发生缓存抖动的现象,提高本地缓存的使用效率。
由以上可见,本公开的实施例提供的技术方案,将多个小粒度的待处理数据块组成至少一个存储对象,再将数据量较大的存储对象作为一个整体批量加载到本地缓存中,在读取待处理数据块时,可以从本地存储中读取,而不需要访问磁盘,以达成一次大粒度加载、多次使用,减少每次数据处理和读取过程中的磁盘I/O次数,以及所占用大量的时间及磁盘资源,同时,每个存储对象都由多个小粒度的待处理数据块组成,大粒度的数据块不会存储在本地缓存中占用空间,从而在不提高运营成本的条件下,提高数据访问效率和系统性能。
图8是根据一示例性实施例示出的一种数据处理装置框图,该装置包括:
获取单元401,被配置为执行获取多个待处理数据块,所述待处理数据块的数据量小于预设阈值;
划分单元402,被配置为执行将所述多个待处理数据块划分为至少一个存储对象,每个存储对象包括多个待处理数据块;
存储单元403,被配置为执行在接收到针对目标待处理数据块的访问请求之后,将所述目标待处理数据块对应的目标存储对象存储至本地缓存;
读取单元404,被配置为执行从所述本地缓存的所述目标存储对象中读取所述目标待处理数据块。
一种实现方式中,所述划分单元402,具体被配置为执行:
若当前待处理数据块与候选数据块的数据量之和不大于预设阈值,则将所述当前待处理数据块加入所述候选数据块,并获取下一个待处理数据块,作为新的当前待处理数据块,所述候选数据块为未被分组的待处理数据块;
若当前待处理数据块与候选数据块的数据量之和大于所述预设阈值,则将所述当前待处理数据块与所述候选数据块划分为一组,作为一个存储对象。
一种实现方式中,所述获取单元401,还被配置为执行:
依次获取原始数据块;
在所述原始数据块的数据量大于预设阈值的情况下,则将所述原始数据块作为单一数据块,在接收到针对所述单一数据块的访问请求之后,从磁盘空间中读取所述单一数据块;
在所述原始数据块的数据量不大于预设阈值的情况下,则将所述原始数据块作为待处理数据块。
一种实现方式中,所述存储单元403,还被配置为执行:
获取本地缓存当前的可用空间的大小;
若所述可用空间大于所述目标待处理数据块对应的目标存储对象的数据量,则执行所述将所述目标存储对象存储至本地缓存的步骤。
一种实现方式中,所述存储单元403,还被配置为执行:
若所述可用空间不大于所述目标待处理数据块对应的目标存储对象的数据量,则将所述目标存储对象的状态信息标记为直读状态,从磁盘空间中访问所述目标待处理数据块。
一种实现方式中,所述存储单元403,具体被配置为执行:
将所述存储对象的状态信息标记为可缓存状态,所述可缓存状态用于指示所述存储对象允许从磁盘空间存储至本地缓存中;
所述在接收到针对目标待处理数据块的访问请求之后,在所述目标待处理数据块对应的目标存储对象为可缓存状态的情况下,将所述目标存储对象存储至本地缓存,并将所述目标存储对象的状态信息标记为已缓存状态。
一种实现方式中,所述读取单元404,还被配置为执行:
获取所述目标存储对象的状态信息;
在所述目标存储对象为已缓存状态的情况下,从所述本地缓存的所述目标存储对象中读取所述目标待处理数据块。
一种实现方式中,所述读取单元404,还被配置为执行:
在所述目标存储对象为已剔除状态的情况下,从磁盘空间读取所述目标待处理数据块,所述已剔除状态用于指示所述目标存储对象已从所述本地缓存中删除且不会再次存储至所述本地缓存。
一种实现方式中,所述读取单元404,还被配置为执行:
在所述目标存储对象中的待处理数据块均已被读取的情况下,从所述本地缓存中删除所述目标存储对象,并将所述目标存储对象的状态信息标记为已剔除状态。
一种实现方式中,所述存储单元403,具体被配置为执行生成所述目标存储对象的标识集合,所述标识集合中包括目标存储对象中的每个待处理数据块的标识信息;
所述读取单元404,具体被配置为执行在所述从所述本地缓存的所述目标存储对象中读取所述目标待处理数据块之后,从所述标识集合中删除所述目标待处理数据块的标识信息,并在所述标识集合为空集时,判定所述目标待处理数据块均已被读取。
一种实现方式中,所述读取单元404,还被配置为执行:
在所述目标存储对象的最近读取时间与当前时间的间隔大于预设时长的情况下,从所述本地缓存中删除所述目标存储对象,并将所述目标存储对象的状态信息标记为已剔除状态。
由以上可见,本公开的实施例提供的技术方案,将多个小粒度的待处理数据块组成至少一个存储对象,再将数据量较大的存储对象作为一个整体批量加载到本地缓存中,在读取待处理数据块时,可以从本地存储中读取,而不需要访问磁盘,以达成一次大粒度加载、多次使用,减少每次数据处理和读取过程中的磁盘I/O次数,以及所占用大量的时间及磁盘资源,同时,每个存储对象都由多个小粒度的待处理数据块组成,大粒度的数据块不会存储在本地缓存中占用空间,从而在不提高运营成本的条件下,提高数据访问效率和系统性能。
图9是根据一示例性实施例示出的一种用于数据处理的电子设备的框图。
在示例性实施例中,还提供了一种包括指令的计算机可读存储介质,例如包括指令的存储器,上述指令可由电子设备的处理器执行以完成上述方法。可选地,计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据处理设备等。
在示例性实施例中,还提供一种计算机程序产品,当其在计算机上运行时,使得计算机实现上述数据处理的方法。
由以上可见,本公开的实施例提供的技术方案,将多个小粒度的待处理数据块组成至少一个存储对象,再将数据量较大的存储对象作为一个整体批量加载到本地缓存中,在读取待处理数据块时,可以从本地存储中读取,而不需要访问磁盘,以达成一次大粒度加载、多次使用,减少每次数据处理和读取过程中的磁盘I/O次数,以及所占用大量的时间及磁盘资源,同时,每个存储对象都由多个小粒度的待处理数据块组成,大粒度的数据块不会存储在本地缓存中占用空间,从而在不提高运营成本的条件下,提高数据访问效率和系统性能。
图10是根据一示例性实施例示出的一种用于数据处理的装置800的框图。
例如,装置800可以是移动电话,计算机,数字广播电子设备,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图10,装置800可以包括以下一个或多个组件:处理组件802,存储器804,电力组件806,多媒体组件808,音频组件810,输入/输出(I/O)的接口812,传感器组件814,以及通信组件816。
处理组件802通常控制装置800的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件802可以包括一个或多个处理器820来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件802可以包括一个或多个模块,便于处理组件802和其他组件之间的交互。例如,处理组件802可以包括多媒体模块,以方便多媒体组件808和处理组件802之间的交互。
存储器804被配置为存储各种类型的数据以支持在设备800的操作。这些数据的示例包括用于在装置800上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器804可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程直读存储器(EEPROM),可擦除可编程直读存储器(EPROM),可编程直读存储器(PROM),直读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件807为装置800的各种组件提供电力。电源组件807可以包括电源管理系统,一个或多个电源,及其他与为装置800生成、管理和分配电力相关联的组件。
多媒体组件808包括在所述装置800和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件808包括一个前置摄像头和/或后置摄像头。当设备800处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件810被配置为输出和/或输入音频信号。例如,音频组件810包括一个麦克风(MIC),当装置800处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器804或经由通信组件816发送。在一些实施例中,音频组件810还包括一个扬声器,用于输出音频信号。
I/O接口812为处理组件802和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件814包括一个或多个传感器,用于为装置800提供各个方面的状态评估。例如,传感器组件814可以检测到设备800的打开/关闭状态,组件的相对定位,例如所述组件为装置800的显示器和小键盘,传感器组件814还可以检测装置800或装置800一个组件的位置改变,用户与装置800接触的存在或不存在,装置800方位或加速/减速和装置800的温度变化。传感器组件814可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件814还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件814还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件816被配置为便于装置800和其他设备之间有线或无线方式的通信。装置800可以接入基于通信标准的无线网络,如WiFi,运营商网络(如2G、3G、4G或5G),或它们的组合。在一个示例性实施例中,通信组件816经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件816还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,装置800可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行第一方面和第二方面所述的方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器804,上述指令可由装置800的处理器820执行以完成上述方法。可选地,例如,存储介质可以是非临时性计算机可读存储介质,例如,所述非临时性非临时性计算机可读存储介质计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据处理设备等。
在示例性实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中第一所述的数据处理方法。
由以上可见,本公开的实施例提供的技术方案,将多个小粒度的待处理数据块组成至少一个存储对象,再将数据量较大的存储对象作为一个整体批量加载到本地缓存中,在读取待处理数据块时,可以从本地存储中读取,而不需要访问磁盘,以达成一次大粒度加载、多次使用,减少每次数据处理和读取过程中的磁盘I/O次数,以及所占用大量的时间及磁盘资源,同时,每个存储对象都由多个小粒度的待处理数据块组成,大粒度的数据块不会存储在本地缓存中占用空间,从而在不提高运营成本的条件下,提高数据访问效率和系统性能。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种数据处理方法,其特征在于,包括:
获取多个待处理数据块,所述待处理数据块的数据量小于预设阈值;
将所述多个待处理数据块划分为至少一个存储对象,每个存储对象包括多个待处理数据块;
在接收到针对目标待处理数据块的访问请求之后,将所述目标待处理数据块对应的目标存储对象存储至本地缓存;
从所述本地缓存的所述目标存储对象中读取所述目标待处理数据块。
2.根据权利要求1所述的数据处理方法,其特征在于,所述将所述多个待处理数据块划分为至少一个存储对象,包括:
若当前待处理数据块与候选数据块的数据量之和不大于所述预设阈值,则将所述当前待处理数据块加入所述候选数据块,并获取下一个待处理数据块,作为新的当前待处理数据块,所述候选数据块为未被分组的待处理数据块;
若当前待处理数据块与候选数据块的数据量之和大于所述预设阈值,则将所述当前待处理数据块与所述候选数据块划分为一组,作为一个存储对象。
3.根据权利要求1所述的数据处理方法,其特征在于,在所述获取多个待处理数据块之前,所述方法还包括:
依次获取原始数据块;
在所述原始数据块的数据量大于所述预设阈值的情况下,则将所述原始数据块作为单一数据块,在接收到针对所述单一数据块的访问请求之后,从磁盘空间中读取所述单一数据块;
所述获取多个待处理数据块,包括:
在所述原始数据块的数据量不大于所述预设阈值的情况下,则将所述原始数据块作为待处理数据块。
4.根据权利要求1所述的数据处理方法,其特征在于,在所述从所述本地缓存的所述目标存储对象中读取所述目标待处理数据块之前,所述方法包括:
获取所述目标存储对象的状态信息;
所述从所述本地缓存的所述目标存储对象中读取所述目标待处理数据块,包括:
在所述目标存储对象为已缓存状态的情况下,从所述本地缓存的所述目标存储对象中读取所述目标待处理数据块。
5.根据权利要求1所述的数据处理方法,其特征在于,在所述从所述本地缓存的所述目标存储对象中读取所述目标待处理数据块之后,所述方法还包括:
在所述目标存储对象中的待处理数据块均已被读取的情况下,从所述本地缓存中删除所述目标存储对象,并将所述目标存储对象的状态信息标记为已剔除状态。
6.根据权利要求1所述的数据处理方法,其特征在于,在所述从所述本地缓存的所述目标存储对象中读取所述目标待处理数据块之后,所述方法还包括:
在所述目标存储对象的最近读取时间与当前时间的间隔大于预设时长的情况下,从所述本地缓存中删除所述目标存储对象,并将所述目标存储对象的状态信息标记为已剔除状态。
7.一种数据处理装置,其特征在于,包括:
获取单元,被配置为执行获取多个待处理数据块,所述待处理数据块的数据量小于预设阈值;
划分单元,被配置为执行将所述多个待处理数据块划分为至少一个存储对象,每个存储对象包括多个待处理数据块;
存储单元,被配置为执行在接收到针对目标待处理数据块的访问请求之后,将所述目标待处理数据块对应的目标存储对象存储至本地缓存;
读取单元,被配置为执行从所述本地缓存的所述目标存储对象中读取所述目标待处理数据块。
8.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至6中任一项所述的数据处理方法。
9.一种计算机可读存储介质,其特征在于,当所述计算机可读存储介质中的指令由数据处理电子设备的处理器执行时,使得数据处理电子设备能够执行如权利要求1至6中任一项所述的数据处理方法。
10.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6任一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210004786.9A CN114428589B (zh) | 2022-01-04 | 2022-01-04 | 一种数据处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210004786.9A CN114428589B (zh) | 2022-01-04 | 2022-01-04 | 一种数据处理方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114428589A true CN114428589A (zh) | 2022-05-03 |
CN114428589B CN114428589B (zh) | 2024-05-28 |
Family
ID=81311956
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210004786.9A Active CN114428589B (zh) | 2022-01-04 | 2022-01-04 | 一种数据处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114428589B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115168259A (zh) * | 2022-09-06 | 2022-10-11 | 浪潮电子信息产业股份有限公司 | 一种数据存取方法、装置、设备和计算机可读存储介质 |
CN118363901A (zh) * | 2024-06-18 | 2024-07-19 | 北京象帝先计算技术有限公司 | PCIe设备、电子组件及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130086303A1 (en) * | 2011-09-30 | 2013-04-04 | Fusion-Io, Inc. | Apparatus, system, and method for a persistent object store |
CN103440207A (zh) * | 2013-07-31 | 2013-12-11 | 北京智谷睿拓技术服务有限公司 | 缓存方法及装置 |
CN113010455A (zh) * | 2021-03-18 | 2021-06-22 | 北京金山云网络技术有限公司 | 数据处理方法、装置和电子设备 |
CN113220211A (zh) * | 2020-01-21 | 2021-08-06 | 上海商汤智能科技有限公司 | 数据存储系统、数据访问方法及相关装置 |
-
2022
- 2022-01-04 CN CN202210004786.9A patent/CN114428589B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130086303A1 (en) * | 2011-09-30 | 2013-04-04 | Fusion-Io, Inc. | Apparatus, system, and method for a persistent object store |
CN103440207A (zh) * | 2013-07-31 | 2013-12-11 | 北京智谷睿拓技术服务有限公司 | 缓存方法及装置 |
CN113220211A (zh) * | 2020-01-21 | 2021-08-06 | 上海商汤智能科技有限公司 | 数据存储系统、数据访问方法及相关装置 |
CN113010455A (zh) * | 2021-03-18 | 2021-06-22 | 北京金山云网络技术有限公司 | 数据处理方法、装置和电子设备 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115168259A (zh) * | 2022-09-06 | 2022-10-11 | 浪潮电子信息产业股份有限公司 | 一种数据存取方法、装置、设备和计算机可读存储介质 |
CN118363901A (zh) * | 2024-06-18 | 2024-07-19 | 北京象帝先计算技术有限公司 | PCIe设备、电子组件及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN114428589B (zh) | 2024-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105955765B (zh) | 应用预加载方法及装置 | |
CN114428589B (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
WO2021082486A1 (zh) | 获取样本的方法、装置、设备、存储介质及程序 | |
CN111258952B (zh) | 一种数据存储控制方法、装置及存储介质 | |
CN107608714B (zh) | 字节对齐方法、装置及计算机可读存储介质 | |
CN109634762B (zh) | 一种数据回收方法、装置、电子设备及存储介质 | |
US20210133505A1 (en) | Method, device, and storage medium for retrieving samples | |
CN114416178A (zh) | 数据访问方法、装置及非临时性计算机可读存储介质 | |
CN112948440A (zh) | 页面数据的处理方法及装置、终端、存储介质 | |
CN116841713A (zh) | 任务扫描方法、装置、电子设备以及存储介质 | |
CN108345434B (zh) | 数据写入方法、装置、计算机设备及可读存储介质 | |
CN116303303A (zh) | 批量数据处理方法、装置、设备及介质 | |
CN116048757A (zh) | 任务处理方法、装置、电子设备和存储介质 | |
CN115016944A (zh) | 一种进程访问方法、装置及电子设备 | |
CN113422800B (zh) | 资源处理方法、装置、系统、电子设备及存储介质 | |
CN114281859A (zh) | 数据处理方法、设备及存储介质 | |
CN115422203A (zh) | 区块链分布式系统的数据管理方法、装置、设备及介质 | |
CN113010514B (zh) | 热加载方法及装置 | |
CN114610656A (zh) | 一种数据替换方法、装置、电子设备及存储介质 | |
CN116360671A (zh) | 存储方法、装置、终端及存储介质 | |
CN115687270A (zh) | 数据存储整理方法、装置、电子设备和存储介质 | |
CN113378022A (zh) | 一种站内搜索平台、搜索方法和相关装置 | |
CN111625536B (zh) | 一种数据访问方法及装置 | |
CN107665125B (zh) | 执行操作指令的方法及装置 | |
CN111241097B (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 |