中间数据传输方法及系统、分布式系统与流程

文档序号:11479702阅读:315来源:国知局
中间数据传输方法及系统、分布式系统与流程

本发明涉及通信领域,尤其涉及一种中间数据传输方法及系统、分布式系统。



背景技术:

在分布式系统中,用户任务通常可以被分解为几级不同的子任务。这些子任务之间存在依赖关系,一些子任务的输出结果会作为另一些子任务的输入数据。这就涉及到了子任务之间的数据传递,这些在子任务之间传递的数据称为中间数据。

目前,在相关技术中,中间数据的传输是通过分布式存储系统来完成的,其过程是:产生中间数据的上级子任务通过分布式存储系统的接口将中间数据以文件的形式写到分布式存储系统的磁盘上;需要将该中间数据作为输入数据的下级子任务从分布式存储系统的磁盘中读取该中间数据,以做进一步处理。

以最常见的mapreduce任务为例。mapreduce任务可以被分解为maptask和reducetask这两级子任务。当通过mapreduce任务完成数据排序时,maptask可以在不同的机器上同时启动若干个进程,每个进程分别读取一部分输入数据,并对这部分数据进行排序,然后将排序的结果输出。这些输出数据会作为reducetask的输入,做进一步排序,以达到全局有序。这一过程中,在maptask和reducetask这两级子任务之间传递的数据是排序过程中产生的中间计算结果,是不需要被呈现给用户的。

图1为相关技术中maptask和reducetask之间的中间数据传输过程示意图。如图1所示,相关技术中,maptask和reducetask之间的中间数据传输过程如下:

maptask输出中间数据,通过分布式存储系统的用户接口将中间数据以文件形式写入分布式存储系统,分布式存储系统将中间数据存储到一个 或多个存储节点中,即将这些中间数据持久化到一台或多台机器的磁盘上;

reducetask通过分布式存储系统的用户接口,从存储中间数据的存储节点中读取中间数据。

相关技术中,分布式系统的中间数据传输存在如下问题:

1、中间数据传输需要经过磁盘的读写来实现,而传统机械硬盘的平均读写速率只能达到100mb/s左右。因此,这种中间数据传输方式严重受到磁盘io(输入输出)速率的影响,传输速率低,导致用户任务执行效率低下。

2、分布式存储系统中可能会出现单个存储节点不可用的情况,为了保证数据不会丢失,分布式存储系统通常会为一个文件生成多份拷贝,并存放到不同的存储节点上,这一过程造成了同样的数据会在网络中进行多次传输,占用网络带宽。



技术实现要素:

本发明的目的在于提供一种中间数据传输方法及系统、分布式系统,提高分布式系统的中间数据传输速率。

为实现上述目的,本发明提出了一种中间数据传输方法,用于分布式系统,所述分布式系统的用户任务包括多级子任务,所述子任务中产生中间数据的子任务称为上级子任务,所述子任务中依赖所述中间数据进行处理的子任务称为下级子任务,所述方法包括:

确定所述上级子任务本次要传输的中间数据,记为待传数据;

从所述下级子任务的用于监听数据的网络端口中选择需要接收所述待传数据的网络端口,记为接收端口;

将所述待传数据通过网络直接传输给所述接收端口。

本发明实施例中的中间数据传输方法,中间数据的传输不需要经过分布式存储系统,避免了磁盘io速率对中间数据传输速率的影响,提高了中间数据传输速率。

为实现上述目的,本发明还提出了一种中间数据传输系统,用于分布式系统,所述分布式系统的用户任务包括多级子任务,所述子任务中产生 中间数据的子任务称为上级子任务,所述子任务中依赖所述中间数据进行处理的子任务称为下级子任务,所述中间数据传输系统包括:

确定模块,用于确定所述上级子任务本次要传输的中间数据,记为待传数据;

选择模块,用于从所述下级子任务的用于监听数据的网络端口中选择需要接收所述待传数据的网络端口,记为接收端口;

传输模块,用于将所述确定模块确定的待传数据通过网络直接传输给所述选择模块选择的接收端口。

本发明实施例中的中间数据传输系统,中间数据的传输不需要经过分布式存储系统,避免了磁盘io速率对中间数据传输速率的影响,提高了中间数据传输速率。

