分布式数据处理系统数据分区方法及装置与流程

文档序号:13421554阅读:205来源:国知局
分布式数据处理系统数据分区方法及装置与流程

本发明涉及数据处理技术领域,特别涉及一种分布式数据处理系统数据分区方法及装置。



背景技术:

分布式数据处理系统,是指具有多个用于海量数据存储和海量数据分析的数据分区的系统。其因具有高可用性和高可伸缩性,而被越来越广泛的应用。

目前,分布式数据处理系统在获取到待存储或分析的数据时,会根据数据所属的元素的标识,依次为数据进行分区配比,使得不同的元素运行在对应的分区上。比如,通过将元素的标识哈希之后,再取模的方式,确定其对应的分区标识。

但是上述数据分区方式,当不同元素间的数据量发生倾斜时,可能会导致数据分区不合理,系统运行效率低,从而使分布式数据处理系统的资源不能有效利用。



技术实现要素:

本发明旨在至少在一定程度上解决相关技术中的技术问题之一。

本发明第一方面实施例提出了一种分布式数据处理系统数据分区方法,该方法包括:

根据待使用的分区数量及待处理的元素中包含的数据总量,确定第一键值;

在确定第一元素中的数据量与所述第一键值的差值的绝对值,小于或等于第一阈值时,将所述第一元素分配至第一分区;

其中,所述第一元素为所述待处理的元素中包含数据量最多的元素,所述第一分区为所述待使用的分区中的任一分区。

本发明第二方面实施例提出了一种分布式数据处理系统数据分区装置,所述装置包括:

第一确定模块,用于根据待使用的分区数量及待处理的元素中包含的数据总量,确定第一键值;

第一处理模块,用于在确定第一元素中的数据量与所述第一键值的差值的绝对值,小于或等于第一阈值时,将所述第一元素分配至第一分区;

其中,所述第一元素为所述待处理的元素中包含数据量最多的元素,所述第一分区为所述待使用的分区中的任一分区。

本发明第三方面实施例提出了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面所述的分布式数据处理系统数据分区方法。

本发明提供的分布式数据处理系统数据分区方法装置及计算机可读存储介质,首先根据待使用的分区数量及待处理的元素中包含的数据总量,确定第一键值,然后再确定第一元素中的数据量与第一键值的差值的绝对值,小于第一阈值时,将第一元素分配至第一分区。由此,实现了以各分区可平均分配的数据量为依据,将元素进行分区处理,最大限度保证了各分区中资源的有效利用,提高了分布式数据处理系统的处理速度和效率。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。

图1是根据一示例性实施例示出的一种分布式数据处理系统数据分区方法的流程示意图;

图2是根据一示例性实施例示出的另一种分布式数据处理系统数据分区方法的流程示意图;

图3是根据一示例性实施例示出的一种分布式数据处理系统数据分区方法的流程示意图;

图4是根据一示例性实施例示出的一种分布式数据处理系统数据分区方法的应用场景图;

图5是根据一示例性实施例示出的一种分布式数据处理系统数据分区装置的结构框图;

图6是根据一示例性实施例示出的另一种分布式数据处理系统数据分区装置的结构框图。

通过上述附图,已示出本发明明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本发明构思的范围,而是通过参考特定实施例为本领域技术人员说明本发明的概念。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

具体的,本发明各实施例主要针对目前分布式数据处理系统,进行数据分区的方式,在元素间的数据量发生倾斜时,可能会导致数据分区不合理,系统运行效率低的问题,提出一种数据分区方法。通过根据待处理的数据总量及分区数量,进行数据分区,以使每个分区中数据量尽量均衡,从而使资源得到合理有效利用,提高系统的运行效率。

需要说明的是,本申请提供的数据分区方法,适用于多个元素同时被分区时的场景,即分布式数据处理系统同时获取了多个待分区的元素的场景。

下面结合附图,对本发明实施例提供的分布式数据处理系统数据分区方法进行详细说明。

图1是根据一示例性实施例示出的一种分布式数据处理系统数据分区方法的流程示意图。

如图1所示,该分布式数据处理系统数据分区方法,包括以下步骤:

步骤101,根据待使用的分区数量及待处理的元素中包含的数据总量,确定第一键值。

具体的,本发明实施例提供的分布式数据处理系统数据分区方法,可以由本发明实施例提供的分布式数据处理系统数据分区装置执行。其中,该装置可以被配置在任意分布式数据处理系统中,以对该系统中的数据进行分区处理,从而保证该系统中的资源得到合理有效利用,提高系统的运行效率。

