一种分布式并行计算方法以及系统
技术领域
本申请涉及计算机信息技术领域,尤指一种分布式并行计算方法以及系统。
背景技术
目前,单台计算机已经无法高效地执行海量数据处理、复杂算法等等计算,为了提高计算效率,通常的做法是将多台计算机集群在一起进行分布式并行计算。
Hadoop是目前非常著名的开源分布式并行计算框架,实现了谷歌(Google)提出的映射(map)/简化(reduce)计算模型,同时包含一个分布式文件系统(HDFS)来提供并行计算支持。map/reduce计算模型在对原始数据执行计算时,首先将原始数据以行为单位进行拆分,生成键(Key)/值(Value)对,所有Key/Value对都保存在HDFS中,然后将具有相同Key的Key/Value对合并得到最终计算结果,这种计算模型的适用范围非常有限,仅仅适用于原始数据能够以行为单位进行拆分和合并的应用场景,对于很多复杂、灵活的分布式计算场景却无能为力。
事实上,Hadoop并不是为了提供能够快捷、灵活地应用于各种计算场景的并行计算框架,它的map/reduce更倾向于提供数据查询的方式,能够适用的应用场景非常有限,而目前尚未有能够灵活、快捷地应用于各种应用场景的分布式并行计算方法。
发明内容
本申请实施例提供一种分布式并行计算方法以及系统,用以实现能够灵活、快捷地应用于各种应用场景的分布式并行计算方法。
一种分布式并行计算方法,包括:
总协调设备将获取的待执行任务拆分为至少一个子任务并对拆分的子任务排序,从预置的至少两个调度设备中为每个子任务选取一个调度设备,将选取的调度设备按照拆分后的子任务的顺序排序后得到选定调度设备链,将原始数据信息传递给所述选定调度设备链中的第一个调度设备;
所述选定调度设备链中的每个调度设备根据获取的子任务,从已在联络设备注册的计算设备中选取可执行获取的子任务的至少两个计算设备;以及
接收上一个调度设备传递的计算结果信息作为待处理数据信息,将获取的子任务和待处理数据信息分配给选取的至少两个计算设备,接收选取的至少两个计算设备执行完获取的子任务得到的计算结果信息,并传递给下一个调度设备;
其中,所述第一个调度设备将接收到的所述总协调设备传递的原始数据信息作为待处理数据信息,所述选定调度设备链中的最后一个调度设备将计算结果信息传递给所述总协调设备。
一种分布式并行计算系统,包括总协调设备、预置的至少两个调度设备、联络设备和至少两个计算设备,所述总协调设备与所述预置的至少两个调度设备通信连接,所述至少计算设备与所述联络设备通信连接,所述预置的至少两个调度设备与所述至少两个计算设备通信连接,其中:
所述总协调设备,用于将获取的待执行任务拆分为至少一个子任务并对拆分的子任务排序,从所述预置的至少两个调度设备中为每个子任务选取分配一个调度设备,将选取的调度设备按照拆分后的子任务的顺序排序后得到选定调度设备链,将原始数据信息传递给所述选定调度设备链中的第一个调度设备;
所述联络设备,用于对计算设备进行注册;
所述选定调度设备链中的每个调度设备,用于根据获取的子任务,从已在联络设备注册的计算设备中选取可执行获取的子任务的至少两个计算设备;以及接收上一个调度设备传递的计算结果信息作为待处理数据信息,将获取的子任务和待处理数据信息分配给选取的至少两个计算设备,接收选取的至少两个计算设备执行完获取的子任务得到的计算结果信息,并传递给下一个调度设备;其中,所述第一个调度设备将接收到的所述总协调设备传递的原始数据信息作为待处理数据信息,所述选定调度设备链中的最后一个调度设备将计算结果信息传递给所述总协调设备;
每个调度设备选取的至少两个计算设备,用于获取分配的待处理数据信息和子任务,并执行获取的子任务。
本申请实施例提供的分布式并行计算方法以及系统,该方案中的总协调设备可以将待执行任务拆分为多个子任务并对拆分后的子任务排序,然后在预置的调度设备中为每个子任务选取一个调度设备,将选取的调度设备按照拆分后的子任务的顺序排序后得到选定调度设备链,选定调度设备链中的调度设备分别去联络设备中选取执行子任务的计算设备,选定调度设备链中的第一个调度设备接收总协调设备传递的原始数据信息,并由选取的计算设备执行完子任务后,将得到的结算结果传递个第二个调度设备,第二个调度设备将得到的计算结果传递给第三个调度设备……选定调度设备链中的最后一个调度设备将得到的计算结果传递给总协调设备就完成了待执行任务。该方案采用串并行结合的方式执行待执行任务,每个调度设备选取的至少两个计算设备之间为并行方式,选定调度设备链中的调度设备之间为串行方式,该方案可以灵活、快捷地应用于很多应用场景。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例中分布式并行计算方法的流程图;
图2为本申请实施例中计算设备在联络设备中注册的流程图;
图3为本发明实施例一中的分布式并行计算方法第一阶段的示意图;
图4为本申请实施例一中的分布式并行计算方法第二阶段的示意图;
图5为本申请实施例一中的分布式并行计算方法第三阶段的示意图;
图6为本申请实施例中分布式并行计算系统的结构示意图;
图7为本申请实施例中一种优选的分别式并行计算系统的结构示意图。
具体实施方式
为了使本申请所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
为了实现能够灵活、快捷地适用于各种应用场景的分布式并行计算方法,本申请实施例提供一种分布式并行计算方法,该方法的流程如1图所示,包括:
S10:总协调设备将获取的待执行任务拆分为多个子任务,并对拆分的子任务排序,从预置的至少两个调度设备中为每个子任务选取一个调度设备,将选取的调度设备按照拆分后的子任务的顺序排序后,得到选定调度设备链,将原始数据信息传递给选定调度设备链中的第一个调度设备。
S11:选定调度设备链中的每个调度设备根据获取的子任务,从已在联络设备注册的计算设备中选取可执行获取的子任务的至少两个计算设备。
S12:选定调度设备链中的每个调度设备接收上一个调度设备传递的计算结果信息作为待处理数据信息,将获取的子任务和待处理数据信息分配给选取的至少两个计算设备,接收选取的至少两个计算设备执行完获取的子任务得到的计算结果信息,并传递给下一个调度设备。
其中,第一个调度设备将接收到的总协调设备传递的原始数据信息作为待处理数据信息,选定调度设备链中的最后一个调度设备将计算结果信息传递给总协调设备。
该方案中的总协调设备可以将待执行任务拆分为多个子任务,并对拆分后的子任务排序,然后在预置的调度设备中为每个子任务选取一个调度设备,将选取的调度设备按照拆分后的子任务的顺序排序后得到选定调度设备链,选定调度设备链中的调度设备分别去联络设备中选取执行子任务的计算设备,选定调度设备链中的第一个调度设备接收总协调设备传递的原始数据信息,并由选取的计算设备执行完子任务后,将得到的结算结果传递个第二个调度设备,第二个调度设备将得到的计算结果传递给第三个调度设备,依此类推,在选定调度设备链中的最后一个调度设备将其计算结果传递给总协调设备后,就完成了待执行任务。该方案采用串并行结合的方式执行待执行任务,每个调度设备选取的至少两个计算设备之间为并行方式,选定调度设备链中的调度设备之间为串行方式,该方案可以灵活、快捷地应用于很多应用场景。
下面对本申请实施例提供的分布式并行计算方法中的各个步骤进行详细的说明。
在S10中,总协调设备获取到待执行任务后,可以将待执行任务进行拆分,根据实际情况拆分为多个子任务,并为每个子任务选取一个调度设备,将选取的调度设备按照拆分的子任务的顺序排序后,得到选定调度设备链,用来完成待执行任务,原始数据信息直接传递给选定调度设备链中的第一个调度设备即可。每个调度设备将计算设备执行完子任务后得到的计算结果传递给下一个调度设备,直到待执行任务执行完毕,这样便于控制待执行任务的过程和进度,一旦出现故障也可以便于定位故障。选定调度设备链中的调度设备是预置的至少两个调度设备中的部分或全部调度设备。
其中,上述是预置了至少两个调度设备,也可以是一个调度设备中预置了至少两个应用程序,那么,总协调设备就是为每个子任务选取一个应用程序,当然还可以是其他情况,在这里不再赘述。以下以每个子任务选取一个调度设备分配为例进行说明。
具体的,当每个计算设备对应一个存储设备时,上述S11中选定调度设备链中的每个调度设备根据获取的子任务,从已在联络设备注册的计算设备中选取可执行获取的子任务的至少两个计算设备,其中每个计算设备在联络设备中注册的过程,如图2所示,具体包括:
S120:计算设备向联络设备发送携带自身计算设备标识信息、可执行计算类型和对应的存储设备标识信息的注册请求消息。
S121:联络设备接收到注册请求消息后,对应存储注册请求消息中携带的计算设备标识信息、可执行计算类型和存储设备标识信息,并向发送注册请求消息的计算设备返回注册成功消息。
图2是以一个计算设备与联络设备的注册过程为例进行说明的,在联络设备中注册成功的每个计算设备都要经过这样的注册流程。
计算设备在联络设备注册时,可以将自身计算设备标识信息、可执行计算类型和对应的存储设备标识信息携带在注册请求消息中发送给联络设备,其中计算设备标识信息可以是互联网协议(Internet Protocol,IP)地址、端口等,可执行计算类型取决于计算设备自身设置的应用程序等等可以实现的功能,联络设备可以对应存储接收到的注册请求消息中携带的计算设备标识信息、可执行计算类型和存储设备标识信息,便于选定调度设备链中的调度设备选取可执行子任务的计算设备。
假设某个计算设备的端口为80,可执行计算类型为分类,对应的存储设备的标识信息为192.168.1.1,那么该计算设备还会向联络设备发送注册消息时,会在注册请求消息中携带80、分类、“192.168.1.1”这些信息,当联络设备接收到该计算设备发送的注册请求消息后,会对应存储80、分类、“192.168.1.1”。这里仅仅是以一个实例说明了计算设备注册的过程,当然计算设备的注册请求消息中也可以携带其他信息,这里就不再一一说明。
选定调度设备链中的调度设备可以选取在联络设备中注册的计算设备中的部分或全部计算设备去执行子任务。
较佳的,上述S121中的各个计算设备接收到注册成功消息之后,还包括:各个计算设备按照第一设定周期向联络设备发送心跳报文;联络设备接收各个计算设备发送的心跳报文,并向在第二设定周期内没有发送心跳报文的计算设备发送询问报文;以及若在第三设定周期内未接收到没有发送心跳报文的计算设备反馈的响应报文,则对应删除没有反馈响应报文的计算设备的计算设备标识信息、可执行计算类型和存储设备标识信息,没有反馈响应报文的计算设备继续执行当前子任务。
当各个计算设备接收到注册成功消息后,仍与联络设备保持联系,这样联络设备就可以实时监控计算设备的状态。具体是,各个计算设备在第一设定周期内主动向联络设备发送心跳报文,如果联络设备在第二设定周期内没有接收到某些计算设备的心跳报文,向这些计算设备发送询问报文,主动询问没有发送心跳报文的计算设备的状态,当联络设备在第三设定周期内没有接收到响应报文时,直接对应删除没有反馈响应报文的计算设备标识信息、可执行计算类型和存储设备标识信息,也就是说以后当有调度设备需要计算设备执行任务时,不再选取这些设备。假设计算设备标识为80的计算没有向联络设备发送心跳报文,联络设备会向该计算设备发送询问报文,若联络设备在第三设定周期没有接收到该计算设备反馈的响应报文,就可以直接对应删除80、分类、“192.168.1.1”。
计算设备不能反馈响应报文可能是由于故障,也可能是由于自身任务繁忙,若计算设备由于自身任务繁忙不能反馈响应报文,虽然联络设备对应删除了计算设备标识信息、可执行计算类型和存储设备标识信息,但该计算设备仍会继续执行正在执行的任务,这样就保证了执行任务的可靠性。
其中,第一设定周期、第二设定周期、第三设定周期可以根据实际需要进行设定,可以设置相同的时间长度,也可以设置不同的时间长度。当要求的可靠性较高时,可以设置的短一些,当要求的可靠性不高时,可以设置的长一些。
具体的,上述S11中的根据获取的子任务,从已在联络设备注册的计算设备中选取可执行获取的子任务的至少两个计算设备,具体包括:确定获取的子任务的类型,在联络设备对应存储的计算设备标识信息、可执行计算类型和存储设备标识信息中获取与获取的子任务的类型对应的计算设备标识信息;在获取的计算设备标识信息对应的计算设备中选取至少两个计算设备。
假设选定调度设备链中的一个调度设备获取的子任务类型是分类,那么,该调度设备就可以到联络设备对应存储的计算设备标识信息、可执行计算类型和存储设备标识信息中获取可执行计算类型为分类的计算设备,如果获取到以下三条:第一条为80、分类、“192.168.1.1”;第二条为81、分类、“192.168.1.2”、第三条为82、分类、“192.168.1.3”,那么调度设备可以选取计算设备标识为80、81、82这三个计算设备中的至少两个。
具体的,当每个计算设备对应一个存储设备时,上述S12中的将获取的子任务和待处理数据信息分配给选取的至少两个计算设备,接收选取的至少两个计算设备执行完获取的子任务得到的计算结果信息,并传递给下一个调度设备,具体包括:将待处理数据信息分配给选取的至少两个计算设备,为选取的每个计算设备生成携带获取的子任务和分配的待处理数据信息的数据处理消息,并分别存储在选取的每个计算设备对应的存储设备中;选取的至少两个计算设备在对应的存储设备中获取到数据处理消息后,获取分配的待处理数据并执行获取的子任务得到计算结果,将得到的计算结果信息存储在对应的存储设备中;调度设备将从选取的至少两个计算设备对应的存储设备中获取的计算结果信息传递给下一个调度设备。
选取的至少两个计算设备可以并行执行计算任务,一旦接收到调度设备分配的数据处理消息就可以执行获取的子任务,不用考虑其他计算设备的进度,这些选取的计算设备互不影响,也互不依赖。在执行完获取的子任务后,存储计算结果,并将计算结果信息存储在对应的存储设备中,调度设备可以到存储设备中获取计算结果信息。
具体的,上述选取的每个计算设备的计算结果可以存储在各自的分布式缓存或者分布式文件中;或者选取的每个计算设备的计算结果都存储在数据库或者分布式文件系统中。
较佳的,若数据处理消息中携带的子任务为合并任务,选取的至少两个计算设备获取分配的待处理数据并执行获取的子任务得到计算结果,具体包括:选取的每个计算设备保留获取到的待处理数据中属于自身的数据,将属于其他计算设备的数据发送给相应的计算设备;以及接收其他计算设备发送的数据,与自身保留的数据合并后得到计算结果。
当计算设备获取到的数据处理消息中携带的子任务是合并任务,每个计算设备获取到的待处理数据中可能既有属于自身的部分,又有属于其他计算设备的部分,那么,这些计算设备可以互相交换数据,保留自身的待处理数据中属于自身的部分,将属于其他计算设备的数据传递给其它计算设备,并接收其它计算设备传递过来的数据,与自身保留的数据合并后得到计算结果。
具体的,上述原始数据信息可以为全部原始数据或者全部原始数据的存储位置信息;计算结果信息可以为全部计算结果或者全部计算结果数据的存储位置信息。
若全部原始数据的数据量较小,选定调度设备链中的第一个调度设备可以直接将拆分的原始数据携带在数据处理消息中,将数据处理消息存储在选取的每个计算设备对应的存储设备中;若全部原始数据的数据量较大,可以将全部原始数据进行拆分,并分别存储,然后将拆分后的原始数据的存储位置信息携带在数据处理消息中,将数据处理消息存储在选取的至少两个计算设备对应的存储设备中。若选定调度设备链中的两个相邻的调度设备选取的计算设备相同时,这些计算设备直接可以使用自身的计算结果执行后面的调度设备分配的子任务,这样就可以避免网络传输数据造成资源浪费。
相应的计算结果信息也可以为全部计算结果或者计算结果的存储位置信息,这里不再赘述。
下面以两个具体实施例来说明上述分布式并行计算方法的实现过程。
实施例一
该实施例的应用场景为网站的秒杀活动,每天在网站的很多计算机上会产生几千万的订单,这些订单就可以作为原始数据。在这些订单中,有一部分是通过秒杀器作弊产生的,这部分订单就可以定义为“严重作弊”的订单,还有一部分是“合法”订单,剩下的就是“怀疑作弊”订单,现在需要将所有计算机上的全部订单分为“合法”、“怀疑作弊”、“严重作弊”三类,并作为待执行任务。
总协调设备接收到该待执行任务后,可以将该待执行任务拆分为三个子任务,第一个子任务是将每台计算机上的订单进行分类,第二个子任务是将每台计算机上分类后的订单进行合并,第三个子任务是将合并后的订单生成结果,在预置的至少两个调度设备中为每个子任务选取一个调度设备,第一个子任务分配给第一调度设备,第二个子任务分配给第二调度设备,第三个子任务分配给第三调度设备,这样第一调度设备、第二调度设备和第三调度设备就可以组成选定调度设备链。
假设选定调度设备链中的三个调度设备选取的计算设备都一样,就是产生订单的所有计算机,假设共有三台计算机,这时,原始数据都存储在选取的计算设备中,也就是存储在产生订单的三台计算机上,那么总协调设备就可以将这些订单的存储位置信息传递给第一调度设备,也就是将这三台计算机的位置信息发送给第一调度设备,下面就要执行每个子任务了,可以把每个子任务看成是待执行任务的一个阶段,第一个子任务是第一个阶段,第二个子任务是第二个阶段,第三个子任务是第三个阶段,下面具体介绍每个阶段:
第一阶段:将每台计算机上的订单进行分类,原理可参见图3。
第一个调度设备将总协调设备传递的订单的存储位置信息和第一个子任务携带在数据处理消息中,具体地,可将第一台计算机的位置信息和第一个子任务携带在一个数据处理消息中,存储在第一台计算机对应的存储设备中,将第二台计算机的位置信息和第一个子任务携带在一个数据处理消息中,存储在第二台计算机对应的存储设备中,将第三台计算机的位置信息和第一个子任务携带在一个数据处理消息中,存储在第三台计算机对应的存储设备中。
每台计算机到对应的存储设备获取第一调度设备存储的数据处理消息,得到待处理数据就是自身产生的订单,每台计算机无须等待,可同时执行子任务;每台计算机同时对各自产生的订单进行作弊分析归类处理,调用作弊分析逻辑对自己机器上的订单数据进行分析,将所有的原始订单分为三类“合法”、“怀疑作弊”、“严重作弊”,将分类后的订单的存储位置信息,也就是自身的位置信息存储在对应的存储设备中,第一调度设备分别到这三台计算机对应的存储设备中获取分类后的订单的存储位置信息,然后传递给第二调度设备。
第二阶段:将每台计算机上分类后的订单进行合并,原理参见图4。
第二调度设备将第一调度设备传递的分类后的订单的存储位置信息和第二个子任务携带在数据处理消息中,具体地,可将第一台计算机的位置信息和第二个子任务携带在一个数据处理消息中,存储在第一台计算机对应的存储设备中,将第二台计算机的位置信息和第二个子任务携带在一个数据处理消息中,存储在第二台计算机对应的存储设备中,将第三台计算机的位置信息和第二个子任务携带在一个数据处理消息中,存储在第三台计算机对应的存储设备中。
第二调度设备指定三台计算机分别保存一类的订单,并为每台计算机分配一个分组分类标识,假设指定第一台计算机存储“合法”订单,第二台计算机存储“怀疑作弊”订单,第三台计算机存储“严重作弊”订单,第一台计算机的分类分组标识为1,第二台计算机的分类分组标识为2,第三台计算机的分类分组标识为3。
每台计算机到对应的存储设备中获取第二调度设备存储的数据处理消息后,根据分组分类的标示信息,将自身分类后的订单中属于其他计算机的订单取出并发给该计算机,属于自己的则保存。具体地,这三台计算机在自身分类后的三类订单中添加分类分组标识,在“合法”订单中添加分类分组标识1,在怀疑作弊”订单中添加分类分组标识2,在“严重作弊”订单中添加分类分组标识3。由于合并是并行进行的,所以每台计算机在发送的同时也在接收其他计算机发过来的订单,将合并后的订单的存储位置信息存储在对应的存储设备中,第二调度设备分别到这三台计算机对应的存储设备中获取合并后的订单的存储信息,然后传递给第三调度设备。
第三阶段:将合并后的订单生成结果,原理参见图5。
第三个度设备将接收到第二调度设备传递的合并后的订单的存储位置信息和第三个子任务携带在数据处理消息中,具体地,可将第一台计算机的位置信息和第三个子任务携带在一个数据处理消息中,存储在第一台计算机对应的存储设备中,将第二台计算机的位置信息和第三个子任务携带在一个数据处理消息中,存储在第二台计算机对应的存储设备中,将第三台计算机的位置信息和第三个子任务携带在一个数据处理消息中,存储在第三台计算机对应的存储设备中。
每台计算机到对应的存储设备中获取数据处理消息后,执行第三个子任务,将自己所有的订单输出结果和报表,完成后,“合法”、“怀疑作弊”、“严重作弊”这三类订单分别存储在一台计算机上,然后将存储输出结果和报表的位置信息存储在对应的存储设备中,第三调度设备分别到这三台计算机对应的存储设备中获取输出结果和报表的位置信息,然后传递给总协调设备。如果每类订单的数据量都很小的话,可以直接将输出结果和报表存储在对应的存储设备中,第三调度设备可以直接获取到所有的输出结果和报表,然后返回给总协调设备,由总协调得到最终结果名单,就可以完成待执行任务了。
实施例二
该实施例的应用场景为对文件进行排序,假设有3000000个杂乱无序的文件存储在三台计算机上,每个文件有一个编号,现在需要把这3000000个文件按照编号的先后顺序排序,这就是待执行任务。
总协调设备接收到该待执行任务后,可以将该待执行任务拆分为三个子任务,第一个子任务是将每台计算机上的文件进行分类,第二个子任务是将每台计算机上分类后的文件进行合并,第三个子任务是将合并后的文件排序生成结果,在预设调度设备链中为每个子任务分配一个调度设备,第一个子任务分配给第一调度设备,第二个子任务分配给第二调度设备,第三个子任务分配给第三调度设备,这样第一调度设备、第二调度设备和第三调度设备就可以组成选定调度设备链。
假设选定调度设备链中的三个调度设备选取的计算设备都一样,就是存储文件的三台计算机,总协调设备就可以将这些文件的存储位置信息传递给第一调度设备,也就是将这三台计算机的位置信息发送给第一调度设备,下面就要执行每个子任务了,可以把每个子任务看成是待执行任务的一个阶段,第一个子任务是第一个阶段,第二个子任务是第二个阶段,第三个子任务是第三个阶段,下面具体介绍每个阶段:
第一阶段:将每台计算机上的文件进行分类。
第一调度设备将总协调设备传递的文件的存储位置信息和第一个子任务携带在数据处理消息中,具体就是,将第一台计算机的位置信息和第一个子任务携带在一个数据处理消息中,存储在第一台计算机对应的存储设备中,将第二台计算机的位置信息和第一个子任务携带在一个数据处理消息中,存储在第二台计算机对应的存储设备中,将第三台计算机的位置信息和第一个子任务携带在一个数据处理消息中,存储在第三台计算机对应的存储设备中。
每台计算机到对应的存储设备获取第一调度设备存储的数据处理消息,得到待处理数据就是自身存储的文件,每台计算机无须等待,可同时执行子任务;每台计算机同时对各自存储的文件进行归类处理,将编号1-1000000的归为一类,将编号1000001-2000000的归为一类,将编号2000001-3000000的归为一类,将分类后的文件的存储位置信息,也就是自身的位置信息存储在对应的存储设备中,第一调度设备分别到这三台计算机对应的存储设备中获取分类后的文件的存储位置信息,然后传递给第二调度设备。
第二阶段:将每台计算机上分类后的文件进行合并。
第二调度设备将第一调度设备传递的分类后的文件的存储位置信息和第二个子任务携带在数据处理消息中,具体地,将第一台计算机的位置信息和第二个子任务携带在一个数据处理消息中,存储在第一台计算机对应的存储设备中,将第二台计算机的位置信息和第二个子任务携带在一个数据处理消息中,存储在第二台计算机对应的存储设备中,将第三台计算机的位置信息和第二个子任务携带在一个数据处理消息中,存储在第三台计算机对应的存储设备中。
第二调度设备指定三台计算机分别保存一类的文件,并为每台计算机分配一个分组分类标识,假设指定第一台计算机存储编号1-1000000的文件,第二台计算机存储编号1000001-2000000的文件,第三台计算机存储编号2000001-3000000的文件,第一台计算机的分类分组标识为1,第二台计算机的分类分组标识为2,第三台计算机的分类分组标识为3。
每台计算机到对应的存储设备中获取第二调度设备存储的数据处理消息后,根据分组分类的标示信息,将自身分类后的文件中属于其他计算机的文件取出并发给该计算机,保存属于自己的。具体就是,这三台计算机在自身分类后的三类文件中添加分类分组标识,在编号1-1000000的文件中添加分类分组标识1,在编号1000001-2000000的文件中添加分类分组标识2,在“编号2000001-3000000的文件中添加分类分组标识3。由于合并是并行进行的,所以每台计算机在发的同时也在接收其他计算机发过来的文件,将合并后的文件的存储位置信息存储在对应的存储设备中,第二调度设备分别到这三台计算机对应的存储设备中获取合并后的文件的存储信息,然后传递给第三调度设备。
第三阶段:将合并后的文件排序生成结果。
第三调度设备将接收到第二个调度设备传递的合并后的文件的存储位置信息和第三个子任务携带在数据处理消息中,具体就是,将第一台计算机的位置信息和第三个子任务携带在一个数据处理消息中,存储在第一台计算机对应的存储设备中,将第二台计算机的位置信息和第三个子任务携带在一个数据处理消息中,存储在第二台计算机对应的存储设备中,将第三台计算机的位置信息和第三个子任务携带在一个数据处理消息中,存储在第三台计算机对应的存储设备中。
每台计算机到对应的存储设置中获取数据处理消息后,执行第三个子任务,将自己所有的文件进行排序后输出结果,完成后,编号1-1000000、1000001-2000000、2000001-3000000的文件分别存储在一台计算机上,然后将存储输出结果的位置信息存储在对应的存储设备中,第三调度设备设备分别到这三台计算机对应的存储设备中获取输出结果的位置信息,然后传递给总协调设备第三个调度设备,由总协调得到最终结果名单,就可以完成待执行任务了。
这里仅仅是以两个具体的应用场景为例进行的说明,当然还可以应用于很多其他的应用场景,这里就不再进行一一说明。
基于同一发明构思,本申请实施例还提供一种分布式并行计算系统,该系统的结构如图6所示,包括总协调设备60、预置的至少两个调度设备61、联络设备62和至少两个计算设备63,总协调设备60与预置的至少两个调度设备61通信连接,至少计算设备63与联络设备62通信连接,预置的至少两个调度设备61与至少两个计算设备63通信连接,其中:
总协调设备60,用于将获取的待执行任务拆分为至少一个子任务并对拆分的子任务排序,从预置的至少两个调度设备中为每个子任务选取分配一个调度设备,将选取的调度设备按照拆分后的子任务的顺序排序后得到选定调度设备链,将原始数据信息传递给选定调度设备链中的第一个调度设备。
联络设备62,用于对计算设备进行注册。
选定调度设备链中的每个调度设备61,用于根据获取的子任务,从已在联络设备注册的计算设备中选取可执行获取的子任务的至少两个计算设备;以及接收上一个调度设备传递的计算结果信息作为待处理数据信息,将获取的子任务和待处理数据信息分配给选取的至少两个计算设备,接收选取的至少两个计算设备执行完获取的子任务得到的计算结果信息,并传递给下一个调度设备;其中,第一个调度设备将接收到的总协调设备传递的原始数据信息作为待处理数据信息,选定调度设备链中的最后一个调度设备将计算结果信息传递给总协调设备。
每个调度设备选取的至少两个计算设备63,用于获取分配的待处理数据信息和子任务,并执行获取的子任务。
较佳的,如图7所示,一种优选的分布式并行计算系统,还包括:每个计算设备对应的存储设备64。
计算设备63,具体用于向联络设备发送携带自身计算设备标识信息、可执行计算类型和对应的存储设备标识信息的注册请求消息;以及接收联络设备返回的注册成功消息.
联络设备62,具体用于接收注册请求消息后,对应存储注册请求消息中携带的计算设备标识信息、可执行计算类型和存储设备标识信息,并向发送注册请求消息的计算设备返回注册成功消息。
较佳的,各个计算设备63,还用于在接收到注册成功消息之后,按照第一设定周期向联络设备发送心跳报文;以及接收联络设备发送的询问报文,并反馈响应报文.
联络设备62,还用于接收各个计算设备发送的心跳报文,并向在第二设定周期内没有发送心跳报文的计算设备发送询问报文;以及若在第三设定周期内未接收到没有发送心跳报文的计算设备反馈的响应报文,则对应删除没有反馈响应报文的计算设备的计算设备标识信息、可执行计算类型和存储设备标识信息,没有反馈响应报文的计算设备继续执行当前子任务。
具体的,上述选定调度设备链中的每个调度设备61,用于:确定获取的子任务的类型,在联络设备对应存储的计算设备标识信息、可执行计算类型和存储设备标识信息中获取与获取的子任务的类型对应的计算设备标识信息;在获取的计算设备标识信息对应的计算设备中选取至少两个计算设备。
较佳的,如图7所示,一种优选的分别式并行计算系统还包括:每个计算设备对应的存储设备64。
选定调度设备链中的每个调度设备61,具体用于:将待处理数据信息分配给选取的至少两个计算设备,为选取的每个计算设备生成携带获取的子任务和分配的待处理数据信息的数据处理消息,并分别存储在存储在选取的每个计算设备对应的存储设备中;将从选取的至少两个计算设备对应的存储设备中获取的计算结果信息传递给下一个调度设备。
选取的至少两个计算设备63,具体用于在对应的存储设备中获取到数据处理消息后,获取分配的待处理数据并执行获取的子任务得到计算结果,将得到的计算结果信息存储在对应的存储设备中。
具体的,若数据处理消息中携带的子任务为合并任务,选取的至少每个计算设备63,用于:获取待处理数据和子任务之后,执行子任务得到计算结果之前,保留获取到的待处理数据中属于自身的数据,将属于其他计算设备的数据发送给相应的计算设备;以及接收其他计算设备发送的数据,与自身保留的数据合并后得到计算结果。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
上述说明示出并描述了本申请的优选实施例,但如前所述,应当理解本申请并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本申请的精神和范围,则都应在本申请所附权利要求的保护范围内。