为实现上述目的,本发明还提出了一种分布式系统,包括前述任一项所述的中间数据传输系统。

本发明实施例中的分布式系统,中间数据的传输不需要经过分布式存储系统,避免了磁盘io速率对中间数据传输速率的影响,提高了中间数据传输速率。

附图说明

图1为相关技术中maptask和reducetask之间的中间数据传输过程示意图。

图2为本发明实施例一中中间数据传输方法的流程图。

图3为根据图2所示的中间数据传输方法进行传输时maptask和reducetask之间的中间数据传输过程示意图之一。

图4为根据图2所示的中间数据传输方法进行传输时maptask和reducetask之间的中间数据传输过程示意图之二。

图5为本发明实施例二中中间数据传输方法的流程图。

图6为本发明实施例三中中间数据传输方法的流程图。

图7为本发明实施例四中中间数据传输方法的流程图。

图8为本发明实施例五中中间数据传输系统的结构框图。

图9为本发明实施例六中中间数据传输系统的结构框图。

图10为本发明实施例七中中间数据传输系统的传输模块的结构框图。

图11为本发明实施例八中中间数据传输系统的传输模块的结构框图。

图12为本发明实施例九中分布式系统的结构框图。

具体实施方式

以下结合附图对本发明的原理和特征进行描述,所举实施例只用于解释本发明,并非用于限定本发明的范围。对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,根据本发明精神所获得的所有实施例,都属于本发明的保护范围。

需要说明的是,本发明各实施例中的中间数据传输方法和中间数据传输系统均用于分布式系统,该分布式系统的用户任务包括多级子任务,其中,将这些子任务中产生中间数据的子任务称为上级子任务,将这些子任务中依赖中间数据进行处理的子任务称为下级子任务。上级子任务和下级子任务是相对而言的。例如,在具有多级子任务的用户任务中,一个子任务对于子任务a来说是下级子任务,但对于子任务b来说是却可能是下级子任务。

其中,用户任务可以是mapreduce任务、dag(directedacyclicgraph,有向无环图)任务等。

图2为本发明实施例一中中间数据传输方法的流程图。如图2所示,本实施例中,中间数据传输方法可以包括如下步骤:

步骤s201,确定上级子任务本次要传输的中间数据,记为待传数据;

在上级子任务有多个进程的情况下,上级子任务本次要传输的中间数据(也即待传数据)可以是上级子任务的一个进程产生的中间数据,也可以是上级子任务的多个或全部进程产生的中间数据。

步骤s202从下级子任务的用于监听数据的网络端口中选择需要接收待传数据的网络端口,记为接收端口;

下级子任务用于监听数据的网络端口用来接收上级子任务发送的待传数据。

下级子任务可以根据需要设置网络端口。比如,下级子任务可以为每个进程分别设置一个网络端口,也可以为所有进程设置一个或多个共同网 络端口。

步骤s203,将待传数据通过网络直接传输给接收端口。

也就是说,将待传数据由上级子任务所在的网络通过网络直接传输到下任务所在的网络,中间不再像背景技术中提到的相关技术那样经过分布式存储系统的写入和读取过程。

以mapreduce任务为例。mapreduce任务的两级子任务maptask和reducetask之间的中间数据传输过程如图3所示。

在此基础上,用户可以根据需要制定具体的传输策略。

例如,传输策略之一可以是:为上级子任务的每个进程分别设置一个第一网络端口,为下级子任务的每个进程分别设置一个第二网络端口,将待传数据由产生待传数据的一个或多个进程对应的第一网络端口分别传输到所有的第二网络端口。也即,将中间数据由产生中间数据的进程直接发送给下级子任务的所有进程。仍以mapreduce任务为例。按照此传输策略,mapreduce任务的两级子任务maptask和reducetask之间的中间数据传递过程如图4所示。

传输策略之二可以是:为上级子任务的所有进程设置一个或多个第一共同网络端口,为下级子任务的所有进程设置一个或多个第二共同网络端口,将上级子任务的各个进程产生的中间数据由第一共同网络端口通过网络直接传输到第二共同网络端口,第二共同网络端口再将中间数据分发给下级子任务的各个进程。