其中,待使用的分区,是指分布式数据处理系统为待处理的元素分配的分区。

具体实现时,分布式数据处理系统可以通过多种方式,为待处理的元素分配分区。

示例一

根据预设的规则,为待处理的元素分配分区。

其中,预设的规则,可以根据需要设置。比如,可以为固定值,或者,根据待处理的元素的数量确定分区数量等等,本实施例对此不作限定。

示例二

获取待处理的元素信息,其中,所述待处理的元素信息,包括各个元素中包含的数据量;

根据所述各个元素中包含的数据量及各个分区的工作属性,确定所述待使用的分区数量。

其中,各个分区的工作属性,指各个分区的数据承载量与工作时间或工作效率间的对应关系。

具体的,为了尽量保证分布式数据处理系统中资源得到有效利用,分布式数据处理系统也可以根据待处理的各个元素中包含的数据量及各个分区的工作属性,确定待使用的分区数量。

举例来说,若待处理的元素信息为:a元素中有100个数据、b元素中有120个数据,c元素中有140个数据,且各个分区的工作属性为:负载量小于150个数据时效率最高,负载量大于150时,效率逐渐降低。那么通过计算可知,待处理的元素中共包括360个数据,那么考虑各个分区的资源均能得到有效利用,且处理效率较高的情况,即可确定待使用的分区数量为3个。

进一步的,在确定了待使用的分区数量后,为了保证分布式数据处理系统中的资源可以被合理有效利用,提高分布式数据处理系统的效率,分布式数据处理系统可以根据待处理的元素中包含的数据总量与待使用的分区数量的商,确定第一键值,即第一键值为将待处理的数据总量平均分配时,每个待使用的分区可分配的数据量。

举例来说,若待处理的元素有a、b和c三个,a中包含的数据量为10个,b中包含的数据量为8个,c中包含的数据量为16个,待使用的分区数量为2个,那么第一键值k即可根据下式确定:

步骤102,在确定第一元素中的数据量与所述第一键值的差值的绝对值,小于或等于第一阈值时,将所述第一元素分配至第一分区。

其中,所述第一元素为所述待处理的元素中包含数据量最多的元素,所述第一分区为所述待使用的分区中的任一分区。

具体的,第一阈值的大小,可以根据需要设置。通常情况下,为了保证分布式数据处理系统中的资源可以被有效利用、提高分布式数据处理系统的效率,第一阈值的大小,可以根据分区的负载及对应的处理速度特性确定。比如确定为分区理想负载的5%、8%、10%等等。

举例来说,若分区的理想负载为20,第一阈值为分区理想负载的8%,即第一阈值位1.6。则如上述的例子中,待处理的元素中,包含数据量最多的元素为c元素,其中的数据量为16,与第一键值为17的差值的绝对值为1,小于第一阈值1.6,则可以将元素c分配至2个分区中的任意一个。

或者,为了保证各个分区的数据尽量均衡,第一阈值也可以根据待处理的元素中包含的数据总量确定,比如为数据总量的4%、6%等等。

举例来说,若第一阈值为数据总量的4%,则如上述的例子中,第一键值为17,第一阈值为1.36。通过比较可知,第一元素为c元素,其中包含的数据量为16个,与第一键值的差值的绝对值为1,小于1.36,从而可以将元素c分配至2个分区中的任意一个。

可以理解的是,在将第一元素c分配至任一分区后,元素a和b即可分配至另一个元素。由于元素a和b中的数据量之和为18,与c中的元素数据量16的差值较小。由于是以每个分区平均分得的数据量为依据,将待处理的元素进行的分区处理,从而保证了两个分区分配的数据量较均衡,从而保证了各个分区的资源可以得到有效利用,提高了分布式数据处理系统的处理速度和效率。

需要说明的是,第一元素的获取也可以采用多种方式。

举例来说,根据待处理各元素包含的数据量,将待处理的各元素按照包含的数据量由多至少的方式进行排序。

举例来说,若待处理的元素a中包含的数据量为110,b元素中包含的数据量为150,c元素中包含的数据量为80,那么根据各元素包含的数据量,将元素排序后的元素序列为:b、a、c,即排序后的序列中第一个元素即为第一元素。

或者,依次比较待处理各元素包含的数据量,确定包含数据量最多的第一元素。

举例来说,若待处理的元素a中包含的数据量为110,b元素中包含的数据量为150,c元素中包含的数据量为80。那么依次比较各元素包含的数据量,a中的小于b中的,然后再比较b元素和c元素,即可确定b元素为第一元素。

