基于MapReduce编程架构的任务分配方法及装置的制作方法

文档序号:7929269阅读:134来源:国知局
专利名称:基于MapReduce编程架构的任务分配方法及装置的制作方法
技术领域
本发明涉及网络通信领域,尤其涉及一种基于MapReduce编程架构的任务分配方 法及装置。
背景技术
随着高性能应用和运算需求的迅猛发展,单台高性能计算机已经不能解决一些超 大规模应用问题,这就需要将多台计算机资源联合起来,构成计算机集群,共同解决大规模 应用问题。并行编程技术可以有效地开发并行计算机尤其是集群计算机的计算能力,是硬 件和软件之间的桥梁,是并行计算的低层实现与高层抽象的界面。 现有技术所提供的一种基于MapReduce编程架构的任务分配方法,该方法具体包 括,将对海量数据的计算任务分为K个子任务,然后一次性分配到各个节点(计算机)上进 行计算处理。 在实现本发明的过程中,发明人发现现有技术存在如下问题 由于现有技术提供的技术方案是一次性分配到各个节点(计算机)上进行计算处 理,其仅考虑了任务分配,并没有考虑在任务执行过程中,由于节点(计算机)资源的动态 变化带来的负载失衡的问题。

发明内容
本发明实施方式提供一种基于MapReduce编程架构的任务分配方法及装置,所述 方法和系统具有负载均衡,避免任务重复转移,防止系统抖动的优点。 本发明的具体实施方式
提供一种基于MapReduce编程架构的任务分配方法,所述 方法包括 在判断出空闲时,发送空闲消息,并接收所述空闲消息的响应消息,所述响应消息 包括需要转移的任务量和所述任务量所对应的节点地址;在判断出所述需要转移的任务量 小于剩余能力时,将所述需要转移的任务量对应的节点地址存储在过载节点列表中,向所 述过载节点列表中的一个节点地址发送任务转移请求消息,接收转移的任务并进行计算处
理5或 在判断出过载且未进行任务转移时,回复所接收到的空闲消息的响应消息;在收 到任务转移请求消息后,将转移的任务发送给所述任务转移请求消息所对应的节点。
本发明具体实施方式
还提供一种基于MapReduce编程架构的任务分配装置,所述 装置包括 判断单元,用于判断空闲或过载; 发送单元,用于在所述判断单元判断出空闲时,发送空闲消息; 接收单元,用于接收所述空闲消息的响应消息,所述响应消息包括需要转移的任
务量和所述任务量所对应的节点地址; 存储单元,用于在所述需要转移的任务量小于剩余能力时,将所述需要转移的任务量对应的节点地址存储在过载节点列表中, 所述发送单元还用于向所述过载节点列表中的一个节点地址发送任务转移请求 消息, 所述接收单元还用于接收转移的任务; 计算单元,用于对所述转移的任务进行计算处理; 所述判断单元判断出过载且未进行任务转移时;通知所述发送单元回复接收到的 空闲消息的响应消息; 任务转移单元,用于在所述接收单元收到任务转移请求消息后,将转移的任务发 送给所述任务转移请求消息所对应的节点。 由上述所提供的技术方案可以看出,本发明实施例的技术方案将过载节点的任务 转移到空闲节点,从而实现了在任务执行的过程中,对任务的动态分配,从而达到了负载均 衡;上述方法转移的任务不会大于接收节点的剩余能力,所以该方法能够避免由于任务转 移而出现的接收节点过载的情况,从而避免了接收节点由于过载将转移的任务再次转移到 其他的节点,从而防止了系统的抖动;上述方法在过载情况进行任务转移时,由于该过载节 点之前未进行任务转移,所以其可以避免将需要转移的任务重复转移。