本发明实施例中的中间数据传输方法,将分布式系统中的中间数据由产生该中间数据的上级子任务通过网络直接传输给下级子任务,中间不需要经过分布式存储系统,避免了磁盘io速率对中间数据传输速率的影响,提高了中间数据传输速率。

图5为本发明实施例二中中间数据传输方法的流程图。如图5所示,本实施例中,中间数据传输方法可以包括如下步骤:

步骤s501,启动下级子任务,使下级子任务的用于监听数据的网络端口处于监听状态;

由于本发明实施例中,中间数据是由上级子任务通过网络直接传输给下级子任务的,因此在启动上级子任务产生中间数据前,下级子任务应处 于能够接收中间数据的状态。也就是说,下级子任务应当先于上级子任务启动,这样才能保证下级子任务能够接收到上级子任务产生的中间数据。

步骤s502,将下级子任务的用于监听数据的网络端口的信息通知给上级子任务;

网络端口的信息一般可以包括ip地址等。上级子任务可以根据下级子任务的用于监听数据的网络端口的信息确定中间数据的目的地址。

在具体应用中,下级子任务可以将网络端口的信息先上报给调度器,调度器再将下级子任务的用于监听数据的网络端口信息发送给上级子任务。

步骤s503,在下级子任务启动之后启动上级子任务,产生中间数据;

在下级子任务启动后,下级子任务的用于监听数据的网络端口已经处于监听状态的情况下,再启动上级子任务。即先启动下级子任务启动,后启动上级子任务。

步骤s504,确定上级子任务本次要传输的中间数据,记为待传数据;

步骤s505从下级子任务的用于监听数据的网络端口中选择需要接收待传数据的网络端口,记为接收端口;

步骤s506,将待传数据通过网络直接传输给接收端口。

本发明实施例中的中间数据传输方法,将分布式系统中的中间数据由产生该中间数据的上级子任务通过网络直接传输给下级子任务,中间不需要经过分布式存储系统,避免了磁盘io速率对中间数据传输速率的影响,提高了中间数据传输速率。再者,本发明实施例中的中间数据传输方法,下级子任务先于上级子任务启动,以保证下级子任务能够接收到上级子任务产生的中间数据。

图6为本发明实施例三中中间数据传输方法的流程图。如图6所示,本实施例中,中间数据传输方法可以包括如下步骤:

步骤s601,确定上级子任务的单个进程本次要传输的中间数据,记为待传数据,其中,上级子任务的每个进程对应一个第一网络端口;

本实施例中,以进程为单位进行中间数据的发送。上级子任务的每个进程各自确定自己要传输的中间数据,然后将各自将自己要传输的中间数据通过网络传输给下级子任务的所有进程。

步骤s602,下级子任务的每个进程对应一个第二网络端口,将所有第二网络端口均选为待传数据的接收端口;

在本实施例中,上、下级子任务的每个进程都分别对应一个网络端口。上级子任务的进程对应的第一网络端口为中间数据的发送端口,下级子任务的进程对应的第二网络端口为中间数据的接收端口。相应地,将上级子任务的进程称为发送进程,将下级子任务的进程称为接收进程。中间数据由发送端口通过网络直接传输到接收端口。该传输方式例如前述图4所示的中间数据传输方式。

步骤s603,将待传数据由发送进程对应的第一网络端口通过网络直接传输给所有第二网络端口,其中,发送进程为产生待传数据的进程。

由上述步骤可见,本实施例中,中间数据由发送进程通过网络直接传输到接收进程,不必经由上级子任务收集各个发送进程产生的中间数据统一发送,也不必经由下级子任务统一接收中间数据后再分别发给各个接收进程,因此可以进一步提高中间数据传输速率。不仅如此,接收进程可以在接收到中间数据后立即进行处理,而不必等到所有发送进程产生完中间数据并传输到接收进程后才能进行处理,因此,中间数据由发送进程通过网络直接传输到接收进程,还可以让接收进程在发送进程仍在产生中间数据的时候就能够对已经传输到接收进程的一部分中间数据先进行处理,也就是说,接收进程和发送进程可以并行运行,这显著提高了上下级子任务之间的并行执行能力,缩短了用户任务整体的运行时间。