本发明实施例提供的分布式数据处理系统数据分区方法,首先根据待使用的分区数量及待处理的元素中包含的数据总量,确定第一键值,然后再确定第一元素中的数据量与第一键值的差值的绝对值,小于第一阈值时,将第一元素分配至第一分区。由此,实现了以各分区可平均分配的数据量为依据,将元素进行分区处理,最大限度保证了各分区中资源的有效利用,提高了分布式数据处理系统的处理速度和效率。

通过上述分析可知,当第一元素中包含的数据量与第一键值的差值的绝对值小于或等于第一阈值时,可以将第一元素直接分配至第一分区,从而最大限度的保证第一分区中资源的有效利用,提高第一分区的处理速度和效率。但是在一种可能的实现形式中,若待处理元素中任一元素中包含的数据量都远小于第一键值,那么为了保证第一分区的资源可以得到有效利用,可能需要将多个元素同时分配至第一分区。下面结合图2,对上述情况进行进一步说明。

图2是根据一示例性实施例示出的另一种分布式数据处理系统数据分区方法的流程示意图。

如图2所示,该方法,包括:

步骤201,获取待处理的元素信息,其中,所述待处理的元素信息,包括各个元素中包含的数据量。

步骤202,根据所述各个元素中包含的数据量及各个分区的工作属性,确定所述待使用的分区数量。

可以理解的是,由于在将各元素进行分区时,还需要确定各个元素具体分配至那个分区。因此,分布式数据处理系统在确定待使用的分区数量时,也需要确定出待使用的分区的标识,以便根据各分区的标识,将不同的元素分配至不同分区中。

步骤203,根据待使用的分区数量及待处理的元素中包含的数据总量,确定第一键值。

步骤204,判断所述第一元素中的数据量与所述第一键值的差值的绝对值,是否小于或等于所述第一阈值,若是,则执行步骤205,否则执行步骤206。

步骤205,将所述第一元素分配至第一分区。

具体的,上述步骤201-步骤205的具体实现过程及原理,可参照上述实施例的详细描述,此处不再赘述。

步骤206,根据预设的规则,从所述待处理元素中获取至少一个第二元素,以使所述第一元素与所述第二元素的数据量之和,与所述第一键值的差值的绝对值,小于或等于所述第一阈值。

具体的,为了保证第一分区中的资源可能得到有效的利用,本实施例中,在确定第一元素中的数据量小于第一键值,且与第一键值的差值的绝对值大于第一阈值时,需要从待处理元素中再选取一个或多个第二元素,使选取的第二元素中包含的数据量与第一元素中包含的数据量的和接近第一键值。

举例来说,若待处理的元素包括a、b、c、d、e、f、g、h、i和j,各个元素中包含的数据量大小分别为:9、1、2、2、2、1、1、8、1和2,需要分配到3个分区中,第一阈值为0.5。

那么第一键值待处理的元素中第一元素为a,其中包含的数据量为9,与第一键值的差值的绝对值为0.67,大于第一阈值。因此,为了保证各分区中资源可以被有效利用,则可以从剩余元素中选取至少一个第二元素。

比如选取元素b,那么元素a和元素b的数据量之和为10,与第一键值9.67的差值的绝对值为0.33,小于0.5,因此可以选取元素b作为第二元素。

或者,若选取元素c,则元素a和元素c的数据量之和为11,与第一键值9.67的差值的绝对值为1.33,大于0.5,因此不可以选取元素c作为第二元素。

需要说明的是,上述第二元素的选取,仅是示意性说明,分布式数据处理系统可以根据需要,选取数据量满足要求的任意元素。比如可以优先选取与第一元素的来源相同的元素作为第二元素,或者,可以优先选取与第一元素的数据类型相同的元素作为第二元素等等,本实施例对此不作限定。

在一种较优的实现形式中,为了减小分布式数据处理系统选取第二元素时的处理负担,本实施例中可以通过以下方式获取第二元素:

依次将所说待处理元素中选取包含数据量最少的元素,加入第二元素。

具体的,与上述确定第一元素时的一种方式相同,将待处理的元素按照包含的数据量,由多至少的顺序依次排序后,即可从排序后的序列中,由后至前,依次选取元素,加入第二元素。

可以理解的是,若选取了一个第二元素后,第二元素的数据量与第一元素的数据量之和与第一键值的差的绝对值,已经满足小于或等于第一阈值的要求,那么就无需再继续选取其他的元素加入第二元素了。

举例来说,若待处理的元素包括a、b、c、d、e、f、g、h、i和j,各个元素中包含的数据量大小分别为:8、1、2、3、3、1、1、7、1和2,需要分配到3个分区中,第一阈值为0.5。

