CN114064260A - 数据去倾斜方法、装置、电子设备及存储介质 - Google Patents
数据去倾斜方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114064260A CN114064260A CN202010777924.8A CN202010777924A CN114064260A CN 114064260 A CN114064260 A CN 114064260A CN 202010777924 A CN202010777924 A CN 202010777924A CN 114064260 A CN114064260 A CN 114064260A
- Authority
- CN
- China
- Prior art keywords
- data
- key
- tasks
- task
- allocated
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种数据去倾斜方法、装置、电子设备及存储介质,该方法将数据量相对较大的键对应的数据子集进行了打散处理,将其打散至不同的任务中,最终通过将批量数据的不同键分别对应的不同任务相对均衡地分配至多个计算节点加以执行,实现了基于键所对应数据的数据量为其进行任务配置(如配置为一个任务,或打散到多个任务)及计算资源的适配,换个角度来说,由于将键对应的大数据量的数据进行了打散处理,从而不再存在大数据量的任务,各个计算节点上所分配的任务的处理量也是相对均衡的,从而实现了数据去倾斜,可充分利用设备的资源进行数据计算,降低了批量数据整体任务的计算耗时,避免了因为数据倾斜所造成的单点计算问题。
Description
技术领域
本申请属于资源优化技术领域,尤其涉及一种数据去倾斜方法、装置、电子设备及存储介质。
背景技术
数据倾斜是指在针对批量数据的任务分配与执行中,任务数据分散度不够,不同计算节点所对应的任务数据量不均衡,一个(一些)计算节点的任务数据量庞大需承受巨大的压力,而另一个(一些)计算节点的任务数据量较少。
任务数据量庞大的计算节点通常会需要更长的时间消耗来完成任务的处理,而其他节点对任务处理完毕后要一直等待未完成任务的节点,从而导致了单点计算问题,拖慢了各计算节点的整体任务计算速率,延长了任务的整体计算耗时。因此,提供一种数据去倾斜的实现方案,以避免上述的单点计算问题、相应提升批量数据处理场景中各计算节点的整体计算速率、缩短整体计算耗时,是本领域值得研究的课题。
发明内容
有鉴于此,本申请提供了一种数据去倾斜方法、装置、电子设备及存储介质,通过将批量数据中数据量相对较大的任务打散处理,实现对不同任务进行节点资源的优化分配,以避免上述的单点计算问题。
具体技术方案如下:
一种数据去倾斜方法,包括:
获得待处理的批量数据的各个键;
确定所述批量数据的数据集中分别对应于不同键的相应数据子集;
根据键所对应数据子集的数据量、所述数据集的总数据量和为所述数据集设置的任务的总数量,确定需为键对应的数据子集分配的任务数;为各个键对应分配的任务数之和不超过所述总数量;
如果键对应的任务数为1,将键对应的数据子集配置给为键分配的一个任务;如果键对应的任务数大于1,将键对应的数据子集中的各条数据分散到为键分配的相应任务数的不同任务中;
将各个键对应的各个任务分配至多个计算节点;
其中,不同计算节点所分配任务的数量差小于阈值,同一计算节点对应的各条数据串行执行,不同的计算节点并行执行分别分配的任务。
可选的,所述根据键所对应数据子集的数据量、所述数据集的总数据量和为所述数据集设置的任务的总数量,确定需为键对应的数据子集分配的任务数,包括:
根据键对应的数据子集的数据量和所述数据集的总数据量,为键确定一相对应的权重;
基于键对应的权重和为所述数据集分配的任务的总数量,确定需为键所对应的数据子集分配的任务数。
可选的,所述基于键对应的权重和为所述数据集分配的任务的总数量,确定需为键所对应的数据子集分配的任务数,包括:
利用以下计算式计算需为键对应的数据子集分配的任务数:
其中:
N表示为所述数据集分配的任务的总数量;
|Di|表示键所对应的数据子集的数据量;
|D|表示所述数据集的总数据量;
Ni表示为键对应的数据子集分配的任务数。
可选的,如果键对应的任务数大于1,将键对应的数据子集中的各条数据分散到为键分配的相应任务数的不同任务中,包括:
基于取值的数目等同于所述任务数的随机变量,为键对应的所述数据子集中各条数据的所述键添加随机数,得到所述键对应的数目为所述任务数的各个子键,所述子键为所述键与所添加的随机数的组合;
确定每个子键在所述数据子集中分别对应的数据;
将各个子键在所述数据子集中分别对应的数据,一对一配置给为所述键分配的所述任务数的不同任务中。
可选的,在将各个键对应的各个任务分配至多个计算节点之后,还包括:
针对对应的任务数大于1的键,对该键的各个任务的任务处理结果进行聚合处理,得到该键对应的任务处理结果;
整合各个键的任务处理结果,得到所述批量数据的数据处理结果。
可选的,所述针对对应的任务数大于1的键,对该键的各个任务的任务处理结果进行聚合处理,包括:
将该键的各个任务处理结果中包括的子键中的随机数剥离,使得将各个任务处理结果中包括的各个子键还原为该键;
基于该键对该键的各个任务处理结果进行聚合。
一种数据去倾斜装置,包括:
获取单元,用于获得待处理的批量数据的各个键;
第一确定单元,用于确定所述批量数据的数据集中分别对应于不同键的相应数据子集;
第二确定单元,用于根据键所对应数据子集的数据量、所述数据集的总数据量和为所述数据集设置的任务的总数量,确定需为键对应的数据子集分配的任务数;为各个键对应分配的任务数之和不超过所述总数量;
任务数据配置单元,用于在键对应的任务数为1情况下,将键对应的数据子集配置给为键分配的一个任务;在键对应的任务数大于1情况下,将键对应的数据子集中的各条数据分散到为键分配的相应任务数的不同任务中;
任务分配单元,用于将各个键对应的各个任务分配至多个计算节点;
其中,不同资源节点所分配任务的数量差小于阈值,同一计算节点对应的各条数据串行执行,不同的资源节点并行执行分别分配的任务。
可选的,所述第二确定单元,具体用于:
根据键对应的数据子集的数据量和所述数据集的总数据量,为键确定一相对应的权重;
基于键对应的权重和为所述数据集分配的任务的总数量,确定需为键所对应的数据子集分配的任务数。
可选的,所述第二确定单元,基于键对应的权重和为所述数据集分配的任务的总数量,确定需为键所对应的数据子集分配的任务数,具体包括:
利用以下计算式计算需为键对应的数据子集分配的任务数:
其中:
N表示为所述数据集分配的任务的总数量;
|Di|表示键所对应数据子集的数据量;
|D|表示所述数据集的总数据量;
Ni表示为键对应的数据子集分配的任务数。
可选的,所述任务数据配置单元在键对应的任务数大于1情况下,将键对应的数据子集中的各条数据分散到为键分配的相应任务数的不同任务中,包括:
基于取值的数目等同于所述任务数的随机变量,为键对应的所述数据子集中各条数据的所述键添加随机数,得到所述键对应的数目为所述任务数的各个子键,所述子键为所述键与所添加的随机数的组合;
确定每个子键在所述数据子集中分别对应的数据;
将各个子键在所述数据子集中分别对应的数据,一对一配置给为所述键分配的所述任务数的不同任务中。
可选的,还包括:
整合单元,用于:
针对对应的任务数大于1的键,对该键的各个任务的任务处理结果进行聚合处理,得到该键对应的任务处理结果;
整合各个键的任务处理结果,得到所述批量数据的数据处理结果。
可选的,所述整合单元针对对应的任务数大于1的键,对该键的各个任务的任务处理结果进行聚合处理,包括:
将该键的各个任务处理结果中包括的子键中的随机数剥离,使得将各个任务处理结果中包括的各个子键还原为该键;
基于该键对该键的各个任务处理结果进行聚合。
一种电子设备,包括:
存储器,用于存放计算机指令集;
处理器,用于通过执行所述存储器上存放的指令集,实现如上任一项所述的数据去倾斜方法。
一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机指令集,所述计算机指令集被处理器执行时实现如上任一项所述的数据去倾斜方法。
本申请实施例提供的数据去倾斜方法、装置、电子设备及存储介质,将数据量相对较大的键对应的数据子集进行了打散处理,将其打散至不同的任务中,最终通过将批量数据的不同键分别对应的不同任务相对均衡地分配至多个计算节点加以执行,实现了基于键所对应数据的数据量为其进行任务配置(如配置为一个任务,或打散到多个任务)及计算资源的适配,换个角度来说,由于将键对应的大数据量的数据进行了打散处理,从而不再存在大数据量的任务,各个计算节点上所分配的任务的处理量也是相对均衡的,从而实现了数据去倾斜,可充分利用设备的资源进行数据计算,降低了批量数据整体任务的计算耗时,避免了因为数据倾斜所造成的单点计算问题。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1是本申请实施例提供的数据去倾斜方法的一种流程示意图;
图2是本申请实施例提供的将同一键对应的数据打散到不同任务的示意图;
图3是本申请实施例提供的数据去倾斜方法的另一种流程示意图;
图4是本申请实施例提供的数据去倾斜装置的一种结构示意图;
图5是本申请实施例提供的数据去倾斜装置的另一种结构示意图;
图6是本申请实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
针对因数据倾斜而导致的单点计算问题,传统技术中,通过以下两种方式加以解决:
一、在设备增加reduce的jvm(Java Virtual Machine,Java虚拟机)内存来优化数据倾斜(即利用增加的jvm内存对任务处理量大的计算节点进行辅助处理);然而,该处理方式存在相应限制,如存在内存的限制(受限于所具备的内存资源),同时也可能对集群或同一物理机中其他节点上任务的运行产生不稳定的影响,比如在数据处理量大的计算节点出现OOM(内存溢出)异常时,会将该节点的一部分数据处理任务转移至其他节点,从而可能影响其他节点所运行任务的稳定性。
二、通过做两个阶段的mapreduce来优化数据倾斜。在该实现方式中,对于待处理的批量数据,在map(映射)阶段,将所对应的数据量较大的键(key)的数据打散到固定设置的相应数量的多个任务,也即,此种方式是人为固定设置批量数据中所对应的数据量较大的键的任务数,比较局限,对设备资源的使用仍存在不够充分、不够优化的问题,相应地,批量数据的整体任务的处理速度也不能达到最优。
为解决传统技术存在的上述问题,本申请提供了一种数据去倾斜方法、装置、电子设备及存储介质,可应用于基于服务器集群或单个物理机对批量数据进行多任务、多节点运行的场景中,以下将通过多个实施例对本申请的数据去倾斜方法、装置、电子设备及存储介质进行详细说明。
首先介绍本申请实施例提供的数据去倾斜方法,该方法具体可应用于服务器集群的某一服务器中或者某个单独设置的物理机(如个人PC或服务器)中,参阅图1,该方法可以包括以下处理步骤:
步骤101、获得待处理的批量数据的各个键。
待处理的批量数据,具体地,可以是待处理的批量数据记录,如数据库中的批量数据记录等。
数据库通常以key-value(键-值)的形式组织数据记录,批量数据的各个键即指key-value(键-值)的数据结构形式中的“key”,具体可以是数据记录的主键,或者超键、候选键、外键等非主键,关于数据记录的各种类型的键,具体可参阅现有技术的相关定义或说明,不再赘述。
对于待处理的批量数据,首先可确定其对应的各个键。比如,对于批量的学生信息数据,其对应的各个键可以包括但不限于“姓名”、“身高”、“党员”、“学校/院系”等。
步骤102、确定所述批量数据的数据集中分别对应于不同键的相应数据子集。
在针对批量数据的多任务、多节点运行场景中,通常以数据的键为基准对数据进行任务划分,且同一个任务的数据会被分配到同一计算节点执行(即同一个任务的各条数据不会跨节点执行),比如传统技术中一般将批量数据的数据集中同一个键对应的数据子集划分到一个任务,并将一个任务的数据分配到一个计算节点(如一个线程或进程)加以执行等(当然,这样对于对应的数据量较大的任务其节点的处理量相应较大、运行耗时也较大,相应会出现单点计算问题)。
本申请实施例中,同样以数据的键为基准对批量数据进行任务划分,具体地,在获得待处理的批量数据的各个键之后,首先确定批量数据的数据集中分别对应于不同键的相应数据子集。
比如,在批量的学生信息数据中,确定对应于键“姓名”的数据子集,对应于键“身高”的数据子集,对应于键“党员”的数据子集,以及对应于键“学校/院系”的数据子集等。
步骤103、根据键所对应数据子集的数据量、所述数据集的总数据量和为所述数据集设置的任务的总数量,确定需为键对应的数据子集分配的任务数;各个键对应分配的任务数之和不超过所述总数量。
具体地,可根据至少部分键(如批量数据的各个键)中的每个键对应的数据子集的数据量和批量数据的数据集的总数据量,为每个键确定一相对应的权重;并进一步基于每个键对应的权重和为批量数据的数据集分配的任务的总数量,确定需为键所对应的数据子集分配的任务数。
实施中,基于为每个键分配权重,进而确定需为键所对应的数据子集分配的任务数的处理过程可以如下:
对于待处理的批量数据,假设其对应的各个键的数量为n(如“姓名”、“身高”、“党员”、“学校/院系”这4种键等),在使用键对批量数据的数据集D进行划分后,会产生n个对应不同键的分支,任何一个分支的数据子集Di包含了批量数据中所有属性为keyi(即第i个键,如“党员”)的数据记录。
其中,|Di|表示键所对应数据子集的数据量;|D|表示所述数据集的总数据量。
之后,可进一步根据以下计算式得出需为键keyi对应的数据子集Di分配的任务数:
其中,N为预先为批量数据设置的任务的总数量,表示对向下取整,Ni表示需为键对应的数据子集分配的任务数。本实施例中,对向下取整而非向上取整,可保证为各个键对应分配的任务数之和不超过为批量任务设置的任务的总数量,相应能够保证批量数据整体任务的资源配置不会超量。
如上文所述,在针对批量数据的多任务、多节点运行场景中,以数据的键为基准对数据进行任务划分,且同一个任务的数据会被分配到同一计算节点执行。当某个键相对于其他的键存在大量的数据时,则对该键的数据进行计算将需要非常久的时间来运行,而由于批量数据的整体任务的总处理时间与运行最久的任务的处理时间相同,这样会造成批量数据的整体任务的处理效率非常低下,导致了单点计算问题,有极高的风险造成数据堆积,本实施例中,基于键所对应的数据子集的数据量为其分配一权重系数,并结合为批量数据分配的任务的总数量及键的权重系数,为键的数据子集动态分配一合理的任务数(而不是仅分配一个任务),使得为实现将对应的数据量较大的键的数据打散到不同任务中、避免数据量较大的任务的出现提供了支持。
步骤104、如果键对应的任务数为1,将键对应的数据子集配置给为键分配的一个任务;如果键对应的任务数大于1,将键对应的数据子集中的各条数据分散到为键分配的相应任务数的不同任务中。
其中,如果基于上述权重方式,确定出需为某个键分配的任务数为1,即Ni=1,表明该键所对应数据子集的数据量较小,仅需较短的耗时就可以完成,相应可直接将该键对应的数据子集中的数据配置给一个任务即可。
反之,若确定出需为某个键分配的任务数大于1,即Ni≥2,表明该键所对应数据子集的数据量较大,从而需将其进行打散处理,使得将该键对应的数据子集中的不同数据,打散到为该键确定出的相应任务数的不同任务中。
容易理解,Ni的取值为大于或等于1的自然数。
仍以上述的学生信息为例,假设对应于“党员”的数据子集的数据量较小,相应地,基于上述的权重方式确定出需为该键“党员”分配的任务数为1,则可直接将“党员”对应的数据子集配置到一个任务中。假设对应于“姓名”的数据子集的数据量较大,基于上述的权重方式确定出需为该键“姓名”分配的任务数为3,则可将“姓名”对应的数据集中的数据打散配置到3个任务中。
在某个键keyi对应的任务数Ni≥2,相应需对该键keyi对应的数据子集Di中的数据进行打散处理时,优选地,可将数据子集Di中的数据相对均衡地打散到数量为Ni的不同任务中,即,尽可能使得为各个任务配置的数据的数据量相当,进而使得其具有相对均衡的处理量。
为了实现这一目的,本实施例中为Di中数据的键keyi添加了一随机变量r,其中,r会随机性地出现数目为Ni(即需为keyi分配的任务数)的不同取值,且r的数目为Ni的各个不同取值可以是任意的,并不限定,可选地,r的各个不同取值(数目为Ni)具体可以是[0,Ni-1]中的各个整数值,这样,通过添加随机变量r,最终可实现为数据子集Di中的各条数据的键keyi添加随机数,相应可得到键keyi对应的数目为Ni的各个子键,所述子键为键keyi与所添加的随机数的组合,即子键=keyi+随机数。
在此基础上,可以以得到的各个子键为基准,对键keyi对应的数据子集Di进行进一步划分,以得到数目为Ni的各个子键中每个子键在数据子集Di中分别对应的数据。
之后,如图2所示,将数目为Ni的各个子键在数据子集Di中分别对应的数据,以子键为单位一对一配置给为键keyi分配的个数为Ni的不同任务中,以此实现了将对应的数据量较大的键的数据打散到不同任务中,避免了数据量较大的任务的出现,相应可为避免单点计算问题提供技术支持。图2中的random1-randomNi表示Ni个随机数,任务1-任务Ni表示Ni个任务。
步骤105、将各个键对应的各个任务分配至多个计算节点。
本实施例中,在基于上述处理过程将各个键中对应的数据量较大的数据子集进行打散处理,相应得到数据量相对均衡的多个任务后,最终将各个键对应的各个任务(一个键可能对应一个任务,或多个任务)分配至多个计算节点,其中,不同计算节点所分配任务的数量差小于阈值,示例性地,比如小于2等,以保证各个计算节点所分配的任务量的均衡。
同一任务对应的各条数据串行执行,且同一计算节点对应的各条数据(可能是同一任务或不同任务的数据)串行执行,不同的计算节点可以并行执行分别分配的任务。
可选地,一个计算节点可以是一个进程或一个线程,单并不限于此,不同的计算节点可以是集群中不同服务器或相同服务器提供的不同进程或线程,也可以是单独设置的一个物理机提供的不同进程或线程。
实施中,任务规模通常是与计算资源具备对应关系的,例如,可以基于预定的任务规模(可基于任务对应的数据量表征)设定为将一个任务分配到一个计算节点上,或者将多个任务分配到一个计算节点上等,可选地,可将一个任务分配至一个计算节点,也即,一个计算节点仅运行一个任务。
容易理解,该实现方式下,当针对批量数据为其设置了所分配任务的总数量时,相当于为该批量数据限定了总的可用计算节点,进一步地,相当于为该批量数据限定了总的可用计算资源,基于本申请实施例的上述处理过程,通过对批量数据中对应的数据量较大的键进行数据的打散处理,将其数据打散至与其数据量相适配数目的多个任务中,实现了为该对应的数据量较大的键从总的可用计算资源中进行了与其数据量相契合的计算资源的动态适配,相应实现了为对应的数据量不等的不同键分别适配不等的合理计算资源,从而实现了数据去倾斜过程中设备可用资源与计算速率的最优化调配,可以充分利用设备资源进行数据计算,降低了批量数据的整体任务的计算耗时,避免了因为数据倾斜所造成的单点计算问题。
同时,与传统技术的上述两种实现方式相比,本申请实施例的实现方式,由于可基于总的可用计算资源并结合键所对应的数据量为其进行计算资源的动态合理分配,从而不存在内存的限制,不会因内存溢出等问题而对集群或同一物理机中其他任务的运行产生不稳定的影响;且由于本申请根据键对应的实际数据量、批量数据的总数据量及总任务数,为键动态分配合理的任务数,从而同时解决了传统技术中基于两个阶段的mapreduce优化数据倾斜的方式存在的对设备资源的使用仍不够充分、不够优化的问题,实现了数据去倾斜过程中设备可用资源与计算速率的最优化调配。
在一可选实施例中,参阅图3示出的数据去倾斜方法的流程示意图,本申请公开的数据去倾斜方法,在步骤105之后,还可以包括以下处理步骤:
步骤106、针对对应的任务数大于1的键,对该键的各个任务的任务处理结果进行聚合处理,得到该键对应的任务处理结果。
每个键/子键所对应任务的任务处理结果中至少包括键/子键以及处理结果信息。
针对对应的任务数大于1的键,通过以上的打散处理,实现了按子键将其数据子集中的数据打散到了多个不同的任务中分别加以处理,然而站在逻辑角度,同一个键对应的数据子集应属于同一任务、应具备对应于该键的一个统一处理结果,因此,针对对应的任务数大于1的键,在获得其对应于各个子键/各个任务的任务处理结果后,可进一步对其各个子键/各个任务的任务处理结果进行聚合处理,以得到该键对应的统一的任务处理结果。
该聚合处理可以包括:
将该键的各个任务处理结果中包括的子键中的随机数剥离,使得将各个任务处理结果中包括的各个子键还原为该键(即子键对应的原始键);
基于该键对该键的各个任务处理结果进行聚合。
在剥离子键中的随机数,将其还原为所对应的原始键后,对各个任务处理结果进行的聚合,可以视键所对应数据子集的实际处理逻辑而定,具体地,比如可以是将各个子键/各个任务所对应任务的数据结果进行累加、进行相减或者简单的将各个子键/各个任务对应的各条结果记录综合在一个文档中等等。
以下举例说明。
对于(1+1+1+2+2+3+3+3+3)=19这一计算,可以基于上述的打散处理过程,将各个待求和数据打散到三个任务中,假设各个任务分配到的计算过程具体如下:(1+1+1)、(2+2)、(3+3+3+3),并将其分配到3个线程进行计算,则在获得各个线程的任务计算结果如3、4、12后,可进一步将各个线程的任务计算结果进行累加(即聚合处理),最终得到19这一处理结果。
可以理解,实际应用场景中不会是上述的简单处理,该示例仅为说明本实施例的原理而提供,但不作为应用场景中的实际应用实例。
步骤107、整合各个键的任务处理结果,得到所述批量数据的数据处理结果。
最终,可整合各个键对应的任务处理结果,相应得到所述批量数据的数据处理结果。此处的整合处理,相应可以视批量数据的实际处理逻辑而定,例如,可以针对各个键的处理结果的不同组合,对数据进行分类存储或分类处理等等,对此不加限定。
综上所述,本申请实施例将数据量相对较大的键对应的数据子集进行了打散处理,将其打散至不同的任务中,最终通过将批量数据的不同键分别对应的不同任务相对均衡地分配至多个计算节点加以执行,实现了基于键所对应数据的数据量为其进行任务配置(如配置为一个任务,或打散到多个任务)及计算资源的适配,换个角度来说,由于将键对应的大数据量的数据进行了打散处理,从而不再存在大数据量的任务,各个计算节点上所分配的任务的处理量也是相对均衡的,从而实现了数据去倾斜,可充分利用设备的资源进行数据计算,降低了批量数据整体任务的计算耗时,避免了因为数据倾斜所造成的单点计算问题。
对应于上述的数据去倾斜方法,本申请还公开了一种数据去倾斜装置,如图4所示,该数据去倾斜装置包括:
获取单元401,用于获得待处理的批量数据的各个键;
第一确定单元402,用于确定所述批量数据的数据集中分别对应于不同键的相应数据子集;
第二确定单元403,用于根据键所对应数据子集的数据量、所述数据集的总数据量和为所述数据集设置的任务的总数量,确定需为键对应的数据子集分配的任务数;各个键对应分配的任务数之和不超过所述总数量;
任务数据配置单元404,用于在键对应的任务数为1情况下,将键对应的数据子集配置给为键分配的一个任务;在键对应的任务数大于1情况下,将键对应的数据子集中的各条数据分散到为键分配的相应任务数的不同任务中;
任务分配单元405,用于将各个键对应的各个任务分配至多个计算节点;
其中,不同计算节点所分配任务的数量差小于阈值,同一资源节点对应的各条数据串行执行,不同的资源节点并行执行分别分配的任务。
在本申请实施例的一可选实施方式中,第二确定单元403,具体用于:
根据键对应的数据子集的数据量和所述数据集的总数据量,为键确定一相对应的权重;
基于键对应的权重和为所述数据集分配的任务的总数量,确定需为键所对应的数据子集分配的任务数。
在本申请实施例的一可选实施方式中,第二确定单元403,基于键对应的权重和为所述数据集分配的任务的总数量,确定需为键所对应的数据子集分配的任务数,具体包括:
利用以下计算式计算需为键对应的数据子集分配的任务数:
其中:
N表示为所述数据集分配的任务的总数量;
|Di|表示键所对应数据子集的数据量;
|D|表示所述数据集的总数据量;
Ni表示为键对应的数据子集分配的任务数。
在本申请实施例的一可选实施方式中,任务数据配置单元404在键对应的任务数大于1情况下,将键对应的数据子集中的各条数据分散到为键分配的相应任务数的不同任务中,包括:
基于取值的数目等同于所述任务数的随机变量,为键对应的所述数据子集中各条数据的所述键添加随机数,得到所述键对应的数目为所述任务数的各个子键,所述子键为所述键与所添加的随机数的组合;
确定每个子键在所述数据子集中分别对应的数据;
将各个子键在所述数据子集中分别对应的数据,一对一配置给为所述键分配的所述任务数的不同任务中。
在本申请实施例的一可选实施方式中,参阅图5,该数据去倾斜装置还可以包括:整合单元406,用于:
针对对应的任务数大于1的键,对该键的各个任务的任务处理结果进行聚合处理,得到该键对应的任务处理结果;
整合各个键的任务处理结果,得到所述批量数据的数据处理结果
在本申请实施例的一可选实施方式中,整合单元406针对对应的任务数大于1的键,对该键的各个任务的任务处理结果进行聚合处理,包括:
将该键的各个任务处理结果中包括的子键中的随机数剥离,使得将各个任务处理结果中包括的各个子键还原为该键;
基于该键对该键的各个任务处理结果进行聚合。
对于本申请实施例公开的数据去倾斜装置而言,由于其与上文各实施例公开的数据去倾斜方法相对应,所以描述的比较简单,相关相似之处请参见上文各实施例中数据去倾斜方法部分的说明即可,此处不再详述。
另外,本申请实施例还公开了一种电子设备,该电子设备可以是但不限于服务器集群中的某一服务器或者某个单独设置的物理机(如个人PC或服务器),在此不做限制。
如图6所示,该电子设备至少包括:
存储器601,用于存放计算机指令集;
其中,计算机指令集具体可通过计算机程序的形式实现。
存储器601可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器602,用于通过执行所述存储器上存放的指令集,实现如上文任一实施例所提供的数据去倾斜方法。
该处理器602可以为中央处理器(Central Processing Unit,CPU),特定应用集成电路(application-specific integrated circuit,ASIC),数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件等。
除此之外,上述的电子设备还可以包括通信接口、通信总线等组成部分。存储器、处理器和通信接口通过通信总线完成相互间的通信。
通信接口用于电子设备与其他设备(如其他PC或服务器等)之间的通信。通信总线可以是外设部件互连标准(Peripheral Component Interconnect,PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,EISA)总线等,该通信总线可以分为地址总线、数据总线、控制总线等。
本实施例中,电子设备中的处理器通过执行存储器中存放的计算机指令集,将数据量相对较大的键对应的数据子集进行了打散处理,将其打散至不同的任务中,最终通过将批量数据的不同键分别对应的不同任务相对均衡地分配至多个计算节点加以执行,实现了基于键所对应数据的数据量为其进行任务配置(如配置为一个任务,或打散到多个任务)及计算资源的适配,换个角度来说,由于将键对应的大数据量的数据进行了打散处理,从而不再存在大数据量的任务,各个计算节点上所分配的任务的处理量也是相对均衡的,从而实现了数据去倾斜,可充分利用设备的资源进行数据计算,降低了批量数据整体任务的计算耗时,避免了因为数据倾斜所造成的单点计算问题。
同时,本申请实施例还公开了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机指令集,计算机指令集被处理器执行时实现如上文任一实施例所提供的数据去倾斜方法。
上述的计算机可读存储介质中存储的指令集在运行时,将数据量相对较大的键对应的数据子集进行了打散处理,将其打散至不同的任务中,最终通过将批量数据的不同键分别对应的不同任务相对均衡地分配至多个计算节点加以执行,实现了基于键所对应数据的数据量为其进行任务配置(如配置为一个任务,或打散到多个任务)及计算资源的适配,换个角度来说,由于将键对应的大数据量的数据进行了打散处理,从而不再存在大数据量的任务,各个计算节点上所分配的任务的处理量也是相对均衡的,从而实现了数据去倾斜,可充分利用设备的资源进行数据计算,降低了批量数据整体任务的计算耗时,避免了因为数据倾斜所造成的单点计算问题。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
为了描述的方便,描述以上系统或装置时以功能分为各种模块或单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
最后,还需要说明的是,在本文中,诸如第一、第二、第三和第四等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种数据去倾斜方法,其特征在于,包括:
获得待处理的批量数据的各个键;
确定所述批量数据的数据集中分别对应于不同键的相应数据子集;
根据键所对应数据子集的数据量、所述数据集的总数据量和为所述数据集设置的任务的总数量,确定需为键对应的数据子集分配的任务数;为各个键对应分配的任务数之和不超过所述总数量;
如果键对应的任务数为1,将键对应的数据子集配置给为键分配的一个任务;如果键对应的任务数大于1,将键对应的数据子集中的各条数据分散到为键分配的相应任务数的不同任务中;
将各个键对应的各个任务分配至多个计算节点;
其中,不同计算节点所分配任务的数量差小于阈值,同一计算节点对应的各条数据串行执行,不同的计算节点并行执行分别分配的任务。
2.根据权利要求1所述的方法,其特征在于,所述根据键所对应数据子集的数据量、所述数据集的总数据量和为所述数据集设置的任务的总数量,确定需为键对应的数据子集分配的任务数,包括:
根据键对应的数据子集的数据量和所述数据集的总数据量,为键确定一相对应的权重;
基于键对应的权重和为所述数据集分配的任务的总数量,确定需为键所对应的数据子集分配的任务数。
4.根据权利要求1所述的方法,其特征在于,如果键对应的任务数大于1,将键对应的数据子集中的各条数据分散到为键分配的相应任务数的不同任务中,包括:
基于取值的数目等同于所述任务数的随机变量,为键对应的所述数据子集中各条数据的所述键添加随机数,得到所述键对应的数目为所述任务数的各个子键,所述子键为所述键与所添加的随机数的组合;
确定每个子键在所述数据子集中分别对应的数据;
将各个子键在所述数据子集中分别对应的数据,一对一配置给为所述键分配的所述任务数的不同任务中。
5.根据权利要求4所述的方法,其特征在于,在将各个键对应的各个任务分配至多个计算节点之后,还包括:
针对对应的任务数大于1的键,对该键的各个任务的任务处理结果进行聚合处理,得到该键对应的任务处理结果;
整合各个键的任务处理结果,得到所述批量数据的数据处理结果。
6.根据权利要求5所述的方法,其特征在于,所述针对对应的任务数大于1的键,对该键的各个任务的任务处理结果进行聚合处理,包括:
将该键的各个任务处理结果中包括的子键中的随机数剥离,使得将各个任务处理结果中包括的各个子键还原为该键;
基于该键对该键的各个任务处理结果进行聚合。
7.一种数据去倾斜装置,其特征在于,包括:
获取单元,用于获得待处理的批量数据的各个键;
第一确定单元,用于确定所述批量数据的数据集中分别对应于不同键的相应数据子集;
第二确定单元,用于根据键所对应数据子集的数据量、所述数据集的总数据量和为所述数据集设置的任务的总数量,确定需为键对应的数据子集分配的任务数;为各个键对应分配的任务数之和不超过所述总数量;
任务数据配置单元,用于在键对应的任务数为1情况下,将键对应的数据子集配置给为键分配的一个任务;在键对应的任务数大于1情况下,将键对应的数据子集中的各条数据分散到为键分配的相应任务数的不同任务中;
任务分配单元,用于将各个键对应的各个任务分配至多个计算节点;
其中,不同资源节点所分配任务的数量差小于阈值,同一计算节点对应的各条数据串行执行,不同的资源节点并行执行分别分配的任务。
8.根据权利要求7所述的装置,其特征在于,所述第二确定单元,具体用于:
根据键对应的数据子集的数据量和所述数据集的总数据量,为键确定一相对应的权重;
基于键对应的权重和为所述数据集分配的任务的总数量,确定需为键所对应的数据子集分配的任务数。
9.一种电子设备,其特征在于,包括:
存储器,用于存放计算机指令集;
处理器,用于通过执行所述存储器上存放的指令集,实现如权利要求1-6任一项所述的数据去倾斜方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机指令集,所述计算机指令集被处理器执行时实现如权利要求1-6任一项所述的数据去倾斜方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010777924.8A CN114064260A (zh) | 2020-08-05 | 2020-08-05 | 数据去倾斜方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010777924.8A CN114064260A (zh) | 2020-08-05 | 2020-08-05 | 数据去倾斜方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114064260A true CN114064260A (zh) | 2022-02-18 |
Family
ID=80232221
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010777924.8A Pending CN114064260A (zh) | 2020-08-05 | 2020-08-05 | 数据去倾斜方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114064260A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114860449A (zh) * | 2022-05-17 | 2022-08-05 | 上海弘玑信息技术有限公司 | 数据处理方法、装置、设备和存储介质 |
CN117009094A (zh) * | 2023-10-07 | 2023-11-07 | 联通在线信息科技有限公司 | 数据倾斜打散方法、装置、电子设备及存储介质 |
-
2020
- 2020-08-05 CN CN202010777924.8A patent/CN114064260A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114860449A (zh) * | 2022-05-17 | 2022-08-05 | 上海弘玑信息技术有限公司 | 数据处理方法、装置、设备和存储介质 |
CN114860449B (zh) * | 2022-05-17 | 2024-04-05 | 上海弘玑信息技术有限公司 | 数据处理方法、装置、设备和存储介质 |
CN117009094A (zh) * | 2023-10-07 | 2023-11-07 | 联通在线信息科技有限公司 | 数据倾斜打散方法、装置、电子设备及存储介质 |
CN117009094B (zh) * | 2023-10-07 | 2024-02-23 | 联通在线信息科技有限公司 | 数据倾斜打散方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10558498B2 (en) | Method for scheduling data flow task and apparatus | |
CN109218355B (zh) | 负载均衡引擎,客户端,分布式计算系统以及负载均衡方法 | |
US6366931B1 (en) | Apparatus for and method of non-linear constraint optimization in storage system configuration | |
US20090313635A1 (en) | System and/or method for balancing allocation of data among reduce processes by reallocation | |
WO2021136137A1 (zh) | 一种资源调度方法、装置及相关设备 | |
US10712958B2 (en) | Elastic storage volume type selection and optimization engine for public cloud environments | |
CN112000467A (zh) | 一种数据倾斜处理方法、装置、终端设备及存储介质 | |
CN113342477B (zh) | 一种容器组部署方法、装置、设备及存储介质 | |
US20130227244A1 (en) | Workload-aware distributed data processing apparatus and method for processing large data based on hardware acceleration | |
US20180314566A1 (en) | Systems for parallel processing of datasets with dynamic skew compensation | |
CN114064260A (zh) | 数据去倾斜方法、装置、电子设备及存储介质 | |
CN111880939A (zh) | 容器动态迁移方法、装置及电子设备 | |
CN107291720B (zh) | 一种实现批量数据处理的方法、系统和计算机集群 | |
JP2014120097A (ja) | 情報処理装置、プログラム、及び、情報処理方法 | |
CN112463390A (zh) | 一种分布式任务调度方法、装置、终端设备及存储介质 | |
CN109032800A (zh) | 一种负载均衡调度方法、负载均衡器、服务器及系统 | |
WO2023196042A1 (en) | Data flow control in distributed computing systems | |
US10606478B2 (en) | High performance hadoop with new generation instances | |
CN114564313A (zh) | 负载调整方法、装置、电子设备及存储介质 | |
CN107395708A (zh) | 一种处理下载请求的方法和装置 | |
CN111158904A (zh) | 一种任务调度方法、装置、服务器及介质 | |
CN116089367A (zh) | 动态分桶方法、装置、电子设备和介质 | |
CN111124681B (zh) | 一种集群负载分配方法及装置 | |
EP3599547B1 (en) | Elastic storage volume type selection and optimization engine for public cloud environments | |
CN112346861A (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 |