由于通过网络传输数据本身会有一定的延时,如果发送进程每次只发送少量数据,那么发送数据的次数就会变多,这样由于网络传输产生的overhead(间接成本)就会很大。另一方面,如果发送进程每次发送的数据量都较大,当需要接收进程比较多时,就会导致发送进程使用的内存很高。为了解决发送进程何时发送中间数据的问题,在本发明其他实施例中,在步骤s603之前,也即在将待传数据由发送进程对应的第一网络端口通过网络直接传输给所有第二网络端口之前,还可以包括如下步骤:

判断待传数据是否大于或等于msgsize,msgsize表示发送进程每次传输中的发送数据长度;

在待传数据大于或等于msgsize的情况下,启动待传数据的传输,并 确定待传数据的发送数据长度为msgsize;

其中,msgsize=max(min(buffsize,maxmsgsize*n),minmsgsize*n)/n,

buffsize表示预设的发送进程的可用内存上限,maxmsgsize表示预设的发送进程在一次发送中传输的最大数据长度,minmsgsize表示预设的发送进程在一次发送中传输的最小数据长度,n表示第二网络端口的数量,“*”表示乘以运算,“/”表示除以运算。n的含义是接收进程的数量,在本实施例中,接收进程的数量等于接收端口的数量,也等于第二网络端口的数量,因此,接收进程的数量就是第二网络端口的数量。

上述步骤根据用户任务的规模(指接收进程的数量)及每个发送进程可用的内存大小计算发送进程每次传输中的发送数据长度,实现动态调节,这样就可以避免由于每次发送数据过少导致的间接成本过高的问题以及每次发送数据过大导致的内存需求过高的问题。

待传数据通常是以消息的形式发送的。在本发明实施例中,承载待传数据的消息中可以携带第一进程标识和消息编号,其中,第一进程标识用于表明该消息的发送进程,消息编号用于表明该消息是该发送进程发送的第几条消息。也就是说,第一进程标识用于说明消息是由“谁”发送的问题,消息编号是单调递增的,它用于说明该消息在发送进程发送的所有消息中所处的位置问题或者说序号问题。

接收进程可以根据承载待传数据的消息中携带的第一进程标识和消息编号判断是否已经接收到该消息,以便根据具体情况处理该消息。

第二网络端口对应的进程可以记录当前已经从发送进程收到的最大消息编号,如果接收到的消息携带的消息编号大于该最大消息编号,说明接收进程第一次接收该消息,如果接收到的消息携带的消息编号小于或等于该最大消息编号,说明接收进程已经收到过该消息。

据此,在本发明实施例中,在将待传数据由发送进程对应的第一网络端口通过网络直接传输给所有第二网络端口之后,还可以包括:

第二网络端口接收到承载待传数据的消息后,在该消息携带的消息编号大于第二网络端口对应的进程记录的当前已经从该发送进程收到的最大消息编号的情况下,第二网络端口对应的进程保存该待传数据,并将记录的最大消息编号更新为该消息携带的消息编号。

或者,在本发明实施例中,在将待传数据由发送进程对应的第一网络端口通过网络直接传输给所有第二网络端口之后,还可以包括:第二网络端口接收到承载待传数据的消息后,在该消息携带的消息编号小于或等于第二网络端口对应的进程记录的当前已经从该发送进程收到的最大消息编号的情况下,第二网络端口对应的进程丢弃该消息,并维持记录的最大消息编号不变。

本发明实施例中的中间数据传输方法,将分布式系统中的中间数据由产生该中间数据的上级子任务通过网络直接传输给下级子任务,中间不需要经过分布式存储系统,避免了磁盘io速率对中间数据传输速率的影响,提高了中间数据传输速率。而且,本发明实施例的中间数据传输系统,还显著提高了上下级子任务之间的并行执行能力,缩短了用户任务整体的运行时间。

在中间数据采用图6所示实施例中的由发送进程直接传输到接收进程的传输方式的情况下,可以采用超时重发机制应对可能出现的消息丢失(即发送进程发送的中间数据无法到达接收进程)现象。该超时重发机制的具体内容可以是,发送进程向接收进程发送中间数据后,如果接收进程接收到该中间数据,就向发送进程返回应答响应,告知发送进程该接收进程已经接收到其发送的中间数据;发送进程接收到应答响应后,就可以向返回应答响应的接收进程发送下一次的中间数据了。如果发送进程向接收进程发送中间数据后,接收进程没有接收到该中间数据,就不会向发送进程返回应答响应。发送进程在设定的时限内没有接收到应答响应,就认为没有返回应答响应的接收进程没有接收到该中间数据,因此会向没有返回应答响应的接收进程重发本次传输的中间数据,而不会向没有返回应答响应的接收进程发送下一次的中间数据,直到发送进程接收到该接收进程返回的应答响应为止。这样,既可以保证接收进程能够接收到中间数据,又可以使同样的中间数据不会在网络中进行多次传输,因此能够节约网络带宽。