那么第一键值待处理的元素中第一元素为a,其中包含的数据量为8,与第一键值的差值的绝对值为1.67,大于第一阈值。因此,为了保证各分区中资源可以被有效利用,则可以从剩余元素中选取至少一个第二元素。

由于将各元素按照数据量由多至少进行排序后,得到的元素序列为:a、h、d、e、c、j、b、f、g、i。那么即可首先选取元素i,加入第二元素。那么元素a和元素i中的数据量之和为9,与第一键值9.67的差值的绝对值为0.67,大于0.5,因此,需要继续将剩余元素中包含数据量最少的元素g,加入第二元素。此时,元素a、i和g中的数据量之和为10,与第一键值9.67的差值的绝对值为0.33,小于0.5。因此,可确定第二元素包括元素g和元素i。

需要说明的是,通过上述方式确定第二元素时,可能出现第二元素中包括n个元素时,所有元素的数据量小于第一键值,且与第一键值的差值的绝对值大于第一阈值;而当第二元素中包括n+1个元素时,所有元素的数据量大于第一键值,且与第一键值的差值的绝对值仍大于第一阈值。此时,为了尽量保证各分区的处理速度和效率,可以将n+1个元素中的某一元素去掉后,再重新判断剩余的n个元素包含的数据量是否满足要求。

举例来说,若待处理的元素包括a、b、c、d、e和f,各个元素中包含的数据量大小分别为:8、5、7、5、4和2,需要分配到2个分区中,第一阈值为0.5。

那么第一键值待处理的元素中第一元素为a,其中包含的数据量为8,与第一键值的差值的绝对值为7.5,大于第一阈值。因此,为了保证各分区中资源可以被有效利用,则可以从剩余元素中选取至少一个第二元素。

由于各个元素按照数据量由多至少的顺序排序后的序列为:a、c、b、d、e、f,因此,首先将元素f加入第二元素。此时,元素a和元素f中的数据量之和为10,其与第一键值的差值的绝对值为5.5,大于第一阈值0.5,因此,继续将元素e加入第二元素,则元素a、f和e的数据量之和为14,与第一键值的差值的绝对值为1.5,大于第一阈值0.5,因此,继续将元素d,加入第二元素。此时,元素a、f、e和d的数据量之和为19,与第一键值的差值的绝对值为3.5,大于第一阈值0.5,仍不满足要求。

通过上述过程可知,第二元素仅包括e和f时,第一元素与第二元素的数据量之和,小于第一键值;而当第二元素包括e、f和d时,第一元素与第二元素的数据量之和,大于第一键值。因此,可将第二元素中e和f中的某一元素去掉,再判断第二元素和第一元素中的数据量是否满足要求。

比如,若去掉元素f,那么第二元素为e和d,则第二元素与第一元素中的数据量之和为17,与第一键值的差值的绝对值为1.5,仍大于第一阈值0.5,即此方案不可行。那么即可去掉元素e,即第二元素中包括元素f和d,此时第二元素和第一元素中的数据之和为15,与第一键值的差值的绝对值为0.5,等于第一阈值。由此,可确定,第二元素包括元素f和d。

需要说明的是,若待处理的元素中有至少两个元素包含相同数量的数据,那么对所有待处理的元素按照数据量的多少进行排序时,这两个元素的先后顺序可以根据需要任意设置。相应的,在根据数据量选取第二元素时,包含相同数据量的元素也可以根据需要优先选择任意一个。本实施例对此不作限定。

或者,本实施例中还可以通过以下方式,确定第二元素:

根据所述绝对值及剩余待处理元素中各元素包含的数据量,选取至少一个第二元素;

其中,第二元素中包含的数据量与所述绝对值的差值的绝对值,小于或等于所述第一阈值。

具体的,若第一元素中包含的数据量与第一键值的差值的绝对值,大于第一阈值,那么也可以直接根据绝对值的大小,直接从剩余的元素中选取数据量合适的元素作为第二元素。

举例来说,举例来说,若待处理的元素包括a、b、c、d、e和f,各个元素中包含的数据量大小分别为:8、5、7、5、4和2,需要分配到2个分区中,第一阈值为0.5。

那么第一键值待处理的元素中第一元素为a,其中包含的数据量为8,与第一键值的差值的绝对值为7.5,大于第一阈值。因此,为了保证各分区中资源可以被有效利用,则可以从剩余元素中选取至少一个第二元素。