图1为本发明具体实施方式
提供的一种并行计算中的任务分配方法的流程图。
图2为本发明一实施例提供的一种并行计算中的任务分配方法的流程图。
图3为本发明具体实施方式
提供的一种并行计算中的任务分配装置的结构图。
具体实施例方式
本发明实施方式提供了一种基于M即Reduce编程架构的任务分配方法,该方法包 括,在判断出空闲时,发送空闲消息,并接收该空闲消息的响应消息,该响应消息包括需要 转移的任务量和该任务量所对应的节点地址;在判断出该需要转移的任务量小于剩余能力 时,将该需要转移的任务量对应的节点地址存储在过载节点列表中,向该过载节点列表中 的一个节点地址发送任务转移请求消息,接收转移的任务并进行计算处理;或,在判断出过 载且未进行任务转移时,回复接收到的空闲消息的响应消息,该响应消息包括需要转移的 任务量和节点地址;在收到任务转移请求消息后,将转移的任务发送给该任务转移请求消 息所对应的节点。上述方法均可以由节点(worker)完成。上述方法将过载节点的任务转移 到空闲节点,从而实现了在任务执行的过程中,对任务的动态分配,从而达到了负载均衡; 上述方法转移的任务不会大于接收节点的剩余能力,所以该方法能够避免由于任务转移而 出现的接收节点过载的情况,从而避免了接收节点由于过载将转移的任务再次转移到其他 的节点,从而防止了系统的抖动;上述方法在过载情况进行任务转移时,由于该过载节点之 前未进行任务转移,所以其可以避免将需要转移的任务重复转移。 本发明具体实施方式
提供一种基于M即Reduce编程架构的任务分配方法,该方式
是基于M即Reduce编程架构来实现的,该方法如图l所示,包括如下步骤 步骤11、判断是否空闲,如是则进行步骤12 14,否则为过载,则进行步骤15 16。
实现该步骤的方法可以由节点完成,其实现的具体方法可以为,节点获取自身的 负载值,然后计算出本节点的阀值,如负载值小于阀值则说明本节点空闲,否则为过载。计 算出本节点的阀值的具体方法可以为, 阈值TA= (utl+ e ) X(;,其中utl =系统内各个节点的负载值的和/系统内各个 节点的负载能力值的和,e为可调参数,(;为本节点的负载值。该系统可以为一个master 以及master下的所有节点。该负载值、负载能力值可以为节点中CPU或内存的使用情况。
步骤12、向物理位置相近的节点发送空闲消息,并接收该空闲消息的响应消息,该 响应消息包括需要转移的任务量和该任务量所对应的节点地址。 该步骤中的物理位置相近的节点可以为,IP地址段相近,当然也可以通过网络定 位或发PIN消息等方式来判断物理位置相近的节点。 步骤13、如接收到的需要转移的任务量小于剩余能力,则将该需要转移的任务量 对应的节点地址存储在过载节点列表中。 该步骤中的剩余能力的计算方法可以为,剩余能力=本节点的阀值减去本节点自 身负载值。 步骤14、向该过载节点列表中的一个节点地址发送任务转移请求消息,接收转移 的任务并进行计算处理。 该步骤中的向该过载节点列表中的一个节点地址发送任务转移请求消息的实现 方式可以为,在过载节点列表中任意选择一个节点地址发送该任务转移请求消息,也可以 在过载节点列表中选择最近的节点地址发送该任务转移请求消息。该节点地址可以为节点 的IP地址或节点的名称,当然在实际情况中,也可以为其他的能区分节点的地址,本发明具体实施方式
并不局限该节点地址的具体表现方式。当将该消息选择最近的节点地址发送 时,可以节约系统的带宽,并能加快处理的速度。 该步骤中的接收转移的任务并进行计算处理实现的方式具体可以为,如该转移的 任务为未执行的任务,则直接计算处理该转移的任务,如该转移的任务是执行中的任务,则 获取执行该任务时的中间数据后,再计算处理该转移的任务。上述转移的任务在MapReduce 编程架构中实际可以为map任务或reduce任务。 步骤15、在判断出未进行任务转移时,回复接收到的空闲消息的响应消息,该响应 消息包括需要转移的任务量和节点地址。 步骤16、接收到任务转移请求消息后,将转移的任务发送给该任务转移请求消息 所对应的节点。 可选的,在进行步骤16之后,该方法还可以包括,通知master回收垃圾空间。该
方法通过通知master回收垃圾空间,从而提高了节点存储空间的利用率。 可选的,该方法在进行步骤11之前,还可以包括,将固定存储的数据分块逻辑分
片成多个逻辑小块,并以逻辑小块为任务执行和转移的基本单元。其实现的方法可以为,在
Master中增加逻辑小块索引数据结构,在需要执行该逻辑小块的任务时,将该逻辑小块的
索引发送给执行的节点,该节点根据该索引获取该逻辑小块后,进行任务执行,在需要进行
任务转移时,只需将需要转移的逻辑小块的索引发送给接收任务转移的节点进行执行操作即可。 可选的,该方法在进行计算处理后还可以包括,根据m即任务的个数自行设定多个reduce任务并进行reduce计算,将多个reduce任务的计算结果合并后输出最终计算结 果。该方法的reduce任务可以由用户自行设定,所以该reduce任务的个数不受用户需要 输出的文件数量的限制。 本发明具体实施方式
提供的方法将过载节点的任务转移到空闲节点,从而实现了 在任务执行的过程中,对任务的动态分配,从而达到了负载均衡;上述方法转移的任务不会 大于接收节点的剩余能力,所以该方法能够避免由于任务转移而出现的接收节点过载的情 况,从而避免了接收节点由于过载将转移的任务再次转移到其他的节点,从而防止了系统 的抖动;上述方法在过载情况进行任务转移时,由于是未进行任务转移,所以其可以避免将 需要转移的任务重复转移。该方法在任务转移后,还可以通知master回收垃圾空间,从而 提高了节点的存储空间的利用率。并且该方法在进行计算之前,还可以将定存储的数据分 块逻辑分片分成更小的逻辑小片,并以逻辑小片为任务执行的基本单元,从而进一步提高 了系统的负载均衡。该方法还可以根据map任务的个数自行设定多个reduce任务并进行 reduce计算,从而使得该方法中reduce任务的个数不受用户需要输出的文件数量的限制。
为了更好的说明本发明,现结合具体实施例和附图来说明本发明的实现方法。
本发明具体实施方式
提供一具体实施例,本实施例提供一种基于MapReduce编程 架构的任务分配方法,本实施例的技术场景为,本实施例中的方法是在MapReduce编程架 构下实现的,本实施例的M即Reduce编程架构假设为, 一个master,三个节点(worker),为 了叙述的方便,这里将三个节点分别定义为,worker 1、 worker 2、 worker 3,三个节点对 应的节点地址(这里以IP地址为例)为IP 1、 IP 2、 IP 3,假设worker 1空闲,worker 2和worker 3过载且均未进行任务转移,在进行本实施例的方法之前,master预先将 MapReduce编程架构下的底层存储系统的数据分块逻辑分片成多个逻辑小块,并以逻辑小 块为任务执行和转移的基本单元,该方法如图2所示包括如下步骤 步骤21、 worker 1判断出自身处于空闲状态,并向worker 2和worker 3发送空 闲消息。 步骤22、worker 2和worker 3在判断出过载且均未进行任务转移后,分别回复接 收到的空闲消息的响应消息。 该响应消息包括,worker 2回复的响应消息包括worker 2需要转移的任务量和 IP 2 ;worker 3回复的响应消息包括worker 3需要转移的任务量和IP 3。
步骤23、 worker 1接收该响应消息,并判断需要转移的任务量是否小于自身的剩 余能力; 这里假设worker 2和worker 3需要转移的任务量均小于worker l的剩余能力。
步骤24、 worker 1将IP 2和IP 3存储在过载节点列表中,并在过载节点列表中 选择最近的节点发送转移任务请求消息; 假设离worker 1最近的节点为worker 2,则该方法实际为,向IP 2发送转移任务 请求消息。 步骤25、 worker 2接收到该任务请求消息后,将需要转移的任务发送给IP 1 ;
实现该步骤的方法可以为,worker 2优先选择将未被执行的任务发送给IP1,当 然在实际情况中,也可以优选将正在执行中的最后一个任务发送给IP l,当然也可以为其 他的正在执行的任务,这里假设发送的是正在执行中的最后一个任务发送给IP 1。
步骤26、 worker 1接收到转移的任务后,判断出该转移的任务为执行中的任务, 则从worker 2获取执行该转移的任务的中间数据后,继续计算处理该转移的任务,并将IP 2从过载节点列表中删除。 步骤27、 worker 2将转移的任务和该中间数据发送后,通知master回收垃圾空 间。 可选的,worker 1在执行完步骤26以后,还可以进行下述操作 worker 1继续判断剩余能力是否还大于worker 3需要转移的任务量,如是则进
行步骤28 29,否则结束操作。 步骤28、 worker 1向IP 3发送转移任务请求消息; 步骤29、 worker 3接收到该任务转移请求消息后,向IP 1发送转移任务,并通知 master回收垃圾空间; 步骤291、 worker 1接收到该转移任务后,对该转移任务进行计算处理。 可选的,该方法在执行完步骤291后,还可以包括如下操作,worker 1根据
MapReduce编程架构下的map任务的个数自行设定多个reduce任务并进行reduce计算,将
该多个reduce任务的计算结果根据用户指定需要输出的文件数量进行合并后输出最终计
算结果。 本发明一实施例提供的方法中的worker 1可以根据负载的情况来接收worker 2 转移的任务,从而达到了根据负载情况来动态转移任务的目的,具有负载均衡的优点,并且 由于该转移的任务是以分片后的逻辑小片为基本单元的,所以该转移的任务的基本单元量 更小,进一步提高了系统的负载均衡的灵活性。并且该方法中worker 1接收该转移的任务 后,在剩余能力大于worker 3需要转移的任务量的情况下,继续接收worker 3需要转移的 任务,从而使得系统的负载进一步的均衡和节约了负载均衡引起的资源消耗。该方法中的 worker 1接收该转移的任务后,不会出现过载的情况,从而避免了由于worker 1过载将转 移的任务再次转移到其他的节点,从而防止了系统的抖动。该方法中的worker2和worker 3将转移任务发送后,通知master回收垃圾空间,从而提高了 worker 2和worker 3的存储 空间利用率。 本发明具体实施方式
还提供一种基于M即Reduce编程架构的任务分配装置,该装 置如图3所示,包括判断单元31,用于判断空闲或过载;发送单元32,用于在判断单元31 判断出空闲时,发送空闲消息;接收单元33,用于接收该空闲消息的响应消息,该响应消息 包括需要转移的任务量和所述任务量所对应的节点地址;存储单元34,用于在该需要转移 的任务量小于剩余能力时,将该需要转移的任务量对应的节点地址存储在过载节点列表 中,该发送单元32还用于向该过载节点列表中的一个节点地址发送任务转移请求消息,接 收单元33还用于接收转移的任务;计算单元35,用于对该转移的任务进行计算处理;该判 断单元31还用于在判断出过载且未进行任务转移时,通知该发送单元32回复接收到的空 闲消息的响应消息;任务转移单元39,用于接收单元33收到任务转移请求消息后,将转移 的任务发送给该任务转移请求消息所对应的节点。
上述装置还可以包括下述单元中的一种或多种。 可选的,该装置还可以包括;分片单元36,用于预先将基于M即Reduce编程架构下 的底层存储系统的数据分块逻辑分片成多个逻辑小块,并以逻辑小块为任务执行和转移的
8基本单元。 可选的,该装置还可以包括回收单元37,用于在发送单元32将转移的任务发送 给所述请求消息所对应的节点之后,通知M即Reduce编程架构下的master回收垃圾空间。
可选的,该装置还可以包括合并单元38,用于在计算单元35计算处理完之后,根 据MapReduce编程架构下的map任务的个数自行设定多个reduce任务并进行reduce计算, 将所述多个reduce任务的计算结果根据用户指定需要输出的文件数量进行合并后输出最 终计算结果。 可选的,该发送单元32还可以用于在判断出剩余能力还大于一个剩余的需要转 移的任务量时,向这个剩余的需要转移的任务量所对应的节点地址发送任务转移请求消 息。 本发明具体实施方式
提供的装置可以将过载节点的任务转移到空闲节点,从而实 现了在任务执行的过程中,对任务的动态分配,从而达到了负载均衡;上述装置中转移的任 务不会大于接收节点的剩余能力,所以该装置能够避免由于任务转移而出现的接收节点过 载的情况,从而避免了接收节点由于过载将转移的任务再次转移到其他的节点,从而防止 了系统的抖动;上述装置在过载情况进行任务转移时,由于是未进行任务转移,所以其可以 避免将需要转移的任务重复转移。该装置在任务转移后,还可以通过回收单元通知master 回收垃圾空间,从而提高了节点的存储空间的利用率。并且该装置在进行计算之前,还可以 通过分片单元将定存储的数据分块逻辑分片分成更小的逻辑小片,并以逻辑小片为任务执 行的基本单元,从而进一步提高了系统的负载均衡。该装置还可以由合并单元根据m即任 务的个数自行设定多个reduce任务并进行reduce计算,从而使得该方法中reduce任务的 个数不受用户需要输出的文件数量的限制。 综上所述,本发明具体实施方式
提供的技术方案,具有负载均衡,防止系统抖动和 避免转移的任务重复转移的优点。 以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此, 任何熟悉本技术领域的技术人员在本发明实施例揭露的技术范围内,可轻易想到的变化或 替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护 范围为准。
权利要求
一种基于MapReduce编程架构的任务分配方法,其特征在于,所述方法包括在判断出空闲时,发送空闲消息,并接收所述空闲消息的响应消息,所述响应消息包括需要转移的任务量和所述任务量所对应的节点地址;在判断出所述需要转移的任务量小于剩余能力时,将所述需要转移的任务量对应的节点地址存储在过载节点列表中,向所述过载节点列表中的一个节点地址发送任务转移请求消息,接收转移的任务并进行计算处理;或在判断出过载且未进行任务转移时,回复所接收到的空闲消息的响应消息;在收到任务转移请求消息后,将转移的任务发送给所述任务转移请求消息所对应的节点。
2. 根据权利要求l所述的方法,其特征在于,预先将基于M即Reduce编程架构下的底层存储系统的数据分块逻辑分片成多个逻辑小块,并以所述逻辑小块为任务执行和转移的基 本单元。
3. 根据权利要求1所述的方法,其特征在于,所述向所述过载节点列表中的一个节点 地址发送任务转移请求消息包括在过载节点列表中选择最近的节点地址发送所述任务转移请求消息。
4. 根据权利要求1所述的方法,其特征在于,所述接收转移的任务并进行计算处理包括如判断出所述转移的任务为未执行的任务,则直接计算处理所述转移的任务; 如判断出所述转移的任务是执行中的任务,则获取执行所述转移的任务时的中间数据 后,再计算处理所述转移的任务。
5. 根据权利要求1所述的方法,其特征在于,所述方法在进行计算处理后,还包括 如判断出剩余能力还大于剩余的需要转移的任务量时,向剩余的需要转移的任务量所对应的节点地址发送任务转移请求消息。
6. 根据权利要求1所述的方法,其特征在于,所述方法在将转移的任务发送给所述任 务转移请求消息所对应的节点之后,还包括通知MapReduce编程架构下的master回收垃圾空间。
7. 根据权利要求1所述的方法,其特征在于,所述将转移的任务发送给所述任务转移 请求消息所对应的节点包括将未被执行的任务发送给所述任务转移请求消息所对应的节点; 或将正在执行任务中的最后一个任务发送给所述任务转移请求消息所对应的节点。
8. 根据权利要求1所述的方法,其特征在于,所述方法在计算处理之后还包括根据 MapReduce编程架构下的map任务的个数自行设定多个reduce任务并进行reduce计算,将 所述多个reduce任务的计算结果根据用户指定需要输出的文件数量进行合并后输出最终 计算结果。
9. 一种基于MapReduce编程架构的任务分配装置,其特征在于,所述装置包括 判断单元,用于判断空闲或过载;发送单元,用于在所述判断单元判断出空闲时,发送空闲消息;接收单元,用于接收所述空闲消息的响应消息,所述响应消息包括需要转移的任务量 和所述任务量所对应的节点地址;存储单元,用于在所述需要转移的任务量小于剩余能力时,将所述需要转移的任务量对应的节点地址存储在过载节点列表中,所述发送单元还用于向所述过载节点列表中的一个节点地址发送任务转移请求消息, 所述接收单元还用于接收转移的任务; 计算单元,用于对所述转移的任务进行计算处理;所述判断单元判断出过载且未进行任务转移时;通知所述发送单元回复接收到的空闲 消息的响应消息;任务转移单元,用于在所述接收单元收到任务转移请求消息后,将转移的任务发送给 所述任务转移请求消息所对应的节点。
10. 根据权利要求9所述的装置,其特征在于,所述装置还包括,分片单元,用于预先将 基于M即Reduce编程架构下的底层存储系统的数据分块逻辑分片成多个逻辑小块,并以逻辑小块为任务执行和转移的基本单元。
11. 根据权利要求9所述的装置,其特征在于,所述发送单元还用于在判断单元判断出 剩余能力还大于剩余的需要转移的任务量时,向剩余的需要转移的任务量所对应的节点地 址发送任务转移请求消息。
12. 根据权利要求9所述的装置,其特征在于,所述装置还包括回收单元,用于在所述 发送单元将转移的任务发送给所述任务转移请求消息所对应的节点之后,通知MapReduce 编程架构下的master回收垃圾空间。
13. 根据权利要求9所述的装置,其特征在于,所述装置还包括合并单元,用于在所 述计算单元计算处理完之后,根据MapReduce编程架构下的map任务的个数自行设定多个 reduce任务并进行reduce计算,将所述多个reduce任务的计算结果根据用户指定需要输 出的文件数量进行合并后输出最终计算结果。
全文摘要
本发明实施方式提供了一种基于MapReduce编程架构的任务分配方法及装置,该方法及装置属于网络通信领域,该方法包括预先将数据分块逻辑分片成多个逻辑小块,并以逻辑小块为基本单元。在空闲时,发送空闲消息,并接收该空闲消息的响应消息,该响应消息包括需要转移的任务量和该任务量所对应的节点地址;将该需要转移的任务量对应的节点地址存储在过载节点列表中,并发送任务转移请求消息,接收转移的任务并进行计算处理。多个Reduce任务处理完成后,将处理结果按用户指定需要输出的文件数量进行合并。本发明具体实施方式
提供的方法及装置具有负载均衡,避免任务重复转移,防止系统抖动的优点。
文档编号H04L29/06GK101764835SQ200810241080
公开日2010年6月30日 申请日期2008年12月25日 优先权日2008年12月25日
发明者严哲峰, 李丽娟, 陈浩华 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1