据此,本发明的中间数据传输方法可以采用图7所示的流程。

图7为本发明实施例四中中间数据传输方法的流程图。如图7所示,本实施例中,中间数据传输方法可以包括如下步骤:

步骤s701,确定上级子任务的单个进程本次要传输的中间数据,记为待传数据,其中,上级子任务的每个进程对应一个第一网络端口;

步骤s702,下级子任务的每个进程对应一个第二网络端口,将所有第二网络端口均选为待传数据的接收端口;

步骤s703,将待传数据由发送进程对应的第一网络端口通过网络直接传输给所有第二网络端口,其中,发送进程为产生待传数据的进程;

步骤s704,在传输之后,判断在设定时间内发送进程是否接收到第二网络端口对应的进程返回的应答响应,如果在设定时间内发送进程接收到第二网络端口对应的进程返回的应答响应,则执行步骤s705,否则执行步骤s706;

为了区分应答响应来自于哪一个接收进程,应答响应中可以携带第二进程标识,该第二进程标识用于表明发出该应答响应的接收进程,发送进程根据第二进程标识判断发出该应答响应的接收进程。

步骤s705,允许发送进程通过网络向返回应答响应的进程传输下一次的数据;

步骤s706,发送进程再次将待传数据通过网络直接传输给未返回应答响应的一个或多个第二网络端口,返回步骤s704。

本发明实施例中的中间数据传输方法,将分布式系统中的中间数据由产生该中间数据的上级子任务通过网络直接传输给下级子任务,中间不需要经过分布式存储系统,避免了磁盘io速率对中间数据传输速率的影响,提高了中间数据传输速率。而且,本发明实施例的中间数据传输系统,还显著提高了上下级子任务之间的并行执行能力,缩短了用户任务整体的运行时间。同时,在本发明实施例中,同样的中间数据不会在网络中进行多次传输,因此本发明实施例的中间数据传输系统,还能够节约网络带宽。

本发明还提出了中间数据传输系统,用以实施上述各实施例的中间数据传输方法。上述对中间数据传输方法的说明均适用于中间数据传输系统的相应部分。下面本发明各实施例中的中间数据传输系统都用于分布式系统,该分布式系统的用户任务包括多级子任务,这些子任务中产生中间数据的子任务称为上级子任务,这些子任务中依赖中间数据进行处理的子任务称为下级子任务。

图8为本发明实施例五中中间数据传输系统的结构框图。如图8所示,本实施例中,中间数据传输系统800可以包括确定模块810、选择模块820和传输模块830。其中,确定模块810用于确定上级子任务本次要传输的中间数据,记为待传数据。选择模块820用于从下级子任务的用于监听数据的网络端口中选择需要接收待传数据的网络端口,记为接收端口。传输模块830用于将确定模块810确定的待传数据通过网络直接传输给选择模块820选择的接收端口。

其中,在上级子任务有多个进程的情况下,确定模块810所确定的待传数据可以是上级子任务的一个进程产生的中间数据,也可以是上级子任务的多个或全部进程产生的中间数据。

其中,选择模块820选择的接收端口可以是下级子任务的单个进程对应的网络端口,也可以为下级子任务的所有进程对应的一个或多个共同网络端口。

其中,传输模块830可以使用用户根据需要制定的具体传输策略将待传数据通过网络直接传输给接收端口。例如前述本发明实施例一中列举的传输策略。

本发明实施例中的中间数据传输系统,将分布式系统中的中间数据由产生该中间数据的上级子任务通过网络直接传输给下级子任务,中间不需要经过分布式存储系统,避免了磁盘io速率对中间数据传输速率的影响,提高了中间数据传输速率。