此时,通过比较可知,剩余元素中,元素c中包含数据量为7,其与上述确定的绝对值7.5的差值的绝对值为0.5,等于第一阈值。因此,可以确定第二元素为元素c。

需要说明的是,按照上述方式选取的第二元素可能有多种组合形式。比如,上述例子中,也可以选取元素b和f作为第二元素,元素b和f中的数据量之合为7,与上述第一元素与第一键值的差值的绝对值的差值为0.5,等于第一阈值,也满足要求。本实施例中,可以选取任一形式的第二元素,或者,也可以根据第一元素中的数据属性,比如来源、类型等,选择与第一元素的数据属性相近的元素作为第二元素,本实施例对此不作限定。

步骤207,将所述第一元素及所述至少一个第二元素,分配至所述第一分区。

可以理解的是,本实施例中在将第一元素及第二元素分配至第一分区后,还可以采用与上述方式相同的过程,将其他的元素依次分配至其它分区。即该方法,还包括:

步骤208,确定剩余待处理的元素中包含的剩余数据总量及剩余的分区数量。

步骤209,根据所述剩余数据总量及剩余的分区数量,确定第二键值,返回所述步骤204.

具体的,可以在确定第三元素中的数据量与所述第二键值的差值的绝对值,小于或等于所述第一阈值时,将所述第三元素分配至第二分区,其中,所述第三元素为所述剩余待处理的元素中包含数据量最多的元素,所述第二分区为剩余分区中的任一分区。

或者,确定第三元素中的数据量与第二键值的差值的绝对值,大于第一阈值时,从剩余的待处理元素中获取第四元素,其中,第四元素与第三元素中的数据量之和与第二键值的差值的绝对值,小于或等于第二键值。依次类推,即可完成将待处理的元素的分区处理。

举例来说,若待处理的元素包括a、b、c、d、e、f、g、h、i和j,各个元素中包含的数据量大小分别为:8、1、2、3、3、1、1、7、1和2,需要分配到3个分区中,第一阈值为0.5。

那么第一键值待处理的元素中第一元素为a,其中包含的数据量为8,与第一键值的差值的绝对值为1.67,大于第一阈值。因此,为了保证各分区中资源可以被有效利用,则可以从剩余元素中选取至少一个第二元素。

由于第一元素与第一键值的差值的绝对值为1.67,那么可以从剩余的元素中选取包含数据量在(1.67-0.5)-(1.67+0.5)之间的元素,即选取包含数据量在1.17-2.17之间的元素,通过比较可知,元素c和j均符合。因此,若确定第二元素为c。

那么剩余的待处理的元素中包含的剩余数据总量为:1+3+3+1+1+7+1+2=19,剩余的分区数量为2,则第二键值

此时,剩余元素中第三元素为h,其中的数据量为7,与第二键值的差值的绝对值为2.5,大于第一阈值。那么根据第三元素中数据量与第二键值的差值的绝对值,可确定要选取的第四元素需要包含的数据量为2-3个,那么通过比较可知,元素d、e和j,都可以满足要求。

若将元素d确定为第四元素。那么剩余的元素中包含的数据总量即为:1+3+1+1+1+2=9,与第二键值9.5的差值的绝对值为0.5,也满足要求。从而即可把元素h和d分给第二分区,将其它的剩余元素分给第三分区。

通过上述分析可知,通过以各分区平均分配的数据量为依据,为各元素分配分区,从而可最大程度的保证各个分区中分得的数据量较均衡,从而保证了各分区资源的有效利用。

本发明实施例提供的分布式数据处理系统数据分区方法,在获取了待处理的元素后,首先根据待处理的元素中包含的数据总量,确定待使用的分区数量,然后根据待处理的数据总量及分区数量,确定各个分区平均获取的第一键值,在确定第一元素中的数据量与第一键值的差值,小于或等于第一阈值时,将第一元素分配至第一分区,然后再根据剩余元素包含的数据总量及剩余的分区数量,确定第二键值,然后再确定第三元素中的数据量与第二键值的差值,小于或等于第一阈值时,将第三元素分配至第二分区,依次类推,直至将所有元素分配完毕。由此,实现了以待使用的分区可平均分配的数据量为依据,将元素进行分区处理,最大限度保证了各分区中资源的有效利用,提高了分布式数据处理系统的处理速度和效率。

