一种进程迁移方法和装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种进程迁移方法和装置。
背景技术
随着计算机技术的飞速发展,越来越多的公司和研究机构开始关注在云计算环境下对大规模数据集的并行计算,Google在2004年发表的MapReduce编程模型,极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。
在传统的MapReduce框架中任务执行流程如下:在计算节点上运行映射进程Mapper或者归约进程Reducer,用以从存储节点加载原始数据并对该原始数据进行处理,得到处理结果;将处理结果回写到存储节点。由于现有技术中这种方案的缺陷在于进程运行速度受计算节点计算能力的限制。
发明内容
本发明提供一种进程迁移方法和装置,用于减少计算节点的计算能力对进程运行速度的限制,在一定程度上提高进程的运行速度。
第一方面,本发明实施例提供一种进程迁移方法,该方法包括:
第一节点暂停运行进程,得到所述进程的第一运行中间结果,所述第一节点为N个存储数据节点和计算节点中的一个节点,所述N为大于或者等于1的整数,所述N个存储数据节点由同一存储服务节点管理,所述存储服务节点和所述计算节点之间通信连接,所述进程为映射进程Maper或归约进程Reducer;
所述第一节点将所述第一运行中间结果发送给第二节点,进行所述进程的第一次迁移,所述第二节点为所述第一节点将所述进程的运行中间结果发送给所述第二节点时,N个存储数据节点和计算节点中计算能力最强的节点,所述第二节点和所述第一节点是不相同的节点;
所述第二节点根据所述第一运行中间结果,恢复运行所述进程。
结合第一方面,在第一方面的第一种实施方式下,所述方法还包括:
所述第二节点暂停运行所述进程,得到所述进程的第二运行中间结果;
所述第二节点将所述第二运行中间结果发送给第三节点,进行所述进程的第二次迁移,所述第二次迁移和所述第一次迁移之间的时间间隔为T,所述T大于或者等于1秒且小于或者等于180秒;
所述第三节点根据所述第二运行中间结果,恢复运行所述进程。
第二方面,本发明实施例提供一种进程迁移系统,包括第一节点和第二节点,其中:
所述第一节点用于暂停运行进程,得到所述进程的第一运行中间结果,所述第一节点为N个存储数据节点和计算节点中的一个节点,所述N为大于或者等于1的整数,所述N个存储数据节点由同一存储服务节点管理,所述存储服务节点和所述计算节点之间通信连接,所述进程为映射进程Maper或归约进程Reducer;
所述第一节点还用于将所述第一运行中间结果发送给所述第二节点,进行所述进程的第一次迁移,所述第二节点为所述第一节点将所述进程的运行中间结果发送给所述第二节点时,N个存储数据节点和计算节点中计算能力最强的节点,所述第二节点和所述第一节点是不相同的节点;
所述第二节点用于根据所述第一运行中间结果,恢复运行所述进程。
结合第二方面,在第二方面的第一种实施方式下,所述进程迁移系统还包括第三节点:
所述第二节点还用于暂停运行所述进程,得到所述进程的第二运行中间结果;以及,将所述第二运行中间结果发送给第三节点,进行所述进程的第二次迁移,所述第二次迁移和所述第一次迁移之间的时间间隔为T,所述T大于或者等于1秒且小于或者等于180秒;
所述第三节点用于根据所述第二运行中间结果,恢复运行所述进程。
第三方面,本发明实施例提供一种进程管理方法,该方法包括:
从N个存储数据节点和计算节点中选择出计算能力最强的第二节点,所述N为大于或者等于1的整数,所述N个存储数据节点中每一存储数据节点均用于存储数据信息,所述N个存储数据节点由同一存储服务节点管理,所述存储服务节点和所述计算节点之间通信连接,所述进程为映射进程Maper或归约进程Reducer;
在所述第二节点和第一节点不相同时,向所述第一节点发送第一暂停指令,用于指示所述第一节点暂停运行进程,得到所述进程的第一运行中间结果,以及将所述第一运行中间结果发送所述第二节点,所述第一节点为所述N个存储数据节点和所述计算节点中的一个节点;
向所述第二节点发送第一恢复指令,用于指示所述第二节点根据所述第一运行中间结果,恢复运行所述进程。
结合第三方面,在第三方面的第一种实施方式下,所述方法还包括:
从所述N个存储数据节点和所述计算节点中选择出计算能力最强的第三节点,所述选择出计算能力最强的第三节点和所述选择出计算能力最强的第二节点之间的时间间隔为T,所述T大于或者等于1秒且小于或者等于180秒;
在所述第三节点和所述第二节点不相同时,向所述第二节点发送第二暂停指令,用于指示所述第二节点暂停运行所述进程,得到所述进程的第二运行中间结果,以及将所述第二运行中间结果发送所述第三节点;
向所述第三节点发送第二恢复指令,用于指示所述第三节点恢复运行所述进程。
结合第三方面或第三方面的第一种实施方式,在第三方面的第二种实施方式下,所述从N个存储数据节点和计算节点中选择出计算能力最强的第二节点,具体包括:
获取所述N个存储数据节点中每一存储数据节点的剩余计算能力kc1(x),x取[1,N]范围内的整数;
获取所述计算节点与所述存储服务节点之间的剩余数据传输能力pj1和所述计算节点的剩余计算能力kj1;
根据所述剩余数据传输能力pj1和所述计算节点的剩余计算能力kj1确定所述计算节点的可用计算能力mj1,
根据所述N个存储数据节点中每一存储数据节点的剩余计算能力kc1(x)和所述计算节点的可用计算能力mj1,从所述N个存储数据节点和所述计算节点中选择出计算能力最强的所述第二节点。
结合第三方面或第三方面的第一种实施方式,在第三方面的第三种实施方式下,所述从N个存储数据节点和计算节点中选择出计算能力最强的第二节点,具体包括:
获取代表存储数据节点的剩余计算能力kc1,d,所述代表存储数据节点是指所述N个存储数据节点中剩余计算能力最大的存储数据节点;
获取所述计算节点与所述存储服务节点之间的剩余数据传输能力pj1和所述计算节点的剩余计算能力kj1;
根据所述剩余数据传输能力pj1和所述计算节点的剩余计算能力kj1确定所述计算节点的可用计算能力mj1;
根据所述代表存储数据节点的剩余计算能力kc1,d和所述计算节点的可用计算能力mj1,从所述代表存储数据节点和所述计算节点中选择出计算能力较强的所述第二节点。
结合第三方面的第一种实施方式至第三方面的第三种实施方式中任意一种实施方式,在第三方面的第四种实施方式下,所述从所述N个存储数据节点和所述计算节点中选择出计算能力最强的第三节点,具体包括:
获取所述N个存储数据节点中每一存储数据节点的剩余计算能力kc2(x),x取[1,N]范围内的整数;
获取所述计算节点与所述存储服务节点之间的剩余数据传输能力pj2和所述计算节点的剩余计算能力kj2;
根据所述剩余数据传输能力pj2和所述计算节点的剩余计算能力kj2确定所述计算节点的可用计算能力mj2,
根据所述N个存储数据节点中每一存储数据节点的剩余计算能力kc2(x)和所述计算节点的可用计算能力mj2,从所述N个存储数据节点和所述计算节点中选择出计算能力最强的所述第三节点。
结合第三方面的第一种实施方式至第三方面的第三种实施方式中任意一种实施方式,在第三方面的第五种实施方式下,所述从所述N个存储数据节点和所述计算节点中选择出计算能力最强的第三节点,具体包括:
获取代表存储数据节点的剩余计算能力kc2,d,所述代表存储数据节点是指所述N个存储数据节点中剩余计算能力最大的存储数据节点;
获取所述计算节点与所述存储服务节点之间的剩余数据传输能力pj2和所述计算节点的剩余计算能力kj2;
根据所述剩余数据传输能力pj2和所述计算节点的剩余计算能力kj2确定所述计算节点的可用计算能力mj2;
根据所述代表存储数据节点的剩余计算能力kc2,d和所述计算节点的可用计算能力mj2,从所述代表存储数据节点和所述计算节点中选择出计算能力较强的所述第三节点。
第四方面,本发明实施例提供一种进程管理装置,包括:
选择单元,用于从N个存储数据节点和计算节点中选择出计算能力最强的第二节点,所述N为大于或者等于1的整数,所述N个存储数据节点中每一存储数据节点均用于存储数据信息,所述N个存储数据节点由同一存储服务节点管理,所述存储服务节点和所述计算节点之间通信连接,所述进程为映射进程Maper或归约进程Reducer;
在所述第二节点和第一节点不相同时,
暂停指令发送单元,用于向所述第一节点发送第一暂停指令,以指示所述第一节点暂停运行进程,得到所述进程的第一运行中间结果,以及将所述第一运行中间结果发送所述第二节点,所述第一节点为所述N个存储数据节点和所述计算节点中的一个节点;
恢复指令发送单元,用于向所述第二节点发送第一恢复指令,以指示所述第二节点根据所述第一运行中间结果,恢复运行所述进程。
结合第四方面,在第四方面的第一种实施方式下,所述选择单元还用于从所述N个存储数据节点和所述计算节点中选择出计算能力最强的第三节点,所述选择出计算能力最强的第三节点和所述选择出计算能力最强的第二节点之间的时间间隔为T,所述T大于或者等于1秒且小于或者等于180秒;
在所述第三节点和所述第二节点不相同时,
所述暂停指令发送单元还用于向所述第二节点发送第二暂停指令,以指示所述第二节点暂停运行所述进程,得到所述进程的第二运行中间结果,以及将所述第二运行中间结果发送所述第三节点;
所述恢复指令发送单元还用于向所述第三节点发送第二恢复指令,以指示所述第三节点恢复运行所述进程。
结合第四方面或第四方面的第一种实施方式,在第四方面的第二种实施方式下,
所述选择单元具体用于:
获取所述N个存储数据节点中每一存储数据节点的剩余计算能力kc1(x),x取[1,N]范围内的整数;
获取所述计算节点与所述存储服务节点之间的剩余数据传输能力pj1和所述计算节点的剩余计算能力kj1;
根据所述剩余数据传输能力pj1和所述计算节点的剩余计算能力kj1确定所述计算节点的可用计算能力mj1,
根据所述N个存储数据节点中每一存储数据节点的剩余计算能力kc1(x)和所述计算节点的可用计算能力mj1,从所述N个存储数据节点和所述计算节点中选择出计算能力最强的所述第二节点。
结合第四方面或第四方面的第一种实施方式,在第四方面的第三种实施方式下,
所述选择单元具体用于:
获取代表存储数据节点的剩余计算能力kc1,d,所述代表存储数据节点是指所述N个存储数据节点中剩余计算能力最大的存储数据节点;
获取所述计算节点与所述存储服务节点之间的剩余数据传输能力pj1和所述计算节点的剩余计算能力kj1;
根据所述剩余数据传输能力pj1和所述计算节点的剩余计算能力kj1确定所述计算节点的可用计算能力mj1;
根据所述代表存储数据节点的剩余计算能力kc1,d和所述计算节点的可用计算能力mj1,从所述代表存储数据节点和所述计算节点中选择出计算能力较强的所述第二节点。
结合第四方面的第一种实施方式至第四方面的第三种实施方式中任意一种实施方式,在第四方面的第四种实施方式下,
所述选择单元具体用于:
获取所述N个存储数据节点中每一存储数据节点的剩余计算能力kc2(x),x取[1,N]范围内的整数;
获取所述计算节点与所述存储服务节点之间的剩余数据传输能力pj2和所述计算节点的剩余计算能力kj2;
根据所述剩余数据传输能力pj2和所述计算节点的剩余计算能力kj2确定所述计算节点的可用计算能力mj2,
根据所述N个存储数据节点中每一存储数据节点的剩余计算能力kc2(x)和所述计算节点的可用计算能力mj2,从所述N个存储数据节点和所述计算节点中选择出计算能力最强的所述第三节点。
结合第四方面的第一种实施方式至第四方面的第三种实施方式中任意一种实施方式,在第四方面的第五种实施方式下,
所述选择单元具体用于:
获取代表存储数据节点的剩余计算能力kc2,d,所述代表存储数据节点是指所述N个存储数据节点中剩余计算能力最大的存储数据节点;
获取所述计算节点与所述存储服务节点之间的剩余数据传输能力pj2和所述计算节点的剩余计算能力kj2;
根据所述剩余数据传输能力pj2和所述计算节点的剩余计算能力kj2确定所述计算节点的可用计算能力mj2;
根据所述代表存储数据节点的剩余计算能力kc2,d和所述计算节点的可用计算能力mj2,从所述代表存储数据节点和所述计算节点中选择出计算能力较强的所述第三节点。
第五方面,本发明实施例还提供一种通信系统,所述通信系统包括第四方面或者第四方面的第一种实施方式至第四方面的第五种实施方式中任意一种实施方式所述的进程管理装置、第一节点和第二节点,其中:
所述进程管理装置用于从N个存储数据节点和计算节点中选择出计算能力最强的第二节点,所述N为大于或者等于1的整数,所述N个存储数据节点中每一存储数据节点均用于存储数据信息,所述N个存储数据节点由同一存储服务节点管理,所述存储服务节点和所述计算节点之间通信连接,所述进程为映射进程Maper或归约进程Reducer;
在所述第二节点和第一节点不相同时,所述进程管理装置还用于向所述第一节点发送第一暂停指令;
所述第一节点用于根据所述第一暂停指令暂停运行进程,得到所述进程的第一运行中间结果,并将所述第一运行中间结果发送所述第二节点,所述第一节点为所述N个存储数据节点和所述计算节点中的一个节点;
所述进程管理装置还用于向所述第二节点发送第一恢复指令;
所述第二节点用于根据所述第一恢复指令对所述第一运行中间结果进行恢复处理,以恢复运行所述进程。
结合第五方面,在第五方面的第一种实施方式下,还包括第三节点:
所述进程管理装置还用于从所述N个存储数据节点和所述计算节点中选择出计算能力最强的第三节点,所述选择出计算能力最强的第三节点和所述选择出计算能力最强的第二节点之间的时间间隔为T,所述T大于或者等于1秒且小于或者等于180秒;
在所述第三节点和所述第二节点不相同时,
所述进程管理装置还用于向所述第二节点发送第二暂停指令;
所述第二节点用于根据所述第二暂停指令暂停运行进程,得到所述进程的第二运行中间结果,并将所述第二运行中间结果发送给所述第三节点;
所述进程管理装置还用于向所述第三节点发送第二恢复指令;
所述第三节点用于根据所述第二恢复指令对所述第二运行中间结果进行恢复处理,以恢复运行所述进程。
采用本发明公开的进程管理方法,将进程从第一节点迁移到第二节点,其中该第二节点是将该进程从第一节点迁移到第二节点时,N个存储数据节点和计算节点中计算能力最强的节点,然后在第二节点上继续运行该进程。采用本发明实施例提供的技术方案,进程并不限于一定要运行在某一节点(比如第一节点)上,如果第一节点的计算能力比第二节点弱,且第二节点为N个存储数据节点和计算节点中计算能力最强的节点,则将进程迁移到该第二节点上运行。所以,使用本方案,相对于现有技术来说,可以减少进程运行速度对计算节点的计算能力的依赖,并且由于该进程是被迁移到计算能力最强的节点上继续运行的,所以可在一定程度上提升该进程的运行速度。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的应用场景的结构示意图;
图2为本发明实施例提供的一种进程迁移方法的流程示意图;
图3为本发明实施例提供的一种进程迁移系统的结构示意图;
图4a为本发明实施例提供的一种进程管理方法的流程示意图;
图4b为本发明实施例提供的另一种进程管理方法的流程示意图;
图5为本发明实施例提供的一种进程管理装置的结构示意图;
图6a为本发明实施例提供的一种通信系统的结构示意图;
图6b为本发明实施例提供的另一种通信系统的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本发明的应用场景如图1所示,包括计算侧和存储侧,所述计算侧包括计算节点;所述存储侧包括一个存储服务节点和N个存储数据节点,其中,N≥1且N为整数,所述N个存储数据节点包括存储数据节点1、存储数据节点2、…….、存储数据节点n。所述存储服务节点负责统计所述N个存储数据节点中每一存储数据节点的数据并将该数据进行汇总,以及负责处理进程在所述N个存储数据节点之间的调度放置。
MapReduce是Google提出的一个软件架构,用于大规模数据集(大于1TB)的并行运算。当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(化简)函数,用来保证所有映射的键值对中的每一个共享相同的键组。所以说,MapReduce编程模型包括两个进程,分别是映射进程Mapper和归约进程Reducer,下面以运行映射进程Mapper为例说明本发明实施例提供的技术方案。
结合图1所示的应用场景并参阅附图2,本发明实施例提供的一种进程迁移方法执行步骤如下:
S201、第一节点暂停运行进程,得到所述进程的第一运行中间结果,所述第一节点为N个存储数据节点和计算节点中的一个节点,所述N为大于或者等于1的整数,所述N个存储数据节点由同一存储服务节点管理,所述存储服务节点和所述计算节点之间通信连接,所述进程为映射进程Maper或归约进程Reducer;
应当理解的是,所述第一节点为所述N个数据节点和所述计算节点中的一个节点,是指该第一节点可以为计算节点,也可以为N个数据节点中的其中一个。
所述第一节点暂停运行进程,得到所述进程的第一运行中间结果,具体是指所述第一节点暂停运行进程,并将所述进程的运行状态进行持久化处理,得到所述进程的第一运行中间结果。
S203、所述第一节点将所述第一运行中间结果发送给第二节点,进行所述进程的第一次迁移,所述第二节点为所述第一节点将所述进程的运行中间结果发送给所述第二节点时,N个存储数据节点和计算节点中计算能力最强的节点,所述第二节点和所述第一节点是不相同的节点;
应当理解的是,所述第二节点也可以是计算节点,或者是N个数据节点中的其中一个。其中,第一节点和第二节点是不同的节点,因为如果第一节点和第二节点为相同的节点,则就不涉及将进程从第一节点迁移到第二节点的问题了。
S205、所述第二节点根据所述第一运行中间结果,恢复运行所述进程。
应当知道的是,通过上述步骤S201、S203和S205,实现将进程从第一节点迁移到第二节点。
S206、所述第二节点暂停运行所述进程,得到所述进程的第二运行中间结果;
S207、所述第二节点将所述第二运行中间结果发送给第三节点,进行所述进程的第二次迁移,所述第二次迁移和所述第一次迁移之间的时间间隔为T,所述T大于或者等于1秒且小于或者等于180秒;
应当理解的是,第三节点可以是计算节点,或者是N个数据节点中的其中一个,第三节点虽然和第二节点是不相同的节点,因为若第三节点和第二节点为同一节点,就不会涉及到进程迁移的问题了。但是第三节点和第一节点可以是相同的节点。
优选的,所述第二次迁移和所述第一次迁移之间的时间间隔为T,取决于所述第二节点的中央处理器CPU的使用率和所述第二节点的内存使用率,具体的,所述时间间隔为T的设置要遵循下述原则:
时间间隔T(秒) |
CPU使用率 |
内存使用率 |
1 |
<50% |
<70% |
5 |
<70% |
<80% |
20 |
<80% |
<85% |
60 |
<90% |
<90% |
180 |
>90% |
>90% |
需要说明的是,所述时间间隔T的设置也可以是固定不变的,比如,所述时间间隔T固定的为5s;也可以是没有任何规则的变化的,总之,只要满足1s≤T≤180s即可。
S208、所述第三节点根据所述第二运行中间结果,恢复运行所述进程。
应当知道的是,通过步骤S206、S207和S208,实现将进程从第二节点迁移到第三节点。
值得注意的是,在所述进程运行的整个过程中,可以仅仅涉及到从第一节点迁移到第二节点和从第二节点迁移到第三节点的两次迁移,也可以涉及3次、4次等多次迁移,本发明实施例对此不做限制性规定,不管所述进程在其运行的整个过程中迁移了多少次,遵循的原理都是一致的,都是迁移到在该迁移动作发生时,所述N个存储数据节点和所述计算节点中计算能力最强的节点。
需要说明的是,为了进一步提高所述进程的运行速度,该进程开始运行时,就是运行在该进程开始运行时所述N个存储数据节点和所述计算节点中计算能力最强的节点。
可知,本发明实施例提供的进程迁移方法,包括:将进程从第一节点迁移到第二节点,并在第二节点上继续运行。从而相对于现有技术提供的方案中进程固定的运行在计算节点上来说,本发明实施例提供的进程迁移方法,减少进程运行速度对计算节点的计算能力的依赖;再者,该第二节点为将进程从第一节点迁移到第二节点时,N个存储数据节点和计算节点中计算能力最强的节点,所以,将进程从第一节点迁移到第二节点将会提升高该进程的运行速度。
所以,使用本方案,相对于现有技术来说,可以减少进程运行速度对计算节点的计算能力的依赖,并且由于该进程是被迁移到计算能力最强的节点上继续运行的,所以可在一定程度上提升该进行的运行速度。
实施例二
参阅附图3,为本发明实施例提供的一种进程迁移系统,实施例一所述的进程迁移方法可以用在本实施例提供的进程迁移系统中。且本发明实施例所述的进程迁移系统可以融合在图1所述的应用场景图中。
具体的,参阅附图3,可知本发明实施例提供的进程迁移系统包括第一节点31和第二节点32,具体的:
所述第一节点31用于暂停运行进程,得到所述进程的第一运行中间结果,所述第一节点31为N个存储数据节点和计算节点中的一个节点,所述N为大于或者等于1的整数,所述N个存储数据节点由同一存储服务节点管理,所述存储服务节点和所述计算节点之间通信连接,所述进程为映射进程Maper或归约进程Reducer;
应当理解的是,第一节点31为所述N个数据节点和所述计算节点中的一个节点,是指该第一节点31可以为计算节点,也可以为N个数据节点中的其中一个。
第一节点31用于暂停运行进程,得到所述进程的第一运行中间结果,具体是指第一节点31暂停运行进程,并将所述进程的运行状态进行持久化处理,得到所述进程的第一运行中间结果。
所述第一节点31还用于将所述第一运行中间结果发送给所述第二节点32,进行所述进程的第一次迁移,所述第二节点32为所述第一节点31将所述进程的运行中间结果发送给所述第二节点32时,N个存储数据节点和计算节点中计算能力最强的节点,所述第二节点32和所述第一节点31是不相同的节点;
应当理解的是,第二节点32也可以是计算节点,或者是N个数据节点中的其中一个。其中,第一节点31和第二节点32是不同的节点,因为如果第一节点31和第二节点32为相同的节点,则就不涉及将进程从第一节点31迁移到第二节点32的问题了。
所述第二节点32用于根据所述第一运行中间结果,恢复运行所述进程。
应当理解的是,第二节点32恢复运行所述进程,即是指所述进程从第一节点31迁移到第二节点32上。
作为本发明的另一个实施例,参阅附图3,所述进程迁移系统还包括第三节点33:
所述第二节点32还用于暂停运行所述进程,得到所述进程的第二运行中间结果;以及,将所述第二运行中间结果发送给第三节点33,进行所述进程的第二次迁移,所述第二次迁移和所述第一次迁移之间的时间间隔为T,所述T大于或者等于1秒且小于或者等于180秒;
应当理解的是,第三节点33可以是计算节点,或者是N个数据节点中的其中一个,第三节点33虽然和第二节点32是不相同的节点,因为若第三节点33和第二节点32为同一节点,就不会涉及到进程迁移的问题了。但是第三节点33和第一节点31可以是相同的节点。
优选的,所述第二次迁移和所述第一次迁移之间的时间间隔为T,取决于所述第二节点的中央处理器CPU的使用率和所述第二节点的内存使用率,具体的,所述时间间隔为T的设置要遵循下述原则:
时间间隔T(秒) |
CPU使用率 |
内存使用率 |
1 |
<50% |
<70% |
5 |
<70% |
<80% |
20 |
<80% |
<85% |
60 |
<90% |
<90% |
需要说明的是,所述时间间隔T的设置也可以是固定不变的,比如,所述时间间隔T固定的为5s;也可以是没有任何规则的变化的,总之,只要满足1s≤T≤180s即可。
所述第三节点33用于根据所述第二运行中间结果,恢复运行所述进程。
应当理解的是,第三节点33恢复运行所述进程,即是指所述进程从第二节点32迁移到第三节点33上。
值得注意的是,在所述进程运行的整个过程中,可以仅仅涉及到从第一节点迁移到第二节点和从第二节点迁移到第三节点的两次迁移,也可以涉及3次、4次等多次迁移,本发明实施例对此不做限制性规定,不管所述进程在其运行的整个过程中迁移了多少次,遵循的原理都是一致的,都是迁移到在该迁移动作发生时,所述N个存储数据节点和所述计算节点中计算能力最强的节点。
需要说明的是,为了进一步提高所述进程的运行速度,该进程开始运行时,就是运行在该进程开始运行时所述N个存储数据节点和所述计算节点中计算能力最强的节点。
可知,本发明实施例提供的进程迁移系统,包括:第一节点和第二节点,其中进程从第一节点迁移到第二节点,并在第二节点上继续运行,该第二节点是进程从第一节点迁移到第二节点时,N个存储数据节点和计算节点中计算能力最强的节点。从而相对于现有技术提供的方案中进程固定的运行在计算节点上来说,采用本发明实施例提供的进程迁移系统,减少进程运行速度对计算节点的计算能力的依赖;再者,该第二节点为进程从第一节点迁移到第二节点时,N个存储数据节点和计算节点中计算能力最强的节点,所以,将进程从第一节点迁移到第二节点将会提升高该进程的运行速度。
所以,使用本方案提供的进程迁移系统,相对于现有技术来说,可以减少进程运行速度对计算节点的计算能力的依赖,并且可在一定程度上提升该进行的运行速度。
实施例三
参阅附图4a,为本发明实施例提供的一种进程管理方法的流程示意图。所述进程管理方法可以用在图1所示的应用场景中。具体的,如图4a所示,所述进程管理方法包括下述步骤:
S401、从N个存储数据节点和计算节点中选择出计算能力最强的第二节点,所述N为大于或者等于1的整数,所述N个存储数据节点中每一存储数据节点均用于存储数据信息,所述N个存储数据节点由同一存储服务节点管理,所述存储服务节点和所述计算节点之间通信连接,所述进程为映射进程Maper或归约进程Reducer;
作为本发明的一个实施例,所述从N个存储数据节点和计算节点中选择出计算能力最强的第二节点,具体包括下述步骤:
步骤1、获取所述N个存储数据节点中每一存储数据节点的剩余计算能力kc1(x),x取[1,N]范围内的整数;
具体的,所述每一存储数据节点的剩余计算能力kc1(x),是指每一存储数据节点的CPU的剩余处理能力kc1(x)。
步骤2、获取所述计算节点与所述存储服务节点之间的剩余数据传输能力pj1和所述计算节点的剩余计算能力kj1;
具体的,所述计算节点与所述存储服务节点之间的剩余数据传输能力pj1,指的是所述计算节点与所述存储服务节点之间的剩余网络带宽,假设所述计算节点与所述存储服务节点之间的网络带宽为A,已经被使用的网络带宽为B,则剩余的网络带宽为A-B。
所述计算节点的剩余计算能力kj1,是指所述计算节点的CPU的剩余处理能力。
步骤3、根据所述剩余数据传输能力pj1和所述计算节点的剩余计算能力kj1确定所述计算节点的可用计算能力mj1,
需要说明的是,根据所述剩余数据传输能力pj1和所述计算节点的剩余计算能力kj1确定所述计算节点的可用计算能力mj1,具体是指,在所述剩余数据传输能力pj1小于所述计算节点的剩余计算能力kj1时,所述计算节点的可用计算能力mj1取决于所述剩余数据传输能力pj1;在所述剩余数据传输能力pj1大于所述计算节点的剩余计算能力kj1时,所述计算节点的可用计算能力mj1取决于所述计算节点的剩余计算能力kj1。
值得注意的是,实际应用中,所述剩余数据传输能力pj1的单位和所述计算节点的剩余计算能力kj1的单位是不一致,为了便于比较,首先需要将所述剩余数据传输能力pj1和所述计算节点的剩余计算能力kj1统一到一个可比较的维度,比如所述剩余数据传输能力pj1用单位时间内可处理的数据块的数目表示,所述计算节点的剩余计算能力kj1也用单位时间内可处理的数据块的数目表示,通过这种方式,实现所述剩余数据传输能力pj1和所述计算节点的剩余计算能力kj1之间的比较。
为了保证连续性,针对所述剩余数据传输能力pj1等于所述计算节点的剩余计算能力kj1的情况,可以按照所述剩余数据传输能力pj1小于所述计算节点的剩余计算能力kj1的情形进行处理,也可以按照所述剩余数据传输能力pj1大于所述计算节点的剩余计算能力kj1的情形进行处理。
步骤4、根据所述N个存储数据节点中每一存储数据节点的剩余计算能力kc1(x)和所述计算节点的可用计算能力mj1,从所述N个存储数据节点和所述计算节点中选择出计算能力最强的所述第二节点。
具体的,从所述N个存储数据节点和所述计算节点中选择出计算能力最强的所述第二节点,可以是直接从所述N个存储数据节点和所述计算节点中选择出计算能力最强的所述第二节点;也可以是先从所述N个存储数据节点选择计算能力最强的存储数据节点,然后通过比较所述计算能力最强的存储数据节点的计算能力和所述计算节点的可用计算能力mj1,从中确定出计算能力最强的所述第二节点。
需要说明的是,从所述N个存储数据节点和所述计算节点中选择出计算能力最强的所述第二节点的方法是多样的,本发明对此不做限制性规定,任何能够实现本发明发明目的的方案均在本发明的保护范围内。
作为本发明的另一个实施例,所述从N个存储数据节点和计算节点中选择出计算能力最强的第二节点,具体包括下述步骤:
步骤1、获取代表存储数据节点的剩余计算能力kc1,d,所述代表存储数据节点是指所述N个存储数据节点中剩余计算能力最大的存储数据节点;
需要说明的是,步骤1具体包括下述步骤:从所述N个存储数据节点中选择剩余计算能力最大的存储数据节点为所述代表存储数据节点;获取所述代表存储数据节点的剩余计算能力kc1,d。或者,步骤1具体包括下述步骤:获取所述N个存储数据节点中每一存储数据节点的剩余计算能力;根据所述N个存储数据节点中每一存储数据节点的剩余计算能力选择剩余计算能力最大的存储数据节点为所述代表存储数据节点。
所述代表存储数据节点的剩余计算能力kc1,d,是指所述代表存储数据节点的CPU的剩余处理能力kc1,d。
步骤2、获取所述计算节点与所述存储服务节点之间的剩余数据传输能力pj1和所述计算节点的剩余计算能力kj1;
具体的,所述计算节点与所述存储服务节点之间的剩余数据传输能力pj1,指的是所述计算节点与所述存储服务节点之间的剩余网络带宽,假设所述计算节点与所述存储服务节点之间的网络带宽为A,已经被使用的网络带宽为B,则剩余的网络带宽或者剩余数据传输能力为A-B。
所述计算节点的剩余计算能力kj1,是指所述计算节点的CPU的剩余处理能力。
步骤3、根据所述剩余数据传输能力pj1和所述计算节点的剩余计算能力kj1确定所述计算节点的可用计算能力mj1;
需要说明的是,根据所述剩余数据传输能力pj1和所述计算节点的剩余计算能力kj1确定所述计算节点的可用计算能力mj1,具体是指,在所述剩余数据传输能力pj1小于所述计算节点的剩余计算能力kj1时,所述计算节点的可用计算能力mj1取决于所述剩余数据传输能力pj1;在所述剩余数据传输能力pj1大于所述计算节点的剩余计算能力kj1时,所述计算节点的可用计算能力mj1取决于所述计算节点的剩余计算能力kj1。
值得注意的是,实际应用中,所述剩余数据传输能力pj1的单位和所述计算节点的剩余计算能力kj1的单位是不一致,为了便于比较,首先需要将所述剩余数据传输能力pj1和所述计算节点的剩余计算能力kj1统一到一个可比较的维度,比如所述剩余数据传输能力pj1用单位时间内可处理的数据块的数目表示,所述计算节点的剩余计算能力kj1也用单位时间内可处理的数据块的数目表示,通过这种方式,实现所述剩余数据传输能力pj1和所述计算节点的剩余计算能力kj1之间的比较。
为了保证连续性,针对所述剩余数据传输能力pj1等于所述计算节点的剩余计算能力kj1的情况,可以按照所述剩余数据传输能力pj1小于所述计算节点的剩余计算能力kj1的情形进行处理,也可以按照所述剩余数据传输能力pj1大于所述计算节点的剩余计算能力kj1的情形进行处理。
步骤4、根据所述代表存储数据节点的剩余计算能力kc1,d和所述计算节点的可用计算能力mj1,从所述代表存储数据节点和所述计算节点中选择出计算能力较强的所述第二节点。
需要说明的是,此处也涉及到先将所述代表存储数据节点的剩余计算能力kc1,d和所述计算节点的可用计算能力mj1统一到一个可比较的维度,然后,再通过比较所述代表存储数据节点的剩余计算能力kc1,d和所述计算节点的可用计算能力mj1的大小,选择所述第二节点。
S403、在所述第二节点和第一节点不相同时,向所述第一节点发送第一暂停指令,用于指示所述第一节点暂停运行进程,得到所述进程的第一运行中间结果,以及将所述第一运行中间结果发送所述第二节点,所述第一节点为所述N个存储数据节点和所述计算节点中的一个节点;
应当理解的是,如果所述所述第二节点和第一节点是相同节点,则说明所述进程运行的当前节点,也即第一节点,即是所述N个存储数据节点和所述计算节点中计算能力最强的节点,说明所述进程的运行速度在整个Mapreduce计算模型中已经达到了最大值,则此时就不用再迁移了。
只有在所述所述第二节点和第一节点是不相同的节点,说明所述进程当前运行的节点不是所述N个存储数据节点和所述计算节点中计算能力最强的节点,进一步说明了所述进程的运行速度不是最优的,此时才涉及到要将所述进程迁移到所述第二节点上,以提高所述进程的运行速度的问题。
S405、向所述第二节点发送第一恢复指令,用于指示所述第二节点根据所述第一运行中间结果,恢复运行所述进程。
截止到该步,采用本发明实施例提供的进程管理方法,实现了将进程从所述第一节点迁移到所述第二节点,并在所述第二节点上继续运行。
作为本发明的再一个实施例,参阅附图4b,所述进程管理方法除了包括步骤S411、S413和S415外,还包括步骤S416、S417和S418,其中,步骤S411、S413和S415和附图4a中的步骤S401、S403和S405相同,此处不再赘述,步骤S416、S417和S418的具体内容如下:
S416、从所述N个存储数据节点和所述计算节点中选择出计算能力最强的第三节点,所述选择出计算能力最强的第三节点和所述选择出计算能力最强的第二节点之间的时间间隔为T,所述T大于或者等于1秒且小于或者等于180秒;
优选的,所述时间间隔为T的大小取决于所述第二节点的中央处理器CPU的使用率和所述第二节点的内存使用率,具体的,所述时间间隔为T的设置要遵循下述原则:
时间间隔T(秒) |
CPU使用率 |
内存使用率 |
1 |
<50% |
<70% |
5 |
<70% |
<80% |
20 |
<80% |
<85% |
60 |
<90% |
<90% |
180 |
>90% |
>90% |
需要说明的是,所述时间间隔T的设置也可以是固定不变的,比如,所述时间间隔T固定的为5s;也可以是没有任何规则的变化的,总之,只要满足1s≤T≤180s即可。
值得注意的是,作为本发明的再一个实施例,所述从所述N个存储数据节点和所述计算节点中选择出计算能力最强的第三节点,具体包括下述步骤:
步骤1、获取所述N个存储数据节点中每一存储数据节点的剩余计算能力kc2(x),x取[1,N]范围内的整数;
具体的,所述每一存储数据节点的剩余计算能力kc2(x),是指每一存储数据节点的CPU的剩余处理能力kc2(x)。
步骤2、获取所述计算节点与所述存储服务节点之间的剩余数据传输能力pj2和所述计算节点的剩余计算能力kj2;
具体的,所述计算节点与所述存储服务节点之间的剩余数据传输能力pj2,指的是所述计算节点与所述存储服务节点之间的剩余网络带宽,假设所述计算节点与所述存储服务节点之间的网络带宽为C,已经被使用的网络带宽为D,则剩余的网络带宽为C-D。
所述计算节点的剩余计算能力kj2,是指所述计算节点的CPU的剩余处理能力。
步骤3、根据所述剩余数据传输能力pj2和所述计算节点的剩余计算能力kj2确定所述计算节点的可用计算能力mj2,
需要说明的是,根据所述剩余数据传输能力pj2和所述计算节点的剩余计算能力kj2确定所述计算节点的可用计算能力mj2,具体是指,在所述剩余数据传输能力pj2小于所述计算节点的剩余计算能力kj2时,所述计算节点的可用计算能力mj2取决于所述剩余数据传输能力pj2;在所述剩余数据传输能力pj2大于所述计算节点的剩余计算能力kj2时,所述计算节点的可用计算能力mj2取决于所述计算节点的剩余计算能力kj1。
值得注意的是,实际应用中,所述剩余数据传输能力pj2的单位和所述计算节点的剩余计算能力kj2的单位是不一致,为了便于比较,首先需要将所述剩余数据传输能力pj2和所述计算节点的剩余计算能力kj2统一到一个可比较的维度,比如所述剩余数据传输能力pj2用单位时间内可处理的数据块的数目表示,所述计算节点的剩余计算能力kj2也用单位时间内可处理的数据块的数目表示,通过这种方式,实现所述剩余数据传输能力pj2和所述计算节点的剩余计算能力kj2之间的比较。
为了保证连续性,针对所述剩余数据传输能力pj2等于所述计算节点的剩余计算能力kj2的情况,可以按照所述剩余数据传输能力pj2小于所述计算节点的剩余计算能力kj2的情形进行处理,也可以按照所述剩余数据传输能力pj2大于所述计算节点的剩余计算能力kj2的情形进行处理。
步骤4、根据所述N个存储数据节点中每一存储数据节点的剩余计算能力kc2(x)和所述计算节点的可用计算能力mj2,从所述N个存储数据节点和所述计算节点中选择出计算能力最强的所述第三节点。
具体的,从所述N个存储数据节点和所述计算节点中选择出计算能力最强的所述第三节点,可以是直接从所述N个存储数据节点和所述计算节点中选择出计算能力最强的所述第三节点;也可以是先从所述N个存储数据节点选择计算能力最强的存储数据节点,然后通过比较所述计算能力最强的存储数据节点的计算能力和所述计算节点的可用计算能力mj2,从中确定出计算能力最强的所述第三节点。
需要说明的是,从所述N个存储数据节点和所述计算节点中选择出计算能力最强的所述第三节点的方法是多样的,本发明对此不做限制性规定,任何能够实现本发明发明目的的方案均在本发明的保护范围内。
作为本发明的再一个实施例,所述从所述N个存储数据节点和所述计算节点中选择出计算能力最强的第三节点,具体包括下述步骤:
步骤1、获取代表存储数据节点的剩余计算能力kc2,d,所述代表存储数据节点是指所述N个存储数据节点中剩余计算能力最大的存储数据节点;
需要说明的是,步骤1具体包括下述步骤:从所述N个存储数据节点中选择剩余计算能力最大的存储数据节点为所述代表存储数据节点;获取所述代表存储数据节点的剩余计算能力kc2,d。或者,步骤1具体包括下述步骤:获取所述N个存储数据节点中每一存储数据节点的剩余计算能力;根据所述N个存储数据节点中每一存储数据节点的剩余计算能力选择剩余计算能力最大的存储数据节点为所述代表存储数据节点。
所述代表存储数据节点的剩余计算能力kc2,d,是指所述代表存储数据节点的CPU的剩余处理能力kc2,d。
步骤2、获取所述计算节点与所述存储服务节点之间的剩余数据传输能力pj2和所述计算节点的剩余计算能力kj2;
具体的,所述计算节点与所述存储服务节点之间的剩余数据传输能力pj2,指的是所述计算节点与所述存储服务节点之间的剩余网络带宽。所述计算节点的剩余计算能力kj2,是指所述计算节点的CPU的剩余处理能力。
步骤3、根据所述剩余数据传输能力pj2和所述计算节点的剩余计算能力kj2确定所述计算节点的可用计算能力mj2;
需要说明的是,根据所述剩余数据传输能力pj2和所述计算节点的剩余计算能力kj2确定所述计算节点的可用计算能力mj2,具体是指,在所述剩余数据传输能力pj2小于所述计算节点的剩余计算能力kj2时,所述计算节点的可用计算能力mj2取决于所述剩余数据传输能力pj2;在所述剩余数据传输能力pj2大于所述计算节点的剩余计算能力kj2时,所述计算节点的可用计算能力mj2取决于所述计算节点的剩余计算能力kj2。
步骤4、根据所述代表存储数据节点的剩余计算能力kc2,d和所述计算节点的可用计算能力mj2,从所述代表存储数据节点和所述计算节点中选择出计算能力较强的所述第三节点。
需要说明的是,此处也涉及到先将所述代表存储数据节点的剩余计算能力kc2,d和所述计算节点的可用计算能力mj2统一到一个可比较的维度,然后,再通过比较所述代表存储数据节点的剩余计算能力kc2,d和所述计算节点的可用计算能力mj2的大小,选择所述第三节点。
S417、在所述第三节点和所述第二节点不相同时,向所述第二节点发送第二暂停指令,用于指示所述第二节点暂停运行所述进程,得到所述进程的第二运行中间结果,以及将所述第二运行中间结果发送所述第三节点;
应当理解的是,第三节点可以是计算节点,或者是N个数据节点中的其中一个,第三节点虽然和第二节点是不相同的节点,因为若第三节点和第二节点为同一节点,就不会涉及到进程迁移的问题了。但是第三节点和第一节点可以是相同的节点。
S418、向所述第三节点发送第二恢复指令,用于指示所述第三节点恢复运行所述进程。
应当理解的是,截止到该步,所述进程从所述第二节点迁移到所述第三节点。
值得注意的是,在所述进程运行的整个过程中,可以仅仅涉及到从第一节点迁移到第二节点和从第二节点迁移到第三节点的两次迁移,也可以涉及3次、4次等多次迁移,本发明实施例对此不做限制性规定,不管所述进程在其运行的整个过程中迁移了多少次,遵循的原理都是一致的,都是迁移到在该迁移动作发生时,所述N个存储数据节点和所述计算节点中计算能力最强的节点。
可知,本发明实施例提供的进程管理方法,首先第一节点暂停运行进程,得到进程的第一运行中间结果,然后第一节点将该第一运行中间结果发送给第二节点,第二节点根据第一运行中间结果,恢复运行进程。相对于现有技术来说,本发明实施例提供的技术方案中,进程不是固定的运行在计算节点上,从而减少了进程对计算节点的依赖;再者,该第二节点是所述N个存储数据节点和所述计算节点中计算能力最强的节点,所以,进程从第一节点迁移到第二节点并在第二节点上运行,提升了该进程的运行速度。
实施例四
参见附图5,为本发明实施例提供的进程管理装置50的结构示意图,进程管理装置50是实施例三所述的进程管理方法的执行主体,且进程管理装置50可用在图1所示的应用场景中,本发明发明实施例提供的进程管理装置50的功能可参照实施例三所述的进程管理方法,其中,相同的部分本实施例不再赘述。
具体的,如图5所示,所述进程管理装置50包括:
选择单元51,用于从N个存储数据节点和计算节点中选择出计算能力最强的第二节点,所述N为大于或者等于1的整数,所述N个存储数据节点中每一存储数据节点均用于存储数据信息,所述N个存储数据节点由同一存储服务节点管理,所述存储服务节点和所述计算节点之间通信连接,所述进程为映射进程Maper或归约进程Reducer;
作为本发明的一个实施例,选择单元51具体用于:
获取所述N个存储数据节点中每一存储数据节点的剩余计算能力kc1(x),x取[1,N]范围内的整数;
获取所述计算节点与所述存储服务节点之间的剩余数据传输能力pj1和所述计算节点的剩余计算能力kj1;
根据所述剩余数据传输能力pj1和所述计算节点的剩余计算能力kj1确定所述计算节点的可用计算能力mj1,
根据所述N个存储数据节点中每一存储数据节点的剩余计算能力kc1(x)和所述计算节点的可用计算能力mj1,从所述N个存储数据节点和所述计算节点中选择出计算能力最强的所述第二节点。
或者,作为本发明的另一个实施例,选择单元51具体用于:
获取代表存储数据节点的剩余计算能力kc1,d,所述代表存储数据节点是指所述N个存储数据节点中剩余计算能力最大的存储数据节点;
获取所述计算节点与所述存储服务节点之间的剩余数据传输能力pj1和所述计算节点的剩余计算能力kj1;
根据所述剩余数据传输能力pj1和所述计算节点的剩余计算能力kj1确定所述计算节点的可用计算能力mj1;
根据所述代表存储数据节点的剩余计算能力kc1,d和所述计算节点的可用计算能力mj1,从所述代表存储数据节点和所述计算节点中选择出计算能力较强的所述第二节点。
在所述第二节点和第一节点不相同时,暂停指令发送单元53,用于向所述第一节点发送第一暂停指令,以指示所述第一节点暂停运行进程,得到所述进程的第一运行中间结果,以及将所述第一运行中间结果发送所述第二节点,所述第一节点为所述N个存储数据节点和所述计算节点中的一个节点;
应当理解的是,如果所述所述第二节点和第一节点是相同节点,则说明所述进程运行的当前节点,也即第一节点,即是所述N个存储数据节点和所述计算节点中计算能力最强的节点,说明所述进程的运行速度在整个Mapreduce计算模型中已经达到了最大值,则此时就不用再迁移了。
只有在所述所述第二节点和第一节点是不相同的节点,说明所述进程当前运行的节点不是所述N个存储数据节点和所述计算节点中计算能力最强的节点,进一步说明了所述进程的运行速度不是最优的,此时才涉及到要将所述进程迁移到所述第二节点上,以提高所述进程的运行速度的问题。
恢复指令发送单元55,用于向所述第二节点发送第一恢复指令,以指示所述第二节点根据所述第一运行中间结果,恢复运行所述进程。
也即,恢复指令发送单元55用于恢复所述进程在所述第二节点上的运行。
作为本发明的另一个实施例:
选择单元51还用于从所述N个存储数据节点和所述计算节点中选择出计算能力最强的第三节点,所述选择出计算能力最强的第三节点和所述选择出计算能力最强的第二节点之间的时间间隔为T,所述T大于或者等于1秒且小于或者等于180秒;
优选的,所述时间间隔为T的大小取决于所述第二节点的中央处理器CPU的使用率和所述第二节点的内存使用率,具体的,所述时间间隔为T的设置要遵循下述原则:
时间间隔T(秒) |
CPU使用率 |
内存使用率 |
1 |
<50% |
<70% |
5 |
<70% |
<80% |
20 |
<80% |
<85% |
60 |
<90% |
<90% |
180 |
>90% |
>90% |
需要说明的是,所述时间间隔T的设置也可以是固定不变的,比如,所述时间间隔T固定的为5s;也可以是没有任何规则的变化的,总之,只要满足1s≤T≤180s即可。
需要说明的是,选择单元51具体用于:
获取所述N个存储数据节点中每一存储数据节点的剩余计算能力kc2(x),x取[1,N]范围内的整数。
获取所述计算节点与所述存储服务节点之间的剩余数据传输能力pj2和所述计算节点的剩余计算能力kj2;
根据所述剩余数据传输能力pj2和所述计算节点的剩余计算能力kj2确定所述计算节点的可用计算能力mj2,
根据所述N个存储数据节点中每一存储数据节点的剩余计算能力kc2(x)和所述计算节点的可用计算能力mj2,从所述N个存储数据节点和所述计算节点中选择出计算能力最强的所述第三节点。
或者,选择单元51具体用于:
获取代表存储数据节点的剩余计算能力kc2,d,所述代表存储数据节点是指所述N个存储数据节点中剩余计算能力最大的存储数据节点;
获取所述计算节点与所述存储服务节点之间的剩余数据传输能力pj2和所述计算节点的剩余计算能力kj2;
根据所述剩余数据传输能力pj2和所述计算节点的剩余计算能力kj2确定所述计算节点的可用计算能力mj2;
根据所述代表存储数据节点的剩余计算能力kc2,d和所述计算节点的可用计算能力mj2,从所述代表存储数据节点和所述计算节点中选择出计算能力较强的所述第三节点。
在所述第三节点和所述第二节点不相同时,暂停指令发送单元53还用于向所述第二节点发送第二暂停指令,以指示所述第二节点暂停运行所述进程,得到所述进程的第二运行中间结果,以及将所述第二运行中间结果发送所述第三节点;
应当理解的是,第三节点可以是计算节点,或者是N个数据节点中的其中一个,第三节点虽然和第二节点是不相同的节点,因为若第三节点和第二节点为同一节点,就不会涉及到进程迁移的问题了。但是第三节点和第一节点可以是相同的节点。
恢复指令发送单元55还用于向所述第三节点发送第二恢复指令,以指示所述第三节点恢复运行所述进程。
也即,恢复指令发送单元55还用于恢复所述进程在所述第三节点上的运行。
值得注意的是,在所述进程运行的整个过程中,可以仅仅涉及到从第一节点迁移到第二节点和从第二节点迁移到第三节点的两次迁移,也可以涉及3次、4次等多次迁移,本发明实施例对此不做限制性规定,不管所述进程在其运行的整个过程中迁移了多少次,遵循的原理都是一致的,都是迁移到在该迁移动作发生时,所述N个存储数据节点和所述计算节点中计算能力最强的节点。
进一步需要说明的是的,本实施例提供的进程管理装置,可以位于所述N个存储数据节点、所述存储服务节点和所述计算节点之外的其他节点上,也可以位于所述N个存储数据节点、所述存储服务节点和所述计算节点中的某个节点上,本发明对所述进程管理装置的物理位置不做限制性规定。
可知,本发明实施例提供的进程管理装置,包括选择单元、暂停指令发送单元和恢复指令发送单元,选择单元用于选择第二节点,暂停指令发送单元发送指令给第一节点,以使第一节点暂停运行进程,得到该进程的第一运行中间结果,且将该第一运行中间结果发送给第二节点;恢复指令发送单元发送指令给第二节点用以在该第二节点上恢复运行该进程。
相对于现有技术来说,本发明实施例提供的技术方案中,进程不是固定的运行在计算节点上,从而减少了进程对计算节点的依赖;再者,该第二节点是所述N个存储数据节点和所述计算节点中计算能力最强的节点,所以,进程从第一节点迁移到第二节点并在第二节点上运行,提升了该进程的运行速度。
实施例五
参见附图6a,为本发明实施例提供的一种通信系统,该通信系统包括实施例四所述的进程管理装置61、第一节点62和第二节点63,图6a所示的通信系统可用在图1所示的应用场景中。
具体的,如图6a所示,所述通信系统包括的进程管理装置61、第一节点62和第二节点63的功能描述如下:
进程管理装置61,用于从N个存储数据节点和计算节点中选择出计算能力最强的第二节点,所述N为大于或者等于1的整数,所述N个存储数据节点中每一存储数据节点均用于存储数据信息,所述N个存储数据节点由同一存储服务节点管理,所述存储服务节点和所述计算节点之间通信连接,所述进程为映射进程Maper或归约进程Reducer;
在第二节点63和第一节点62不相同时,进程管理装置61还用于向第一节点62发送第一暂停指令;
具体的,该第一暂停指令用于指示第一节点62暂停运行进程。
第一节点62用于根据所述第一暂停指令暂停运行进程,得到所述进程的第一运行中间结果,并将所述第一运行中间结果发送第二节点63,第一节点62为所述N个存储数据节点和所述计算节点中的一个节点;
进程管理装置61还用于向第二节点63发送第一恢复指令;
其中,进程管理装置61向第二节点63发送第一恢复指令位于所述第一节点62将所述第一运行中间结果发送第二节点63之后。
第二节点63用于根据所述第一恢复指令对所述第一运行中间结果进行恢复处理,以恢复运行所述进程。
参见附图6b,为本发明实施例提供的另一种通信系统,相对于图6a所示的通信系统,图6b所示的通信系统还包括第三节点605.
进程管理装置601还用于从所述N个存储数据节点和所述计算节点中选择出计算能力最强的第三节点605,所述选择出计算能力最强的第三节点605和所述选择出计算能力最强的第二节点603之间的时间间隔为T,所述T大于或者等于1秒且小于或者等于180秒;
在第三节点605和第二节点603不相同时,进程管理装置601还用于向第二节点603发送第二暂停指令;
第二节点603用于根据所述第二暂停指令暂停运行进程,得到所述进程的第二运行中间结果,并将所述第二运行中间结果发送给第三节点605;
进程管理装置601还用于向第三节点605发送第二恢复指令;
第三节点605用于根据所述第二恢复指令对所述第二运行中间结果进行恢复处理,以恢复运行所述进程。
其中,实施例三、四和五之间相同的部分可互相参照使用,对于相同的部分,在实施例三中已经详细说明的,在实施例四和五中就没有再赘述,但是,在实施例三中适用的特征,在实施例四和五中也同样适用,不重复赘述只是为了节约篇幅。
值得注意的是,在所述进程运行的整个过程中,可以仅仅涉及到从第一节点迁移到第二节点和从第二节点迁移到第三节点的两次迁移,也可以涉及3次、4次等多次迁移,本发明实施例对此不做限制性规定,不管所述进程在其运行的整个过程中迁移了多少次,遵循的原理都是一致的,都是迁移到在该迁移动作发生时,所述N个存储数据节点和所述计算节点中计算能力最强的节点。
可知,本发明实施例提供的通信系统,包括进程管理装置、第一节点和第二节点,进程管理装置用于将进程从第一节点迁移到第二节点,其中第二节点是该迁移过程中,所述N个存储数据节点和所述计算节点中计算能力最强的节点。所以,相对于现有技术来说,本发明实施例提供的技术方案中,进程不是固定的运行在计算节点上,从而减少了进程对计算节点的依赖;再者,该第二节点是所述N个存储数据节点和所述计算节点中计算能力最强的节点,所以,进程从第一节点迁移到第二节点并在第二节点上运行,提升了该进程的运行速度。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。