图9为本发明实施例六中中间数据传输系统的结构框图。如图9所示,本实施例中,中间数据传输系统可以包括第一启动模块910、通知模块920、第二启动模块930确定模块940、选择模块950和传输模块960。其中,第一启动模块910用于启动下级子任务,使下级子任务的用于监听数据的网络端口处于监听状态。通知模块920与第一启动模块910相连,用于将下级子任务的用于监听数据的网络端口的信息通知给上级子任务。第二启动模块930分别与通知模块920和确定模块940相连,用于在下级子任务启动之后启动上级子任务,产生中间数据。确定模块940用于确定上级子任务本次要传输的中间数据,记为待传数据。选择模块950用于从下级子任务的用于监听数据的网络端口中选择需要接收待传数据的网络端口,记 为接收端口。传输模块960用于将确定模块940确定的待传数据通过网络直接传输给选择模块950选择的接收端口。

本发明实施例中的中间数据传输系统,将分布式系统中的中间数据由产生该中间数据的上级子任务通过网络直接传输给下级子任务,中间不需要经过分布式存储系统,避免了磁盘io速率对中间数据传输速率的影响,提高了中间数据传输速率。再者,本发明实施例中的中间数据传输系统,下级子任务先于上级子任务启动,以保证下级子任务能够接收到上级子任务产生的中间数据。

图10为本发明实施例七中中间数据传输系统的传输模块的结构框图。如图10所示,本实施例中,中间数据传输系统的传输模块1000可以包括进程间传输单元1010。进程间传输单元1010用于在待传数据由上级子任务的单个进程产生,上级子任务的每个进程对应一个第一网络端口,下级子任务的每个进程对应一个第二网络端口,所有第二网络端口均为接收端口的情况下,将待传数据由发送进程对应的第一网络端口通过网络直接传输给所有第二网络端口,其中,发送进程指产生待传数据的进程。

本实施例中,中间数据由发送进程通过网络直接传输到接收进程,不必经由上级子任务收集各个发送进程产生的中间数据统一发送,也不必经由下级子任务统一接收中间数据后再分别发给各个接收进程,因此可以进一步提高中间数据传输速率。不仅如此,接收进程可以在接收到中间数据后立即进行处理,而不必等到所有发送进程产生完中间数据并传输到接收进程后才能进行处理,因此,中间数据由发送进程通过网络直接传输到接收进程,还可以让接收进程在发送进程仍在产生中间数据的时候就能够对已经传输到接收进程的一部分中间数据先进行处理,也就是说,接收进程和发送进程可以并行运行,这显著提高了上下级子任务之间的并行执行能力,缩短了用户任务整体的运行时间。

在图10所示实施例的基础上,传输模块1000还可以进一步包括判断单元和启动单元。其中,判断单元用于判断待传数据是否大于或等于msgsize,msgsize表示发送进程每次传输中的发送数据长度。启动单元用于在判断单元的判断结果为待传数据大于或等于msgsize的情况下,启动进程间传输单元1010进行待传数据的传输,并确定待传数据的发送数据 长度为msgsize。其中,msgsize=max(min(buffsize,maxmsgsize*n),minmsgsize*n)/n,buffsize表示预设的发送进程的可用内存上限,maxmsgsize表示预设的发送进程在一次发送中传输的最大数据长度,minmsgsize表示预设的发送进程在一次发送中传输的最小数据长度,n表示第二网络端口的数量,“*”表示乘以运算,“/”表示除以运算。

上述判断单元和启动单元根据用户任务的规模(指接收进程的数量)及每个发送进程可用的内存大小计算发送进程每次传输中的发送数据长度,实现动态调节,这样就可以避免由于每次发送数据过少导致的间接成本过高的问题以及每次发送数据过大导致的内存需求过高的问题。

在本发明实施例中,承载待传数据的消息中可以携带第一进程标识和消息编号,其中,第一进程标识用于表明该消息的发送进程,消息编号用于表明该消息是该发送进程发送的第几条消息。

接收进程可以根据承载待传数据的消息中携带的第一进程标识和消息编号判断是否已经接收到该消息,以便根据具体情况处理该消息。

第二网络端口对应的进程可以记录当前已经从发送进程收到的最大消息编号,如果接收到的消息携带的消息编号大于该最大消息编号,说明接收进程第一次接收该消息,如果接收到的消息携带的消息编号小于或等于该最大消息编号,说明接收进程已经收到过该消息。

