一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

分布式数据处理的任务调度的制作方法

2022-11-19 13:19:47 来源:中国专利 TAG:


1.本主题大体上涉及分布式数据处理,具体地,本主题涉及分布式数据处理的任务调度。


背景技术:

2.分布式系统是一组通过网络互连的计算设备,对于并行处理大量数据非常有用,例如用于大数据分析。数据处理任务分布在设备上,以提高可靠性和可扩展性,提供更快的数据处理,并缩短响应时间。在一些分布式系统架构中,其中一个设备充当主设备,在被称为从设备的其余设备之间分发和调度任务。用于大数据处理的分布式系统,例如apache spark、map reduce、hive,既是数据密集型系统,也是内存密集型系统,其中,广泛使用任务调度机制。


技术实现要素:

3.本发明的各方面提供了用于任务调度以提高分布式系统的资源利用率的方法和设备。分布式系统也称为分布式数据处理系统。
4.根据第一方面,提供了一种在分布式数据处理系统中进行任务调度的方法。所述方法包括:选定节点接收待执行的第一任务、所述第一任务的优先级指示和用于挂起所述节点正在执行的运行任务的第一指令。所述运行任务被所述节点挂起,并保存与所述运行任务相关联的任务资源。此外,所述第一任务由所述节点执行,并且在所述第一任务执行期间,基于所述第一任务的资源需求,从所述挂起的运行任务中顺序地释放资源。在所述第一任务完成时,所述节点向主设备发送关于所述第一任务完成的确认。
5.根据第二方面,提供了在一种分布式数据处理系统中进行任务调度的方法。所述方法包括:主设备从多个节点中确定用于执行第一任务的节点;所述主设备发送待执行的所述第一任务、所述第一任务的优先级指示和第一指令。所述第一指令包括用于以下操作的指令:挂起运行任务,保存与所述运行任务相关联的任务资源,以及基于所述第一任务的资源需求,从所述挂起的运行任务中顺序地释放资源。
6.根据第三方面,提供了一种执行在分布式数据处理系统中调度的任务的节点,其中,所述节点包括任务执行模块,用于:接收待执行的第一任务、所述第一任务的优先级指示和用于挂起运行任务的第一指令;挂起所述运行任务,并保存与所述运行任务相关联的任务资源;执行所述第一任务,并基于所述第一任务的资源需求,从所述挂起的运行任务中顺序地释放资源。在节点中提供资源管理模块,以基于所述资源需求监控资源可用性,并提供内存管理模块,以控制和存储与挂起任务相关联的任务资源的数据。
7.根据第四方面,提供了一种调度分布式数据处理系统中的任务的主设备,其中,所述主设备包括调度模块,用于从多个节点中确定用于执行第一任务的节点。所述主设备还包括发送模块,用于发送待执行的第一任务、所述第一任务的优先级指示和第一指令,所述第一指令包括用于以下操作的指令:挂起所述运行任务、保存与所述运行任务相关联的任
务资源,以及基于所述第一任务的资源需求,从所述挂起的运行任务中顺序地释放资源。
附图说明
8.该详细描述是参考附图进行描述的。在附图中,附图标记最左边的数字表示该附图标记首次出现的附图。所有附图使用相同的数字来指代相同特征和组件。
9.图1示出了本主题的示例提供的用于任务调度的分布式数据处理系统。
10.图2示出了本主题的示例提供的用于调度分布式数据处理系统中的任务的主设备的框图。
11.图3示出了本主题的示例提供的用于执行分布式数据处理系统中调度的任务的节点的框图。
12.图4示出了本主题的示例提供的等待挂起任务的示意图。
13.图5示出了本主题的示例提供的内存资源部分溢出的等待挂起任务的示意图。
14.图6示出了本主题的示例提供的数据检查点设置方法。
15.图7示出了本主题的示例提供的分布式数据处理系统中的任务调度方法。
16.图8示出了本主题的示例提供的由主设备实现的分布式数据处理系统中的任务调度方法。
17.图9示出了本主题的示例提供的由节点实现的分布式数据处理系统中的任务调度方法。
具体实施方式
18.传统上,已经具有实现用于分布式系统中(例如在处理大数据分析的系统中)的任务调度的几种技术。大数据系统在短时间内处理大量数据。由于大数据系统是数据密集型的,因此数据处理系统的主设备将待执行的任务分发到通过网络互连的不同从设备之间。分布式系统中的任务调度有助于提高系统的响应时间、资源利用率、可靠性和可扩展性。
19.在一种技术中,在apache spark、map reduce、hive等分布式数据处理和查询系统中,为待执行的特定作业的用户预留资源,以确保快速响应。资源预留不允许作业之间共享资源,即使某些资源是免费的。无法共享资源导致资源浪费,从而影响系统的总体资源利用率。此外,当必须执行传入作业时,并且如果所需的资源被占用,则传入作业必须等待,直到为传入作业预留的资源变得空闲。
20.在另一种技术中,实现fair和先进先出(first-in-first-out,fifo)类型的任务调度,以公平分配资源。这些调度技术在任务调度进程期间在接收作业时起作用。但是,它们不能控制已经调度或正在运行的运行任务。因此,在必须执行新的高优先级任务的实例中,使高优先级任务等待运行任务完成。
21.在另一种技术中,任务调度进程允许通过抢占正在运行的低优先级任务来在接收时执行高优先级任务。这确保了高优先级作业/查询获得更好的资源份额,因为高优先级任务的调度频率更高,从而缩短了它们的响应时间。但是,这降低了低优先级长期运行作业(如数据加载作业或完整扫描作业)的性能,因为在此方法中,被抢占的任务必须重新启动。在低优先级任务正在执行并且其执行已完成95%的场景中,如果调度了高优先级任务,则低优先级任务仍被抢占并在高优先级任务完成后重新调度执行。被抢占的任务必须在恢复
时从一开始就开始执行任务。该方法增加了重新启动被抢占的任务所涉及的成本。此外,在被抢占的任务被调度重新启动后,可能会接收到另一个高优先级任务,并可能导致再次抢占任务。多次此类中断并在每次中断时重新启动任务会降低系统的效率和响应时间。
22.任务调度技术可以设计为fair或fifo等上述技术连同抢占的组合,增加了平衡系统的响应时间和资源利用率的复杂性。
23.本文公开的本主题涉及分布式系统(例如处理大数据的系统)中的任务调度方法。任务调度方法实现了挂起和恢复方法,其中,所述方法包括挂起长时间运行的低优先级任务,以调度高优先级任务先执行。此挂起和恢复任务进程是通过提供各种回退步骤来执行的,以便使恢复任务的成本最小。
24.本主题实现了一种资源顺序挂起的方法,其中,基于待执行的高优先级任务的资源需求和可用于执行高优先级任务的资源,可以从挂起任务中顺序地释放资源,以为高优先级任务的完全执行提供资源。此外,顺序地挂起资源方法与挂起和恢复方法一起实现,该挂起和恢复方法通过避免资源浪费和提供更快的响应时间来有效利用现有资源,以克服与上述技术相关联的问题。
25.本主题的这种挂起和恢复方法确保了安全挂起和恢复长期运行的低优先级任务,而对其执行的影响最小。此外,可以有效地确保高优先级任务的服务水平协议(service level agreement,sla),而对当前正在运行的作业的影响最小。该方法可以在具有计划工作负载的系统和具有计划外即席工作负载(例如查询处理)的系统上实现。本主题的挂起和恢复方法提供了更好的执行并发性,也可以通过资源共享和任务调度(例如fair、fifo)等其它方法实现。
26.参考以下描述和附图,将更好地解释本主题的上述和其它特征、方面和优点。需要说明的是,描述和附图仅仅说明了本主题的原理以及本文描述的示例,不应解释为对本主题的限制。因此,可以理解,可以设计各种布置,尽管本文中没有明确描述或示出,但体现本发明的原则。此外,本文中列举其原则、方面和示例的所有陈述都旨在包括其等价物。此外,为了简单起见,但不受限制,在整个附图中使用相同的数字来表示相同的特征和组件。
27.图1示出了本主题的示例提供的用于分布式数据处理系统中的任务调度的分布式数据处理环境100。示例性分布式数据处理环境100包括主设备102和多个节点104-1、104-2、104-3
……
104-n,单独称为节点104。主设备102可以从其它设备(图中未示出)(例如用户设备)接收各种传入作业106。用户设备可以运行通过网络(未示出)将作业106发送到主设备102的各种应用程序。主设备102还可以通过网络110互连到多个节点104-1、104-2
……
104-n,用于数据处理。在一个示例中,节点104可以是从设备。主设备102和多个节点104-1、104-2
……
104-n中的每一个节点可以实现为任何计算设备,例如服务器、台式机、笔记本电脑等。
28.网络110可以是无线网络或有线和无线网络的组合。网络110还可以包括彼此互连并充当单个大型网络(例如互联网)的单独网络的集合。这种单独网络的示例包括但不限于全球移动通信系统(global system for mobile communications,gsm)网络、通用移动电信系统(universal mobile telecommunications system,umts)网络、个人通信服务(personal communications service,pcs)网络、时分多址(time division multiple access,tdma)网络、码分多址(code division multiple access,cdma)网络、下一代网络
(next generation network,ngn)、公共交换电话网(public switched telephone network,pstn)、长期演进(long term evolution,lte)和综合业务数字网(integrated services digital network,isdn)。
29.在一个示例性实现方式中,主设备102可以接收要调度和执行的传入作业106的集合。每个传入的作业可以由主设备102划分为多个任务。每个任务可以包括多个属性。在一个示例中,每个任务可以包括优先级指示,作为其属性之一。任务可以由主设备102基于任务的属性选择,并且可以被调度,以由节点104中的一个节点执行。在一个示例中,可以选择首先执行的任务可以称为第一任务。
30.主设备102可以用于从多个节点104-1、104-2
……
104-n中确定一个或多个节点用于发送任务,从而发送作业以执行。在一个示例性实现方式中,用于任务执行的节点的确定可以基于各种参数,例如节点的数据的局部性、节点的资源可用性等。在一个示例中,从多个节点104-1、104-2
……
104-n中选择的用于执行第一任务的节点104可以称为选定节点。
31.主设备102可以向选定节点发送待执行的第一任务、第一任务的优先级指示和第一指令。主设备102发送的第一指令可以指示选定节点104挂起运行任务。运行任务可以理解为选定节点当前正在执行的任务。此外,在一个示例中,主设备102可以指示选定节点104保存运行任务被挂起的位置。在另一个示例中,主设备102可以指示选定节点104保存与运行任务相关联的任务资源,并基于待执行的第一任务的资源需求,从挂起的运行任务(也称为挂起任务)中顺序地释放资源。
32.选定节点104可以执行由主设备102调度的第一任务,并且在第一任务完成时,选定节点104可以向主设备102发送确认。由选定节点104发送的确认可以包括关于第一任务完成的信息。此外,在接收到关于第一任务完成的确认时,主设备102可以向选定节点104发送第二指令以恢复挂起任务。在一个示例中,选定节点在接收到第二指令时,可以从其被挂起的状态恢复挂起任务,并可以执行恢复的任务。通过这种方法,在第一任务被完全执行后,挂起任务可以从其被挂起的状态安全地恢复以完成其执行,从而对挂起和恢复进程施加最小的成本。因此,完成低优先级任务所需的时间可能不会受到高优先级任务的不适当影响。
33.图2示出了本主题的示例提供的用于调度分布式数据处理系统中的任务的主设备的框图。主设备102可以包括处理器200、包括调度模块202的各种模块和存储器204。存储器204可以包括任何非瞬时性计算机可读介质,包括例如易失性存储器(例如ram)或非易失性存储器(例如eprom、闪存)等。在一个示例中,存储器204可以存储各种模块,处理器200可以耦合到存储器204以获取和执行与模块相对应的指令。在另一个示例中,各种模块可以直接耦合到一个或多个处理器。除其它外,一个或多个模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。
34.一个或多个处理器200可以实现为微处理器、微型计算机、微控制器、数字信号处理器、中央处理单元、状态机、逻辑电路和/或基于操作指令操纵信号的任何设备。在其它能力中,一个或多个处理器200可以耦合到存储器204,以获取和执行与模块相对应的指令。图中所示的各种元件的功能(包括标记为“一个或多个处理器”的任何功能块)可以通过使用专用硬件以及能够执行机器可读指令的硬件来提供。
35.除了一个或多个模块之外,存储器204还可以用作存储库或存储设备,用于存储可
由一个或多个模块获取、处理、接收或生成的数据。尽管存储器204示出在主设备102的内部,但可以理解,数据可以驻留在外部存储设备中,外部存储设备可以耦合到主设备102。
36.主设备102的调度模块202可用于从各种用户设备接收可能必须调度和执行的作业106。调度模块202可以包括主任务调度器。在一个示例中,主任务调度器可以是分布式调度器。主任务调度器可以将传入作业106划分为多个任务,并将这些待执行的任务调度到多个节点104-1、104-2
……
104-n。
37.在一个示例中,基于待执行的第一任务的优先级和当前正在其中一个节点上执行的任务,调度模块202可以将第一任务调度到特定节点。例如,如果分布式数据处理系统中有五个节点,并且第4节点104当前正在执行优先级低于传入的高优先级的第一任务的任务,则主设备102的调度模块202可以使用第4节点104调度高优先级的第一任务,以便其执行。因此,对于高优先级的第一任务的调度,调度模块202可以从多个节点104-1、104-2
……
104-n中确定节点104并发出用于发送到选定节点的第一指令。
38.主设备102的调度模块202可以用于向从多个节点104-1、104-2
……
104-n中选择的节点104发送第一指令,以进行高优先级任务的执行。调度模块202可以发送的第一指令可以指示选定节点104挂起运行任务,并保存与运行任务相关联的任务资源。在一个示例中,可以指示被选择执行第一任务的节点104基于第一任务的资源需求,从挂起的运行任务(或称为挂起任务)中顺序地释放资源。节点104可以相应地挂起运行任务并执行高优先级的第一任务,同时基于第一任务所需的资源,顺序地释放资源。
39.在一个示例中,主设备102的存储器204可以用于存储可以由主任务调度器实现的调度技术和可以由主设备102接收的信息,例如多个节点104-1、104-2
……
104-n正在执行的任务的状态、可以被调度到节点的高优先级任务的状态信息等。
40.此外,当高优先级的第一任务完成时,调度模块202可以从节点104接收确认。然后,调度模块202可以向节点104发送第二指令,用于指示节点104恢复挂起任务。第二指令可以使节点104从挂起点恢复挂起任务,如下所述。
41.图3示出了本主题的示例提供的用于执行分布式数据处理系统中调度的任务的节点的框图。多个节点104-1、104-2
……
104-n中的每个节点104可以包括处理器300、任务执行模块302、资源管理模块304和内存管理模块306。节点104还可以包括存储器308。在一个示例中,存储器308可以存储各种模块,并且处理器300可以耦合到存储器308。除其它外,一个或多个模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。除其它外,存储器308还用作存储库或存储设备,用于存储可由一个或多个模块获取、处理、接收或生成的数据。尽管存储器308示出在节点104的内部,但可以理解,存储器308可以驻留在外部存储设备中,外部存储设备可以耦合到节点104。
42.一个或多个处理器300可以实现为微处理器、微型计算机、微控制器、数字信号处理器、中央处理单元、状态机、逻辑电路和/或基于操作指令操纵信号的任何设备。在其它能力中,一个或多个处理器300可以耦合到存储器308,以获取和执行与模块相对应的指令。图中所示的各种元件的功能(包括标记为“一个或多个处理器”的任何功能块)可以通过使用专用硬件以及能够执行机器可读指令的硬件来提供。
43.在一个示例性实现方式中,任务执行模块302可以用于从主设备102接收待执行的第一任务、第一任务的优先级指示和用于挂起运行任务的第一指令。在一个示例中,任务执
行模块302可以包括节点任务调度器。节点任务调度器可以被实现为调度分配给节点104的任务。
44.为了讨论的目的,节点104被认为是被分配高优先级任务的选定节点,并且在其中接收用于执行高优先级任务的第一指令。节点104接收到的第一指令可以指示节点104挂起运行任务,其中,运行任务是节点104当前正在执行的任务。此外,任务执行模块302除了挂起选定节点104正在执行的运行任务外,还可以保存与运行任务相关联的所有任务资源。
45.任务执行模块302执行第一任务可以取决于可用于待执行的第一任务的资源和执行第一任务所需的资源。在一个示例中,任务执行模块302可以基于第一任务的资源需求,从挂起任务中顺序地释放资源。在一个示例中,随着正在执行的第一任务的资源需求增加,可以实现顺序地挂起资源方法。顺序地挂起资源方法可以根据第一任务的资源需求增加资源可用性。在一个示例中,资源的顺序挂起有助于最大限度地降低恢复挂起任务以完成其执行的成本,方法是根据需要以增量方式为第一任务提供资源。
46.在一个示例性实现方式中,当第一任务被分配给选定节点时,任务执行模块302可以挂起的运行任务,也可以称为挂起任务。当运行任务被挂起时,最初只释放cpu或处理资源,而与任务相关联的所有其它资源,例如资源内存、打开句柄、文件句柄等,可以保持不变。这些其它资源的状态保存在存储器308中。
47.在一个示例中,释放的cpu资源可以由选定节点104的任务执行模块302分配给第一任务,并且第一任务可以开始其执行。当第一任务正在被执行时,资源管理模块304可以监控第一任务的资源需求。在一个示例中,分配给第一任务的cpu以及节点104处的可用/空闲资源可以足以执行第一任务,并且第一任务可以完全执行,而不需要与挂起任务相关的进一步资源。
48.在另一个示例中,由于大数据处理可能涉及数据密集型和内存密集型处理,因此为执行第一任务分配的cpu和空闲资源可能不足,第一任务可能需要更多的资源来完成第一任务的执行。当第一任务的资源需求增加时,可能必须从挂起任务中释放额外的资源,以使资源可用于执行高优先级任务。为此,资源管理模块304可以监控正在执行的任务的资源需求。当正在执行的高优先级任务是资源密集型的时,资源管理模块304可以顺序地执行一个或多个进程,以确保高优先级任务的执行不受影响。在一个示例性实现方式中,在第一进程中,资源管理模块304可以触发内存管理模块306,以通过将内存的几个对象溢出到硬盘中,以增量方式释放被挂起任务占用的内存。
49.在一个示例中,资源管理模块304可以直接指示内存管理模块306基于正在执行的第一任务的资源需求部分地挂起内存,以增加资源可用性。在另一个示例中,资源管理模块304可以向主设备102发送消息,以指示内存管理模块306基于正在执行的第一任务的资源需求部分地挂起内存,以增加资源可用性。
50.在一个示例系统中,内存管理模块306可以固有地内置在节点104中。在另一个示例中,当节点固有地不包括内置内存管理模块306时,内存管理模块306可以在数据处理系统100中实现。内存管理模块306可以是自定义内存管理模块。自定义内存管理模块可以被实现以识别由挂起任务存储的各种数据块。当高优先级任务的资源需求增加时,在一个示例中,自定义内存管理模块可以将存储在存储器中的对象溢出到硬盘,这使得释放额外的资源,以用于完成待完成的高优先级任务,如后面详细解释。
51.此外,在第二进程中,如果第一任务所需的资源不足以挂起cpu,以及部分共享挂起任务的内存资源,则资源管理模块304可以检查是否可以对挂起任务执行数据检查点设置方法。在一个示例中,如果节点104或挂起任务无法执行或实现数据检查点设置方法,则挂起任务可以被抢占。在另一个示例中,如果可以执行数据检查点设置方法,则可以对挂起任务实现基于周期的检查点设置方法,然后可以终止该方法。检查点设置方法可以如本领域中已知的那样实现流数据处理任务和非流数据处理任务,如将参考图6详细解释。在一个示例中,流数据处理系统可以是spark系统。
52.此外,在完成高优先级的第一任务时,任务执行模块302可以向主设备102发送确认,并可以接收用于恢复挂起任务的第二指令。相应地,任务执行模块302可以从挂起点恢复挂起任务。例如,如果在挂起时只释放cpu,而没有释放任何其它资源,则任务执行模块302可以将cpu资源分配给挂起任务,并使用为其它资源保存的信息恢复挂起任务的执行。在另一个示例中,如果在第一进程之后,部分内存资源已经溢出到硬盘上,则任务执行模块302可以使用内存管理模块306检索溢出的内存资源,并将cpu资源分配给挂起任务,并基于其它保存的数据(例如打开的字段句柄等)恢复其执行。在另一个示例中,如果在第二进程之后,在部分内存资源溢出后进行数据检查点设置之后任务被挂起,则任务执行模块302可以使用内存管理模块306获取数据检查点,然后恢复挂起任务。在另一个示例中,如果挂起任务在第二进程之后被抢占,则挂起任务将从头重新启动。因此,在少数情况下,挂起任务必须重新启动,在其它情况下,可以从挂起点重新启动,以更高效地进行数据处理。
53.图4示出了本主题的示例提供的等待挂起任务的示意图。任务执行模块302可以执行的每个任务,当挂起时,可以周期性地检查等待时间402。挂起任务可以周期性地检查等待时间402,以获取恢复的指令。在一个示例中,该指令可以由主设备102作为第二指令提供。挂起任务在到达等待点时,可以恢复任务、抢占任务或继续以挂起状态等待,并继续周期性地监控等待点402处的状态。在另一个示例中,运行任务或当前正在执行的任务也可以周期性地检查等待点402,以获取指令,例如第一指令。在一个示例中,指令可以由主设备102提供。运行任务在接收到等待点402时,可以根据它是否接收到指令,挂起运行任务或继续执行运行任务。当任务将被挂起或已经处于等待中时,该特定节点104的操作系统可以将挂起任务的cpu给予待执行的高优先级任务。
54.在一个示例中,挂起任务保存与运行任务而非cpu相关联的任务资源404。打开句柄、文件句柄等资源404可以按它们的当前状态保存。此外,当任务挂起时,与挂起任务相关联的内存406可以按其当前状态保存。当挂起任务恢复其执行时,与挂起任务相关联的内存406和打开句柄、文件句柄等其它资源404可以从它们在挂起期间被保存的状态恢复。
55.当高优先级任务完成时,节点104可以接收用于恢复挂起任务的第二指令。在一个示例中,第二指令可以包括唤醒事件408,其中,唤醒事件408将恢复挂起任务。在接收到第二指令时,节点104的任务执行模块302继续执行挂起任务。在一个示例中,在恢复执行低优先级长时间运行的作业之后,如果计划在该特定节点上执行另一个高优先级任务,则可以再次挂起低优先级长时间运行作业以执行高优先级任务。因此,低优先级任务可以被挂起和恢复多次,而不必每次都重新启动。因此,提高了分布式数据处理系统100对低优先级任务的总体响应性。
56.图5示出了本主题的示例提供的内存资源部分溢出的等待挂起任务的示意图。在
图5所示的示例中,除了cpu外,内存资源被额外释放给高优先级任务以用于其执行。如所讨论,在任务执行模块302开始执行第一任务时,资源管理模块304监控正在执行的第一任务的资源需求,并确定用于执行第一任务的资源可用性。
57.基于资源需求和资源可用性,资源管理模块304可以将资源分配给第一任务以用于执行。在一个示例中,资源管理模块304首先仅释放与上面讨论的挂起任务相关联的cpu。资源管理模块304然后可以监控正在执行的高优先级任务的资源需求,并且如果资源需求增加,资源管理模块304可以通过将与挂起任务相关联的内存部分溢出502到磁盘504来触发内存管理模块306部分地释放与挂起任务相关联的内存406。在一个示例中,与挂起任务相关联的内存的部分溢出502包括内存对象的溢出。内存管理模块306可以以数据块的形式存储挂起任务的内存对象,以便内存管理模块306可以标识分配给挂起任务的数据块。在一个示例中,磁盘504可以是从系统的硬盘。
58.在资源管理的一个示例性实现方式中,资源管理模块304可以触发内存管理模块306将特定数量的数据(例如1gb的数据)溢出到磁盘上,然后资源管理模块304可以继续监控正在执行的第一任务的资源需求。当观察到正在执行的第一任务需要与挂起任务相关联的更多资源(在这种情况下超过1gb的内存)时,资源管理模块304还可以触发内存管理模块306将额外的1gb数据溢出到磁盘中。可以执行资源的这种顺序释放,直到内存管理模块306向资源管理模块304发送消息,即内存已满,并且进一步的数据不能溢出到磁盘504中。资源管理模块304继而向主设备102通知该情况。当从资源管理模块304接收到该消息时,主设备102可以检查数据检查点设置系统是否可以在系统中实现。在一个示例中,当主设备102确定无法实现数据检查点设置系统时,主设备102向选定节点104发送指令以抢占任务。在另一个示例中,当主设备102确定数据检查点设置方法可以在系统中实现时,执行数据检查点设置方法。
59.图6示出了本主题的示例提供的数据检查点设置方法。在数据处理系统中,数据流可以在流水线604中表示。在一个示例中,流水线602和604中的数据流可以是用于实时分析的流数据,或者在另一个示例中,可以是应用于非流处理系统以对处理后的状态进行检查点设置的非流数据块。在数据处理系统中,数据的连续搅动发生,因此,在每个阶段执行数据的检查点设置。阶段和检查点可以预定义为数据处理步骤的一部分,并且数据处理的结果可以存储在每个检查点处。在发生任何中断的情况下,任何进一步的处理都可以从最后一个完成的检查点恢复,而不必从进程的开始处开始。
60.为了清楚但不受限制,可以借助以下示例来解释数据的检查点。
61.在一个示例中,系统的流水线604可以处理多张牌的计数。一副牌可以包括蓝牌和绿牌。5张蓝牌和10张绿牌可以按相同的顺序计数,直到牌总数为100张。检查点606可以用于存储进程状态。检查点606a可以设置为每100张可能已经处理的牌。在每处理100张牌之后,检查点606b进行存储,直到该特定点100张牌已经被读取为止,并包含蓝牌的x值和绿牌的y值,其中,x和y可以是从1-n取值的整数值。在处理100张牌之后,检查点606b将计数值存储为100。下一个检查点606c存储计数值200等。因此,在每个检查点606处,存储进程的状态。在一个示例中,检查点606可以将进程状态存储在同一从设备中。在另一个示例中,检查点606可以将进程状态存储在外部存储器中,该外部存储器可以由多个从设备和主设备102共享。在该特定示例中,进程状态可以是按蓝牌数量和绿牌数量的总数量计数。
62.当正在执行的任务或进程被挂起时,最新的检查点可以存储在该检查点之前执行的进程状态。在上面的示例中,如果任务已经在第二检查点606b处挂起,如流水线602所示,则存储的进程状态是100张牌的计数值。通过数据检查点设置方法挂起任务可能相当于抢占任务,但可以保存挂起任务之前的最新进程状态,并可以从该检查点恢复任务。在一个示例中,可以通过从先前检查点606b重新执行挂起任务来恢复挂起任务。恢复检查点606f将采用检查点606b的值。因此,检查点606b将被重新执行,并且在本示例中的进程状态值或计数值将是100张牌。因此,任务将恢复,计数值等于100。
63.在一个示例中,通过数据检查点设置方法恢复挂起任务可以在先前执行任务的同一节点上执行。在另一个示例中,通过数据检查点设置方法恢复挂起任务可以在同一分布式网络上连接到主设备102的不同系统上执行。在一个示例中,主设备102可以确定节点104,在节点104上,挂起任务可以通过数据检查点设置方法恢复。通过数据检查点设置方法恢复挂起任务可以通过将检查点信息共享给经确定用于恢复任务的节点104来执行。
64.数据检查点设置方法可以在具有系统数据处理的系统中实现,但在通过洗牌、迭代计算等处理数据的系统中,数据检查点设置系统的实现可能很复杂。但是,在这种系统中,仍然可以通过在第一实例中仅挂起cpu来顺序地挂起资源,或者通过将内存的几个对象溢出到硬盘中来以增量方式释放与挂起任务相关联的内存。
65.图7示出了本主题的示例提供的分布式数据处理系统中的任务调度方法。
66.在一个示例中,主设备102通过网络110从多个节点104-1、104-2
……
104-n中选择用于调度任务的节点104。在一个示例中,节点1由主设备102选择以执行第一任务。主设备在节点1上调度了两个高优先级作业。这两个高优先级作业表示为作业3和作业2,它们包括高优先级任务,作业3的任务1和作业2的任务1。在主设备102在节点1上调度高优先级任务之前,表示为包括任务1的作业1的低优先级作业由作业1的低优先级任务1表示的节点1执行。
67.在主设备102调度任务之后,向节点1发送第一指令,以挂起作业1的低优先级任务1,并执行作业3的高优先级任务1。在接收到第一指令时,节点1挂起低优先级运行任务,并调度作业3的高优先级任务1执行。当作业3的高优先级任务1正在执行时,资源管理模块304监控高优先级任务的资源需求和如上所述待执行的第一任务的资源可用性,并实现顺序地挂起资源方法。挂起任务中的资源将基于正在执行的高优先级任务所需的资源顺序地释放,以向高优先级任务提供资源。资源的顺序挂起也在图9中详细解释。
68.在高优先级作业完全执行后,主设备102向节点1发送第二指令,以恢复作业1的挂起的低优先级任务1的执行。在另一个示例中,主设备102可以指示节点1在完全执行作业3的高优先级任务1之后,在恢复作业1的低优先级任务1之前执行作业2的高优先级任务1。
69.图8和图9示出了本主题的示例提供的分别由主设备和节点实现的分布式数据处理系统中的任务调度方法。描述方法800和900的顺序并不意图被解释为限制,并且可以以任何顺序组合任何数量的所描述方法块,以实现方法800和900或替代方法。此外,可以从方法800和900中删除单独的框,而不脱离本文描述的主题的精神和范围。此外,方法800和900可以在任何合适的硬件、计算机可读指令、固件或其组合中实现。为了讨论,参考图1至图7中所示的实现方式来描述方法800和900。
70.本领域技术人员将容易地认识到,方法800和900的步骤可以由编程的计算设备执
行。方法800和900可以在任何合适的硬件、计算机可读指令、固件或其组合中实现。本文中,一些示例还意图涵盖程序存储设备和非瞬时性计算机可读介质,例如数字数据存储介质,该非瞬时性计算机可读介质是计算机可读的并编码计算机可执行指令,其中,所述指令执行所描述方法的部分或全部步骤。程序存储设备可以是例如数字存储器、磁存储介质,例如磁盘和磁带、硬盘,或光学可读数字数据存储介质。
71.参考图8和用于分布式数据处理系统中任务调度的方法800,在框802中,方法800包括由主设备从多个节点中确定用于执行第一任务的节点。
72.在框804中,方法800包括主设备发送待执行的第一任务、第一任务的优先级指示和第一指令,其中,所述第一指令包括挂起运行任务,保存与运行任务相关联的任务资源,以及基于第一任务的资源需求,从挂起的运行任务中顺序地释放资源。在一个示例中,第一任务的优先级指示可以被指示为高优先级。在一个示例性实现方式中,方法800的主设备可以由分布式数据处理系统的主设备102实现。
73.如上所述的主设备102可以包括分布式任务调度器,该分布式任务调度器基于待执行的任务的优先级将任务调度到各个节点。在一个示例中,节点可以是节点104。在第一任务被调度到由主设备102选择的节点104后,可以发送到节点104的第一指令包括挂起由选定节点104当前正在执行的任务,并等待第一任务的完成。此外,再主设备102接收到关于节点104完成第一任务的确认后,主设备102发送第二指令。第二指令包括通过发送唤醒事件来恢复挂起任务,其中,所述唤醒事件用于恢复挂起任务。
74.参考图9和用于分布式数据处理系统中任务调度的方法900,在框902中,方法900包括节点接收待执行的第一任务、第一任务的优先级指示和用于挂起运行任务的第一指令。在一个示例中,第一任务的优先级高于运行任务的优先级。在一个示例性实现方式中,主设备102可以将第一指令发送到选定节点104。
75.在框904中,方法900包括节点挂起运行任务,并保存与运行任务相关联的任务资源。当任务被选定节点104挂起时,与挂起任务相关联的所有资源可以保存在它们的当前进程状态。在一个示例中,关于运行任务的挂起的信息可以作为确认发送到主设备102。在一个示例中,除cpu以外的资源包括与挂起任务相关联的内存、打开句柄,例如文件句柄,与操作系统的外部链接或开放套接字等。在一个示例中,当任务被挂起时,这些打开句柄的进程状态可以被保存。例如,如果在执行当前任务时有5个文件处于打开状态并正在被读取,则在挂起任务之前,将保存在挂起任务时打开的5个文件的进程状态。在任务被挂起时保存的关于进程状态的信息可以在挂起任务被恢复时使用,以便当挂起任务被恢复时,任务可以从挂起时处于的进程状态继续执行,而无需从开始重新执行任务。
76.在框906中,方法900包括节点执行第一任务,并基于第一任务的资源需求,从挂起的运行任务中顺序地释放资源。从挂起任务中顺序地释放资源的进程包括在第一实例中仅释放cpu,而不释放与挂起任务相关联的除cpu以外的资源。除cpu以外的资源包括与挂起任务相关联的内存、打开句柄,例如文件句柄,与操作系统的外部链接或开放套接字等。在一个示例性实现方式中,资源管理模块304可以用于在第一实例中仅释放cpu。此外,资源管理模块304监控正在执行的第一任务的资源需求。然后,资源管理模块304确定用于执行第一任务的资源可用性,并为第一任务分配资源以用于其执行。
77.在一个示例中,如果cpu不足以执行第一任务、相关联的内存,则可以实现从挂起
任务中顺序地释放资源的下一步骤。其中,从挂起任务中顺序地释放资源还包括:确定在仅释放cpu之后,第一任务的资源需求是否增加,以及通过基于确定的资源需求在第二实例中以增量方式释放与挂起任务相关联的内存,以挂起与挂起任务相关联的内存。资源管理模块304通过触发内存管理模块306将与挂起任务相关联的内存部分地溢出到磁盘来为第一任务分配资源。在一个示例中,内存管理模块306溢出与挂起任务存储的数据相关的内存。在大数据系统中,由于几乎90%的内存存储数据,因此内存管理模块306根据资源管理模块304确定的资源需求部分地挂起与挂起任务相关联的内存将释放大量资源,这些资源可供正在执行的第一任务使用。
78.在一个示例中,可以确定在仅释放cpu之后内存管理模块306是否可以提供资源,并且可以为第一任务部分地释放与挂起任务相关联的内存。当内存管理模块306不能进一步提供任何资源时,则在一个示例中,主设备102可以决定抢占挂起任务。然后,资源管理模块304可以将挂起任务的所有资源分配给第一任务以完成其执行。
79.在另一个示例中,可以确定在仅释放cpu并以增量方式释放与挂起任务相关联的内存之后,第一任务的资源需求是否增加。在一个示例中,当确定存在执行高优先级任务的资源需求时,主设备确定是否可以实现数据检查点设置方法。在一个示例中,当系统支持数据检查点设置系统时,可以如关于图6所讨论的那样实现通过数据检查点设置方法挂起任务。在另一个示例中,当执行任务的系统不支持数据检查点设置方法时,可以抢占挂起任务,并且可以将与挂起任务相关联的所有资源分配给第一任务以完成其执行。
80.在框908中,该方法包括由节点向主设备发送关于第一任务完成的确认。在节点完成第一任务的执行时,节点104可以接收第二指令,以供主设备恢复挂起任务。在一个示例中,主设备恢复挂起任务的第二指令可以基于完成执行第一任务所花费的时间。然后,节点104从运行任务被挂起的状态恢复挂起任务。在挂起任务被恢复后,内存管理模块306从运行任务被挂起的状态提供与挂起任务相关联的挂起的内存。在一个示例中,在任务恢复其执行后,内存管理模块306将在第二实例中部分溢出的数据提供回任务。
81.因此,本主题提供了一种分布式数据处理系统的挂起和恢复任务调度方法,其中,资源顺序挂起,从而提供了更好的资源利用率,并增加了分析大数据的数据处理系统的响应时间。本主题还通过提供资源的顺序挂起技术,最小化重新启动被抢占任务所产生的总体成本。
82.尽管分布式数据处理系统中的任务调度的实现以特定于结构特征和/或方法的语言描述,但应理解,本主题不一定限于所描述的特定特征或方法。相反,具体的特征和方法是在一些示例性实现方式的上下文中公开和解释的。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献