通过上述分析可知,分布式数据处理系统在获取到待处理的元素后,可以按照预设的规则,确定待使用的分区数量,比如根据待处理元素中包含的数据总量及各分区的工作属性,为待处理的元素分配一定数量的分区,之后再根据各个分区可分得的数据均值,确定第一键值,然后在确定第一元素中包含的数据量与第一键值的差值的绝对值,小于第一阈值时,将第一元素分配至第一分区。在一种可能的实现场景中,若待处理的元素中,各个元素分别包含的数据量差异较大,即各个元素间数据发生倾斜时,此时若按上述方式进行分区,就无法保证各个分区的负载均衡,下面结和图3对上述情况下的数据分区方法进行进一步说明。

图3是根据一示例性实施例示出的一种分布式数据处理系统数据分区方法的流程示意图。

如图3所示,该方法,包括:

步骤301,获取待处理的元素信息,其中,所述待处理的元素信息,包括各个元素中包含的数据量。

步骤302,根据所述各个元素中包含的数据量及各个分区的工作属性,确定所述待使用的分区数量。

步骤303,根据待使用的分区数量及待处理的元素中包含的数据总量,确定第一键值。

步骤304,判断所述第一元素中的数据量与所述第一键值的差值的绝对值,是否小于或等于所述第一阈值,若是,则执行步骤305,否则执行步骤306。

步骤305,将所述第一元素分配至第一分区。

步骤306,判断所述第一元素中的数据量与所述第一键值的差值,是否大于第二阈值,若是,则执行步骤307,否则执行步骤308。

步骤307,将所述第一元素中的数据分配至至少两个分区。

其中,第二阈值的大小,也可以根据需要确定。比如,根据待处理数据总量确定,比如为待处理数据总量的50%;或者根据分区的工作属性确定,比如,确定为分区负载量的5%、10%等等。

举例来说,若待处理的元素包括a、b、c、d、e、f、g、h、i和j,各个元素中包含的数据量大小分别为:100、1、2、2、2、1、1、8、1和2,需要分配到3个分区中,第一阈值为0.5。

那么第一键值待处理的元素中第一元素为a,其中包含的数据量为100,与第一键值的差值的绝对值为60,远远大于第一阈值。

若各分区的额定负载为60,第二阈值为额定负载的10%,即第二阈值为6。那么通过比较可知,第一元素中数据量与第一键值的差值的绝对值大于第二阈值。此时,若将第一元素仅分配至一个分区,就会出现该分区负载过大,降低了该分区的运行速度及效率,因此,可以将该第一元素分配至至少两个分区。

具体的,可以根据第一元素中数据量与分区的工作属性,确定将第一元素具体分配至几个分区。

举例来说,上述例子中,若各个分区的额定负载量为60,那么即可将第一元素分配至2个分区。若各个分区的额定负载量为40,那么为保证各个分区的处理速度和效率,则需要将第一元素分配至3个分区。

可以理解的是,由于其它各剩余元素中包含的数据量较少,可将其它的元素分配至当前负载并未达到满载的分区。比如,将第一元素中的40个数据分配至了第一分区,另40个数据分配至了第二分区,其余的20个元素分配至了第三分区,那么剩余的其它元素b、c、d、e、f、g、h、i和j中的数据,则可以都分配至第三分区,从而保证各个分区均处于满载状态,即具有相同的处理速度和效率。

另外,需要说明的是,由于将同一元素中的数据分配至了不同的分区,而同一元素中的数据的处理结果与该元素中的所有数据相关。因此,本申请实施例中,若将同一元素分配至了至少两个分区,还可以根据需要,将与该元素关联的至少两个分区进行关联,以使该至少两个分区可以协同完成对该元素的处理。

步骤308,根据预设的规则,从所述待处理元素中获取至少一个第二元素,以使所述第一元素与所述第二元素的数据量之和,与所述第一键值的差值的绝对值,小于或等于所述第一阈值。

步骤309,将所述第一元素及至少一个第二元素,分配至第一分区。

之后,分布式数据处理系统即可采用上述相同的方式,对剩余的其它元素进行分区处理。

本发明实施例提供的分布式数据处理系统数据分区方法,在获取了待处理的元素后,首先根据待处理的元素中包含的数据总量,确定待使用的分区数量,然后根据待处理的数据总量及分区数量,确定各个分区平均获取的第一键值,在确定第一元素中的数据量与第一键值的差值,大于第一阈值、且大于第二阈值时,将第一元素分配至至少两个分区;或者在第一元素中的数据量与第一键值的差值,大于第一阈值,且小于第二阈值时,从剩余元素中获取至少一个第二元素,将第二元素及第一元素分配至第一分区;或者,在第一元素中的数据量与第一键值的差值,小于或等于第一阈值时,将第一元素分配至第一分区,然后再根据剩余元素包含的数据总量及剩余的分区数量,确定第二键值,然后再确定第三元素中的数据量与第二键值的差值,小于或等于第一阈值时,将第三元素分配至第二分区,依次类推,直至将所有元素分配完毕。由此,实现了以各分区可平均分配的数据量为依据,将元素进行分区处理,在保证各个分区的处理速度和效率的同时,最大限度保证了各分区中资源的有效利用,提高了分布式数据处理系统的处理速度和效率。