据此,在本发明实施例中,传输模块1000可以包括保存单元。保存单元用于在第二网络端口接收到承载待传数据的消息后,在该消息携带的消息编号大于第二网络端口对应的进程记录的当前已经从该发送进程(指发出待传数据的进程)收到的最大消息编号的情况下,令第二网络端口对应的进程保存待传数据,并将记录的最大消息编号更新为该消息携带的消息编号。

在本发明实施例中,传输模块1000还可以包括丢弃单元。丢弃单元用于在第二网络端口接收到承载待传数据的消息后,在消息携带的消息编号小于或等于第二网络端口对应的进程记录的当前已经从发送进程(指发出待传数据的进程)收到的最大消息编号的情况下,令第二网络端口对应的进程丢弃该消息,并维持记录的最大消息编号不变。

本发明实施例中的中间数据传输系统,将分布式系统中的中间数据由 产生该中间数据的上级子任务通过网络直接传输给下级子任务,中间不需要经过分布式存储系统,避免了磁盘io速率对中间数据传输速率的影响,提高了中间数据传输速率。而且,本发明实施例的中间数据传输系统,还显著提高了上下级子任务之间的并行执行能力,缩短了用户任务整体的运行时间。

在中间数据采用图10所示实施例中的进程间传输单元进行传输的情况下,传输模块可以采用超时重发机制应对可能出现的消息丢失(即发送进程发送的中间数据无法到达接收进程)现象。

据此,中间数据传输系统的传输模块可以采用如图11所示的结构。图11为本发明实施例八中中间数据传输系统的传输模块的结构框图。如图11所示,本实施例中,传输模块1100可以包括进程间传输单元1110、响应接收单元1120。其中,进程间传输单元1110同前述的进程间传输单元1000的功能相同,此处不再赘述。响应接收单元1120用于在进程间传输单元1110进行传输之后,令发送进程接收第二网络端口对应的进程返回的应答响应,该应答响应用于表示第二网络端口对应的进程已经接收到待传数据。

参见图11,传输模块1110还可以包括许可单元1130。许可单元1130用于在响应接收单元1120接收到应答响应后,允许发送进程通过网络向返回应答响应的进程传输下一次的数据。

参见图11,传输模块1110还可以包括重传单元1140。重传单元1140用于在进程间传输单元1110进行传输之后,在设定时间内响应接收单元1120未接收到一个或多个第二网络端口对应的进程返回的应答响应的情况下,令发送进程再次将待传数据通过网络直接传输给未返回应答响应的一个或多个第二网络端口。

为了区分应答响应来自于哪一个接收进程,应答响应中可以携带第二进程标识,该第二进程标识用于表明发出该应答响应的接收进程,发送进程根据第二进程标识判断发出该应答响应的接收进程。

本发明实施例中的中间数据传输系统,将分布式系统中的中间数据由产生该中间数据的上级子任务通过网络直接传输给下级子任务,中间不需要经过分布式存储系统,避免了磁盘io速率对中间数据传输速率的影响, 提高了中间数据传输速率。而且,本发明实施例的中间数据传输系统,还显著提高了上下级子任务之间的并行执行能力,缩短了用户任务整体的运行时间。同时,在本发明实施例中,同样的中间数据不会在网络中进行多次传输,因此本发明实施例的中间数据传输系统还能够节约网络带宽。

图12为本发明实施例九中分布式系统的结构框图。如图12所示,本实施例中,分布式系统1200可以包括中间数据传输系统。该中间数据传输系统可以是本发明前述实施例中的任一种中间数据传输系统。

本发明实施例中的分布式系统中包括中间数据传输系统,将分布式系统中的中间数据由产生该中间数据的上级子任务通过网络直接传输给下级子任务,中间不需要经过分布式存储系统,避免了磁盘io速率对中间数据传输速率的影响,提高了中间数据传输速率。而且,本发明实施例的分布式系统,还能够显著提高上下级子任务之间的并行执行能力,缩短用户任务整体的运行时间。同时,在本发明实施例中,同样的中间数据不会在网络中进行多次传输,因此本发明实施例的分布式系统还能够节约网络带宽。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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