发明内容
本发明的实施例提供一种分布式并行任务处理的方法、装置及系统,能够解决现有技术中的分布式并行任务处理系统的复杂度较高,分布式并行任务处理的速度较慢的问题。
第一方面,本发明实施例提供一种分布式并行任务处理的方法,包括:
接收待处理的数据;
将所述待处理的数据切分为多个数据分片;
将所述多个数据分片分别分配给多个处理节点进行处理;
接收各个处理节点处理后的子结果数据;
将所述子结果数据进行合并,形成结果数据。
第二方面,本发明实施例提供一种分布式并行任务处理的方法,包括:
接收控制节点发送的数据分片;其中,所述数据分片是所述控制节点切分待处理的数据而得,所述待处理的数据未被分组和排序;
将所述数据分片中的数据进行处理,形成子结果数据;
将所述子结果数据发送给所述控制节点。
第三方面,本发明实施例提供一种控制节点,包括:
接收单元,用于接收待处理的数据;
切分单元,用于将所述接收单元接收的所述待处理的数据切分为多个数据分片;
分配单元,用于将所述多个数据分片分别分配给多个处理节点进行处理;
所述接收单元,还用于接收各个处理节点处理后的子结果数据;
合并单元,用于将所述接收单元接收的所述子结果数据进行合并,形成结果数据。
第四方面,本发明实施例提供一种处理节点,包括:
接收单元,用于接收控制节点发送的数据分片;其中,所述数据分片是所述控制节点切分待处理的数据而得,所述待处理的数据未被分组和排序;
处理单元,用于将接收单元接收的所述数据分片中的数据进行处理,形成子结果数据;
发送单元,用于将所述处理单元形成的子结果数据发送给所述控制节点。
第五方面,本发明实施例提供一种分布式并行任务处理的系统,包括控制节点和多个处理节点,其中,
所述控制节点,用于接收待处理的数据,将所述待处理的数据切分为多个数据分片,将所述多个数据分片分别分配给多个处理节点进行处理;
所述处理节点,用于接收所述控制节点发送的数据分片,将所述数据分片中的数据进行处理,形成子结果数据,并将所述子结果数据发送给所述控制节点;
所述控制节点,还用于接收各个处理节点处理后的子结果数据,将所述子结果数据进行合并,形成结果数据。
本发明提供的分布式并行任务处理的方法、装置及系统,控制节点接收待处理的数据,将所述待处理的数据切分为多个数据分片,将所述多个数据分片分别分配给多个处理节点进行处理,并接收各个处理节点处理后的子结果数据,将所述子结果数据进行合并,形成结果数据。而在现有技术中,控制节点在接收到待处理的数据,需要先对待处理的数据进行分组和排序,在一些不需要数据分组排序的场景下,现有技术的方式增加了整个分布式并行任务处理系统的复杂度,使得分布式并行任务处理的速度较慢。而本发明提供的分布式并行任务处理的方式无需对待处理的数据进行分组和排序,能够降低整个分布式并行任务处理系统的复杂度,可以提升分布式并行任务处理的速度。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为使本发明技术方案的优点更加清楚,下面结合附图和实施例对本发明作详细说明。
如图1所示,本发明实施例提供的分布式并行任务处理的方法,从控制节点侧进行阐述,所述方法包括:
101、接收待处理的数据。
在分布式并行任务中,所述待处理的数据的数据量一般较大,数据量的大小一般在1万亿字节(Terabyte,简称TB)以上,但不仅局限于此。
102、将所述待处理的数据切分为多个数据分片。
其中,所述待处理的数据可以按照所述处理节点的数量进行切分为数据分片,所述数据分片的数量与所述处理节点的数量相同,且各个数据分片存储的数据的大小可以相同,但不仅局限于此。
103、将所述多个数据分片分别分配给多个处理节点进行处理。
将所述多个数据分片分别分配给多个处理节点进行处理可以是按照各个处理节点的负载信息来分配,在每次分配时将多个数据分片中的一个数据分片分配给负载最低的处理节点;另外,还可以将所述多个数据分片中的一个数据分片随机分配给一个未获取到数据分片的处理节点,但不仅局限于此,将所述多个数据分片分别分配给多个处理节点进行处理还可以有其他多种方式,此处不再一一列举。
104、接收各个处理节点处理后的子结果数据。
其中,所述子结果数据是所述处理节点处理后形成的,所述处理节点可以对其获取到的数据分片进行逐行读取并处理,每行的数据之间独立无关,使得在处理节点上进行的运算逻辑能够在多行数据上同时执行。
105、将所述子结果数据进行合并,形成结果数据。
其中,所述控制节点可以将各个处理节点返回的子结果数据进行合并,形成结果数据。所述结果数据可以存储数据库等,以供后续的数据分析应用。
本发明实施例提供的分布式并行任务处理的方法,控制节点接收待处理的数据,将所述待处理的数据切分为多个数据分片,将所述多个数据分片分别分配给多个处理节点进行处理,并接收各个处理节点处理后的子结果数据,将所述子结果数据进行合并,形成结果数据。而在现有技术中,控制节点在接收到待处理的数据,需要先对待处理的数据进行分组和排序,在一些不需要数据分组排序的场景下,现有技术的方式增加了整个分布式并行任务处理系统的复杂度,使得分布式并行任务处理的速度较慢。而本发明提供的分布式并行任务处理的方式无需对待处理的数据进行分组和排序,能够降低整个分布式并行任务处理系统的复杂度,提升了分布式并行任务处理的速度。
与控制节点对应的另一侧为处理节点侧,如图2所示,本发明实施例提供的分布式并行任务处理的方法,从处理节点侧进行阐述,包括:
201、接收控制节点发送的数据分片。
所述数据分片的来源是控制节点接收到的待处理的数据。所述待处理的数据未经过控制节点的分组和排序,直接被所述控制节点进行切分而形成了所述数据分片。
202、将所述数据分片中的数据进行处理,形成子结果数据。
所述处理节点可以对其获取到的数据分片进行逐行读取并处理,每行的数据之间独立无关,使得在处理节点上进行的运算逻辑能够在多行数据上同时执行。
203、将所述子结果数据发送给所述控制节点。
上述步骤203的目的是在各个处理节点处理数据分片后的子结果数据均到达控制节点后,由所述控制节点进行合并,形成结果数据。
本发明实施例提供的分布式并行任务处理的方法,处理节点接收数据分片,其中,所述数据分片是所述控制节点切分待处理的数据而得,所述待处理的数据未被分组和排序,所述处理节点对数据分片进行处理形成子结果数据,再将子结果数据发送给所述控制节点。而在现有技术中,控制节点在接收到待处理的数据,需要先对待处理的数据进行分组和排序,在一些不需要数据分组排序的场景下,现有技术的方式增加了整个分布式并行任务处理系统的复杂度,使得分布式并行任务处理的速度较慢。而本发明提供的分布式并行任务处理的方式无需对待处理的数据进行分组和排序,能够降低整个分布式并行任务处理系统的复杂度,可以提升分布式并行任务处理的速度。
下面针对图1或图2所示的方法进行详细说明及进一步扩展:
如图3所示,本发明又一实施例提供的分布式并行任务处理的方法,包括:
301、控制节点接收待处理的数据。
在分布式并行任务中,所述待处理的数据的数据量一般较大,数据量的大小一般在1万亿字节(Terabyte,简称TB)以上,但不仅局限于此。例如,所述待处理的数据可以是某应用程序在一天内的登陆信息,所述登陆信息中包括该应用程序下的账户的上线时间,下线时间等,但不仅局限于此。
302、所述控制节点根据所述处理节点的数量,将所述待处理的数据切分为多个数据分片。在步骤302之后,可以执行步骤303或者步骤304。
其中,所述待处理的数据可以按照所述处理节点的数量进行切分为数据分片,所述数据分片的数量与所述处理节点的数量相同,且各个数据分片存储的数据的大小可以相同,但不仅局限于此。
303、控制节点将所述多个数据分片中的一个数据分片随机分配给一个未获取到数据分片的处理节点,直到多个数据分片分配完毕。之后,继续执行步骤308。
为了保证每个处理节点的负载不会过大,需要对所述数据分片进行合理分配,具体可以对数据分片进行随机分配,并在处理节点已经接受到数据分片后,将不会再次接受到该待处理数据的数据分片。
304、处理节点将其自身的负载信息发送给控制节点。之后执行步骤305-306。
同样的,为了能够合理分配所述数据分片,还可以根据各个处理节点的负载的大小来进行分配。所述负载信息中即携带有处理节点处的负载。
305、控制节点根据接收到的各个处理节点的负载信息,根据所述负载信息确定负载最低的处理节点。
具体的,在所述控制节点获取到各个处理节点的负载信息后,由于所述负载信息中携带有处理节点的负载,因此能够获知到负载最低的处理节点。
306、控制节点将所述多个数据分片中的一个数据分片分配给所述负载最低的处理节点。继续执行步骤307。
这样,在多个数据分片中的每个数据分片进行分配时,均能够分配给负载最低的处理节点,使得数据分片的分配较为均衡,保证了处理节点的负载均衡。
307、控制节点判断所述多个数据分片是否分配完毕。若所述数据分片分配完毕,执行步骤308,否则返回执行步骤304。
308、处理节点对所述数据分片中的多行数据进行逐行处理,形成子结果数据。
所述处理节点可以对其获取到的数据分片进行逐行读取并处理,每行的数据之间独立无关,使得在处理节点上进行的运算逻辑能够在多行数据上同时执行。
以上述的待处理的数据是某应用程序在一天内的登陆信息为例,若需要筛选出某一时刻的在线账户,则所述登陆信息可以被所述控制节点切分为数据分片,由各个处理节点继续处理,根据登陆信息中的各个账户的上线时间和下线时间,筛选出在某一时刻在线的账户。由于多个处理节点同时进行筛选,筛选出某一时刻的在线账户的速度也较快。
309、处理节点将所述子结果数据发送给所述控制节点。
310、控制节点将所述子结果数据进行合并,形成结果数据。
值得说明的是,本发明实施例中的控制节点和处理节点均可以是计算机等具有运算能力的电子设备。
本发明又一实施例提供的分布式并行任务处理的方法,控制节点接收待处理的数据,将所述待处理的数据切分为多个数据分片,并将所述多个数据分片分别分配给多个处理节点进行处理,并接收各个处理节点处理后的子结果数据,并将所述子结果数据进行合并,形成结果数据。而在现有技术中,控制节点在接收到待处理的数据,需要先对待处理的数据进行分组和排序,在一些不需要数据分组排序的场景下,现有技术的方式增加了整个分布式并行任务处理系统的复杂度,使得分布式并行任务处理的速度较慢。而本发明提供的分布式并行任务处理的方式无需对待处理的数据进行分组和排序,能够降低整个分布式并行任务处理系统的复杂度,可以提升分布式并行任务处理的速度。
参考上述图1及图3所示的方法的实现,如图4所示,本发明实施例提供的控制节点,包括:
接收单元41,用于接收待处理的数据。
切分单元42,用于将所述接收单元41接收的所述待处理的数据切分为多个数据分片。
分配单元43,用于将所述多个数据分片分别分配给多个处理节点进行处理。
所述接收单元41,还用于接收各个处理节点处理后的子结果数据。
合并单元44,用于将所述接收单元41接收的所述子结果数据进行合并,形成结果数据。
具体的,如图5所示,所述切分单元42,用于:
根据所述处理节点的数量,将所述接收单元41接收的所述待处理的数据切分为多个数据分片。
其中,所述数据分片的数量与所述处理节点的数量相同。
进一步的,如图5所示,所述分配单元43,还用于:
将所述切分单元42切分后的所述多个数据分片中的一个数据分片随机分配给一个未获取到数据分片的处理节点。
进一步的,如图5所示,所述控制节点还包括:确定单元45。
所述接收单元41,还用于接收各处理节点的负载信息。
所述确定单元45,用于根据所述接收单元41接收的负载信息,确定负载最低的处理节点。
所述分配单元43,还用于将所述切分单元42切分后的多个数据分片中的一个数据分片分配给所述负载最低的处理节点。
值得说明的是,本发明实施例提供的控制节点的具体实现方式可以参见图3中的分布式并行任务处理的方法的具体实现方式,此处不再赘述。所述控制节点可以是计算机等具有运算能力的电子设备。
本发明实施例提供的控制节点,控制节点接收待处理的数据,将所述待处理的数据切分为多个数据分片,并将所述多个数据分片分别分配给多个处理节点进行处理,并接收各个处理节点处理后的子结果数据,并将所述子结果数据进行合并,形成结果数据。而在现有技术中,控制节点在接收到待处理的数据,需要先对待处理的数据进行分组和排序,在一些不需要数据分组排序的场景下,现有技术的方式增加了整个分布式并行任务处理系统的复杂度,使得分布式并行任务处理的速度较慢。而本发明提供的分布式并行任务处理的方式无需对待处理的数据进行分组和排序,能够降低整个分布式并行任务处理系统的复杂度,可以提升分布式并行任务处理的速度。
参考上述图2及图3所示的方法的实现,如图6所示,本发明实施例提供的处理节点,包括:
接收单元51,用于接收控制节点发送的数据分片。
其中,所述数据分片是所述控制节点切分待处理的数据而得,所述待处理的数据未被分组和排序。
处理单元52,用于将接收单元51接收的所述数据分片中的数据进行处理,形成子结果数据。
发送单元53,用于将所述处理单元52形成的子结果数据发送给所述控制节点。
值得说明的是,所述数据分片包括多行数据。
如图6所示,所述处理单元52,具体用于:
对所述数据分片中的多行数据进行逐行处理。
具体的,如图6所示,所述发送单元53,还用于:
向所述控制节点发送负载信息。其中,所述负载信息携带有处理节点的负载。
值得说明的是,本发明实施例提供的处理节点的具体实现方式可以参见图3中的分布式并行任务处理的方法的具体实现方式,此处不再赘述。所述处理节点可以是计算机等具有运算能力的电子设备。
本发明实施例提供的处理节点,处理节点接收数据分片,其中,所述数据分片是所述控制节点切分待处理的数据而得,所述待处理的数据未被分组和排序,所述处理节点对数据分片进行处理形成子结果数据,再将子结果数据发送给所述控制节点。而在现有技术中,控制节点在接收到待处理的数据,需要先对待处理的数据进行分组和排序,在一些不需要数据分组排序的场景下,现有技术的方式增加了整个分布式并行任务处理系统的复杂度,使得分布式并行任务处理的速度较慢。而本发明提供的分布式并行任务处理的方式无需对待处理的数据进行分组和排序,能够降低整个分布式并行任务处理系统的复杂度,可以提升分布式并行任务处理的速度。
如图7所示,本发明实施例提供的分布式并行任务处理的系统,包括控制节点61和多个处理节点62,其中,
所述控制节点61,用于接收待处理的数据,将所述待处理的数据切分为多个数据分片,将所述多个数据分片分别分配给多个处理节点62进行处理;
所述处理节点62,用于接收所述控制节点61发送的数据分片,将所述数据分片中的数据进行处理,形成子结果数据,并将所述子结果数据发送给所述控制节点61;
所述控制节点61,还用于接收各个处理节点62处理后的子结果数据,将所述子结果数据进行合并,形成结果数据。
值得说明的是,本发明实施例提供的分布式并行任务处理的系统的具体实现方式可以参见图3中的分布式并行任务处理的方法的具体实现方式,此处不再赘述。
本发明实施例提供的分布式并行任务处理的系统,控制节点接收待处理的数据,将所述待处理的数据切分为多个数据分片,并将所述多个数据分片分别分配给多个处理节点进行处理,并接收各个处理节点处理后的子结果数据,并将所述子结果数据进行合并,形成结果数据。而在现有技术中,控制节点在接收到待处理的数据,需要先对待处理的数据进行分组和排序,在一些不需要数据分组排序的场景下,现有技术的方式增加了整个分布式并行任务处理系统的复杂度,使得分布式并行任务处理的速度较慢。而本发明提供的分布式并行任务处理的方式无需对待处理的数据进行分组和排序,能够降低整个分布式并行任务处理系统的复杂度,可以提升分布式并行任务处理的速度。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。