为了对本申请提供的分布式数据处理系统数据分区方法进行更加直观的说明,下面以图4为例,结合具体的硬件场景,对本申请提供的分布式数据处理系统数据分区方法进行进一步说明。

图4是根据一示例性实施例示出的一种分布式数据处理系统数据分区方法的应用场景图。

如图4所示,若分布式数据处理系统中共包括n+1台计算机,其中前n台计算机作为数据分区使用,用于处理具体元素数据;第n+1台计算机,用于对进入该分布式数据处理系统中的元素进行分区处理,第n+1台计算机中包括用于对进入该系统的元素进行分区处理的处理器及用于存储分区工作属性及当前其它n台计算机的使用状态的存储器。那么本实施例提供的分布式数据处理系统数据分区方法包括:

1、第n+1台计算机中的处理器从云端获取待处理的元素信息。

比如,元素信息包括,a(10)、b(6)、c(5)。

具体的,该待处理的元素信息,可以是从云端获得的(如图4所示),也可以是由用户输入的,或者还可以是从其它的网络侧服务器同步得到的,本实施例对此不作限定。

2、处理器从存储器处获取各分区(其它n台计算机)的使用状态及工作属性。

3、根据各分区的工作属性及待处理的元素信息,确定待使用的分区信息。

比如,若各个分区的工作属性为,各分区的最大负载为11,且第一阈值为分区最大负载的10%,即第一阈值为1.1。那么处理器即可确定待使用的分区数量为2,比如确定待使用的分区为分区i和分区i+1。

4、确定第一键值。

具体的,第一键值k1=(10+6+5)/2=10.5。

5、将第一元素a分配至分区i。

具体的,将各元素按照数据量由多至少的顺序排列后,可确定包含数据量最多的元素为a,其中的数据量为10,与第一键值的差值的绝对值为0.5,小于第一阈值1.1,因此,第一元素a可直接分配至分区i。

6、将元素b和c分配至分区i+1。

由于元素b和c中的数据总量为6+5=11,其与第一键值10.5的差值的绝对值为0.5,也小于第一阈值1.1。因此,通过上述数据分配方式,可以实现各个分区中数据较均衡,从而保证了各个分区的资源可以得到有效利用,提高了数据处理速度和效率。

可以理解的是,处理器在确定了各元素对应的分区后,还可以将各元素与分区的对应关系,比如a→分区i,(b、c)→分区i+1,发送给存储器。以使存储器记录该对应关系,并根据该关系,确认当前分区i和分区i+1处于占用状态,从而当处理器再次获取到新元素时,以根据当前各分区的占用状态,为新的元素分配未占用的分区。

需要说明的是,为了实现各分区资源的有效利用,在待处理的元素数量较少时,本申请实施例中,还可以首先确定所有元素分到不同分区中的情况对应的排列组合,然后再计算各种排列组合下,各个分区间负载的方差,选取分区间负载方差最小的分区情况进行分区,从而保证各个分区间的负载尽量均衡,以保证数据的处理速度和效率。

举例来说,若待处理的元素为a(10)、b(6)、c(5),待使用的分区为l和m,那么将元素进行不同分区分配对应的组合方式有:a→l、(b、c)→m;(a、b)→l、c→m;(a、c)→l、b→m。

其中,第一种分区方式中,两个分区中数量的差值为1,而第二种分区方式中,两个分区中数据量的差值为11,第三种分区方式中,两个分区中的数据量的差值为9。通过比较可知,第一种分区方式对应的两个分区中负载的方差最小,因此,可采用第一种方式进行数据分区。

通过上述分析可知,当待分区的元素较多、且待使用的分区较多时,将各种分区方式的组合都排列出来后,再选取最优组合的方式,处理过程较长,也会使得数据分区的处理时间较长。因此,在具体使用时,可优先采用上述其它各实施例中的数据分区方法对待处理的元素进行数据分区。

下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明方法实施例。

图5是根据一示例性实施例示出的一种分布式数据处理系统数据分区装置的结构框图。

如图5所示,该分布式数据处理系统数据分区装置可以包括:

第一确定模块51,用于根据待使用的分区数量及待处理的元素中包含的数据总量,确定第一键值;

第一处理模块52,用于在确定第一元素中的数据量与所述第一键值的差值的绝对值,小于或等于第一阈值时,将所述第一元素分配至第一分区;

其中,所述第一元素为所述待处理的元素中包含数据量最多的元素,所述第一分区为所述待使用的分区中的任一分区。

具体的,本发明实施例提供的分布式数据处理系统数据分区装置,可以用来执行本发明实施例提供的分布式数据处理系统数据分区方法,其中,该装置可以被配置在任意分布式数据处理系统中,以对该进入该系统的元素进行分区处理。

可选地,如图5所示,该装置,还包括:

获取模块53,用于获取待处理的元素信息,其中,所述待处理的元素信息,包括各个元素中包含的数据量;

第二确定模块54,用于根据所述各个元素中包含的数据量及各个分区的工作属性,确定所述待使用的分区数量。

需要说明的是,前述对分布式数据处理系统数据分区方法实施例的解释说明也适用于该实施例的分布式数据处理系统数据分区装置,此处不再赘述。

本发明实施例提供的分布式数据处理系统数据分区装置,首先根据待使用的分区数量及待处理的元素中包含的数据总量,确定第一键值,然后再确定第一元素中的数据量与第一键值的差值的绝对值,小于第一阈值时,将第一元素分配至第一分区。由此,实现了以各分区可平均分配的数据量为依据,将元素进行分区处理,最大限度保证了各分区中资源的有效利用,提高了分布式数据处理系统的处理速度和效率。

图6是根据一示例性实施例示出的另一种分布式数据处理系统数据分区装置的结构框图。

如图6所示,在图5所示的基础上,该装置,还包括:第二处理模块61。

其中,第二处理模块61,用于在确定所述第一元素中的数据量与所述第一键值的差值的绝对值,大于所述第一阈值时,根据预设的规则,从所述待处理元素中获取至少一个第二元素,以使所述第一元素与所述第二元素的数据量之和,与所述第一键值的差值的绝对值,小于或等于所述第一阈值;

将所述第一元素及所述至少一个第二元素,分配至所述第一分区。

具体的,上述第二处理模块61,具体用于:

依次将所说待处理元素中选取包含数据量最少的元素,加入第二元素;

或者,

根据所述绝对值及剩余待处理元素中各元素包含的数据量,选取至少一个第二元素;

其中,第二元素中包含的数据量与所述绝对值的差值的绝对值,小于或等于所述第一阈值。

进一步的,上述装置,还包括:

第三确定模块62,用于确定剩余待处理的元素中包含的剩余数据总量及剩余的分区数量;

所述第三确定模块62,还用于根据所述剩余数据总量及剩余的分区数量,确定第二键值;

相应的,所述第一处理模块52,还用于在确定第三元素中的数据量与所述第二键值的差值的绝对值,小于或等于所述第一阈值时,将所述第三元素分配至第二分区,其中所述第三元素为所述剩余待处理的元素中包含数据量最多的元素,所述第二分区为剩余分区中的任一分区。

进一步的,在本申请一种可能的实现形式中,当所述第一元素中的数据量与所述第一键值的差值大于第二阈值时,所述第一处理模块52,还用于:

所述第一元素中的数据分配至至少两个分区。

需要说明的是,前述对分布式数据处理系统数据分区方法实施例的解释说明也适用于该实施例的分布式数据处理系统数据分区装置,此处不再赘述。

本发明实施例提供的分布式数据处理系统数据分区装置,在获取了待处理的元素后,首先根据待处理的元素中包含的数据总量,确定待使用的分区数量,然后根据待处理的数据总量及分区数量,确定各个分区平均获取的第一键值,在确定第一元素中的数据量与第一键值的差值,小于或等于第一阈值时,将第一元素分配至第一分区,然后再根据剩余元素包含的数据总量及剩余的分区数量,确定第二键值,然后再确定第三元素中的数据量与第二键值的差值,小于或等于第一阈值时,将第三元素分配至第二分区,依次类推,直至将所有元素分配完毕。由此,实现了以待使用的分区可平均分配的数据量为依据,将元素进行分区处理,最大限度保证了各分区中资源的有效利用,提高了分布式数据处理系统的处理速度和效率。

基于上述各实施例提供的分布式数据处理系统数据处理方法,本申请实施例再提供一种计算机可读存储介质,其上存储有计算机程序,当该程序被处理器执行时实现如上述任一实施例所述的分布式数据处理系统数据处理方法。

本领域技术人员在考虑说明书及实践这里发明的发明后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未发明的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。

应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

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