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

任务调度方法及电子设备和存储介质与流程

2022-11-30 10:02:22 来源:中国专利 TAG:


1.本发明属于任务调度技术领域,尤其涉及一种任务调度方法及电子设备和存储介质。


背景技术:

2.目前市面上已有的任务调度相似技术有dolphinscheduler(任务调度平台),azkaban(任务调度系统)等分布式任务调度框架。apache dolphinscheduler是一个分布式去中心化,易扩展的可视化dag工作流任务调度平台。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。azkaban是由linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。azkaban定义了一种kv文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。
3.dolphinscheduler支持多种的任务类型,但任务运行的环境单一,主要用于解决大数据任务调度平台,如果使用在机器学习场景或者多版本的大数据计算框架中并不友好。azkaban主要依托于hadoop(分布式文件系统)生态,作业类型偏向于hadoop hive(分布式计算平台)类型作业对机器学习场景和一些特定场景的任务不友好。调度中心和web server都存在单点故障,总体来说不够稳定,无法很好的支撑生产。dolphinscheduler和azkaban主要用于解决大数据任务调度平台,依赖一套大数据hadoop环境,需要额外的机器资源和人力维护成本。在使用spark(分布式计算引擎),flink(分布式计算引擎)等计算框架时候,如果想使用多版本,需要开发自己重新编译源码,存在一些依赖冲突和不适配等情况,有一定的使用门槛。在机器学习中dolphinscheduler和azkaban环境单一无法满足用户的使用场景。
4.发明人发现:不管是dolphinscheduler还是azkaban它们主要依托于大数据集群去运行任务,因此在需要搭建自身平台的情况下,需要搭建一套大数据hadoop集群,运维成本较高;dolphinscheduler,azkaban任务运行环境单一,对于多版本情况下容易出现依赖冲突,对于机器学习场景下很难满足不同的用户需求。


技术实现要素:

5.本发明实施例旨在至少解决上述技术问题之一。
6.第一方面,本发明实施例提供一种任务调度方法,包括:响应于用户在任务管理平台上对任务的配置,运行所述任务;当所述任务为执行任务时,读取与所述执行任务相关的信息并与kubernetes(数据抽取转换清洗)集群进行通讯;响应于所述kubernetes集群基于所述执行任务返回的应用实例,执行所述应用实例并存储执行结果。
7.第二方面,本发明实施例提供一种任务调度装置,包括:配置模块,用于响应于用户在任务管理平台上对任务的配置,运行所述任务;读取模块,用于当所述任务为执行任务时,读取与所述执行任务相关的信息并与kubernetes集群进行通讯;执行模块,用于响应于
所述kubernetes集群基于所述执行任务返回的应用实例,执行所述应用实例并存储执行结果。
8.第三方面,本发明实施例提供一种电子设备,其包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明上述任一项任务调度方法。
9.第四方面,本发明实施例提供一种存储介质,所述存储介质中存储有一个或多个包括执行指令的程序,所述执行指令能够被电子设备(包括但不限于计算机,服务器,或者网络设备等)读取并执行,以用于执行本发明上述任一项任务调度方法。
10.第五方面,本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括存储在存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行上述任一项任务调度方法。
11.本发明实施例通过将任务相关的信息与kubernetes集群进行通讯,基于执行任务返回的应用实例并执行应用实例,使得kubernetes作为计算资源调度,不需要额外搭建分布式文件系统集群,减少运维人力成本,也能够将计算存储分离,提升机器资源利用率。
附图说明
12.为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
13.图1为本发明提供的一种任务调度方法的一实施例的流程图;
14.图2为本发明提供的一种任务调度装置的一实施例的流程图;
15.图3为本发明提供的一种任务调度方法的实现步骤流程图;
16.图4为本发明的电子设备的一实施例的结构示意图。
具体实施方式
17.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
18.需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。
19.本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、元件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
20.在本发明中,“模块”、“装置”、“系统”等指应用于计算机的相关实体,如硬件、硬件和软件的组合、软件或执行中的软件等。详细地说,例如,元件可以、但不限于是运行于处理
器的过程、处理器、对象、可执行元件、执行线程、程序和/或计算机。还有,运行于服务器上的应用程序或脚本程序、服务器都可以是元件。一个或多个元件可在执行的过程和/或线程中,并且元件可以在一台计算机上本地化和/或分布在两台或多台计算机之间,并可以由各种计算机可读介质运行。元件还可以根据具有一个或多个数据包的信号,例如,来自一个与本地系统、分布式系统中另一元件交互的,和/或在因特网的网络通过信号与其它系统交互的数据的信号通过本地和/或远程过程来进行通信。
21.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”,不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
22.本发明实施例提供一种任务调度方法,该方法可以应用于电子设备。电子设备可以是电脑、服务器或者其他电子产品等,本发明对此不作限定。
23.请参考图1,其示出了本发明一实施例提供的一种任务调度方法。本技术实施例公开的任务调度方法可以适用于数据采集、数据分析、数据处理、机器学习以及任务管理自动化平台等场景,在此没有限制。
24.如图1所示,在步骤101中,响应于用户在任务管理平台上对任务的配置,管理所述任务;
25.在步骤102中,当所述任务为执行任务时,读取与所述执行任务相关的信息并与kubernetes集群进行通讯;
26.在步骤103中,响应于所述kubernetes集群基于所述执行任务返回的应用实例,执行所述应用实例并存储执行结果。
27.在本实施例中,对于步骤101,用户通过管理平台对任务进行配置,任务管理平台主要包括任务管理,dag(有向无环图)管理,用户权限,队列资源,监控告警,系统管理等,用户通过任务管理平台可以选择不同任务进行配置,如:shell(脚本语言),python(脚本语言),spark(分布式计算引擎),flink(分布式计算引擎),logstash(数据处理管道),tensorflow(深度学习框架),pytorch(深度学习框架)等,根据选择不同的任务,对不同的任务单独进行配置,配置还包括配置监控警告,当任务配置完成就可以直接运行该配置完成的任务。
28.之后,对于步骤102,当发现该配置完成的任务为需要执行的任务时,则需要通过db来读取该任务的相关配置信息,同时并与kubernetes集群进行连接,其中连接方式包含通信连接,kubernetes集群,用于资源的调度,以及管理任务pod的生命周期,确定当前任务是否为需要执行的任务是通过调度程序来确认的,例如,当调度程序发现该任务是需要执行的任务时候,会从db中读取任务相关的信息,然后和kubernetes集群进行通信。
29.然后,对于步骤103,kubernetes集群根据执行任务返回的pod(应用实例),执行该应用实例并存储执行结果,kubernetes集群用于接收调度信息,并根据调度信息创建pod并运行与需要执行的任务对应的命令,在kubernetes接到调度信息后会向镜像仓库/本地仓库中拉取指定的镜像文件,然后创建pod并运行相关任务指定的命令,其中镜像仓库/本地
仓库是通过用户根据需求制作不同的镜像文件储存至镜像仓库/本地仓库,通过创建好的pod来执行相关任务指定的命令,将执行结果进行储存,创建好的pod需要按照单独的进程来执行指定的命令,不管失败或成功都会再次向db回报任务的状态和结果。
30.本技术实施例的方法通过将任务相关的信息与kubernetes集群进行通讯,基于执行任务返回的应用实例并执行应用实例,使得kubernetes作为计算资源调度,不需要额外搭建分布式文件系统集群,减少运维人力成本,也能够将计算存储分离,提升机器资源利用率。
31.在一些可选的实施例中,用户通过上传镜像文件,将镜像文件存储在镜像仓库中,用于kubernetes接到调度信息后会向镜像仓库中拉取指定的镜像文件以便使用,其中镜像仓库是通过用户根据需求制作不同的镜像文件储存至镜像仓库,镜像仓库用于存放不同需求的镜像实例,可被kubernetes集群拉取并执行。
32.在一些可选的实施例中,用户根据选择不同的任务,对不同的任务单独进行配置,同时选择与该任务对应的镜像文件,其中配置还包括配置监控警告,当任务配置完成就可以直接运行该配置完成的任务。
33.需要说明的是,用户通过任务管理平台选择不同的任务,对不同的任务进行配置,同时还包括配置与选择的任务对应的监控警告,根据选择不同的任务,对不同的任务单独进行配置;确定当前任务是否为需要执行的任务是通过调度程序来确认的,通过调度程序来发现该任务是否为需要执行的任务,其中调度程序用于单个任务和dag(有向无环图)的执行和调度。
34.在一些可选的实施例中,kubernetes集群接收到执行任务时,从镜像仓库中拉取与执行任务相关的镜像文件,根据执行任务和镜像文件来创建对应的应用实例,并将执行任务的状态返回应用实例,并将执行任务的状态和配置信息存储至数据库中,例如,当调度程序发现该任务是需要执行的任务时候,会从数据库中读取任务相关的信息,然后和kubernetes集群进行通信,kubernetes集群接收到执行任务时如果出现异常则会将任务状态回执,异常信息写入数据库,会向镜像仓库/本地仓库中拉取指定的镜像文件,然后创建应用实例并运行相关任务指定的命令,并将执行任务的状态返回应用实例。
35.在一些可选的实施例中,当任务为执行任务时,从数据库中读取与执行任务相关的信息,其中相关的信息包括执行任务的配置信息;在与kubernetes集群进行通讯之后,若出现异常情况,将执行任务的任务状态回执和异常信息写入所述数据库中,例如,调度程序发现该任务是需要执行的任务时候,会从数据库中读取任务相关的信息,然后和kubernetes集群进行通信。如果出现异常则会将任务状态回执,异常信息写入数据库,kubernetes接到调度信息后,会向镜像仓库中拉取指定的镜像文件,然后创建应用实例并运行相关任务指定的命令,应用实例会按照单独的进程执行,当失败或成功都会再次向数据库会写执行任务的状态和结果。
36.如图2所示为本发明一实施例提供的一种任务调度装置的结构示意图,该系统可执行上述任意实施例所述的任务调度方法,并配置在终端中。
37.本实施例提供的一种任务调度执行装置100包括:配置模块110、读取模块120、执行模块130。
38.其中,110配置模块,用于响应于用户在任务管理平台上对任务的配置,运行所述
任务;120读取模块,用于当所述任务为执行任务时,读取与所述执行任务相关的信息并与kubernetes集群进行通讯;130执行模块,用于响应于所述kubernetes集群基于所述执行任务返回的应用实例,执行所述应用实例并存储执行结果。
39.需要说明的是,本技术中计算集群依托于kubernetes集群,kubernetes是容器集群管理系统,在降本增效,自动化部署,运维中有显著的效果,在大数据场景下计算集群主要依托于yarn(资源调度器),yarn是jvm资源编排,无法做到环境的隔离,kubernetes是容器编排,所以在资源,环境的隔离上kubernetes更优于yarn,在非大数据场景下dolphinscheduler和azkaban只能做单一环境的简单操作。其中,利用环境隔离可以独立的运行不同的任务。也可以运行不同版本的任务。如spark,flink,pytorch,tensorflow等。具体的,我们方案依靠docker容器对环境进行隔离,其中,文件系统的隔离:每个容器都有自己的root文件系统,进程隔离:每个容器都运行在自己的进程环境中,网络隔离:容器间的虚拟网络接口和ip地址都是分开的,资源隔离和分组:使用cgroups将cpu和内存之类的资源独立分配给每个docker容器。
40.而在kubernetes的帮助下我们可以根据不同的需求定制不同的容器环境,满足不同的任务场景。具体的,可以制作不同的镜像如:spark,flink,pytorch,tensorflow等,然后可以根据镜像运行不同的任务,使用的技术是docekr,在此不再赘述。
41.kubernetes的资源配额和命名空间可以很好地控制应用程序如何使用和共享系统资源,在一定的情况下我们可以将计算任务和应用服务部署在同一集群提升资源的利用;使用kubernetes作为计算资源调度,不需要额外搭建hadoop集群,减少运维人力成本。同时使用本专利可以很方便的做到计算和存储的分离,减少资源的浪费。具体的,可以将机器进行分类,也可以将机器放在一起混用。如在训练场景下合理的分配gpu卡结合合理的调度测率可以提升资源的整体使用率,可以采用如下技术手段:依托于kubernetes资源管理和调度策略(如volcano的调度策略)。
42.需要说明的是,本技术还提供一种备选方案,1、直接在宿主机上以命令提交执行的任务,不需要额外的开发成本,直接就可以使用;
43.2、通过livy向大数据集群提交任务,通过livy向大数据提交任务使用起来比较简单,维护起来也相对容易;
44.本专申请能够覆盖所有的任务使用场景,不仅可以以kubernetes作为资源调度,同时也可以很容易的拓展接入到hadoop生态中以yarn作为资源调度。
45.需要说明的是,本技术的发明方法适用于多种场景中,大到上百台kubernetes集群,小到3,4台集群;目前我们线上80%的大数据计算任务和所有机器学习任务都使用该方案执行,每天有6000多个机器学习任务和上万个大数据计算任务。每天实时处理几十tb的数据量,离线处理几百tb的数据量。所有环节的组件都是高可用,不存在单点故障,服务稳定率》99.9%;在部分场景下计算任务和应用服务部署在同一个kubernetes集群。同时计算和存储分离,和hadoop集群相比,机器资源利用率提升了2-3倍,本技术的发明方法实现了一个轻量级大数据平台方案,不需要再搭建和运维hadoop集群,能够把大数据和机器学习任务调度平台统一,减少人力投入成本,计算存储分离,提升机器资源利用率。
46.请参考图3,其出示了本发明的任务调度方法的实现流程图。
47.如图3所示,步骤1:用户首先根据需求制作不同的镜像文件,如spark,flink等,放
入镜像仓库或者本地仓库。
48.步骤2:用户通过任务管理平台可以选择不同任务进行配置,如:shell,python,spark,flink,logstash,tensorflow,pytorch等等,然后选择合适的镜像。同时可以配置一些监控告警,然后运行该任务。
49.步骤3:当调度程序发现该任务是需要执行的任务时候,会从db中读取任务相关的信息,然后和kubernetes集群进行通信。如果出现异常则会将任务状态回执,异常信息写入db(数据库)。
50.步骤4:kubernetes接到调度信息后,会向镜像仓库/本地仓库中拉取指定的镜像文件,然后创建pod并运行相关任务指定的命令。
51.步骤5:task pod按照单独的进程执行,失败或成功都会再次向db会写任务的状态和结果。
52.需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作合并,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
53.在一些实施例中,本发明实施例提供一种非易失性计算机可读存储介质,所述存储介质中存储有一个或多个包括执行指令的程序,所述执行指令能够被电子设备(包括但不限于计算机,服务器,或者网络设备等)读取并执行,以用于执行本发明上述任一项任务调度方法。
54.在一些实施例中,本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行上述任一项任务调度方法。
55.在一些实施例中,本发明实施例还提供一种电子设备,其包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行任务调度方法。
56.图4是本技术另一实施例提供的执行任务调度方法的电子设备的硬件结构示意图,如图4所示,该设备包括:
57.一个或多个处理器410以及存储器420,图4中以一个处理器410为例。
58.执行任务调度方法的设备还可以包括:输入装置430和输出装置440。
59.处理器410、存储器420、输入装置430和输出装置440可以通过总线或者其他方式连接,图4中以通过总线连接为例。
60.存储器420作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本技术实施例中的任务调度方法对应的程序指令/模块。处理器410通过运行存储在存储器420中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例任务调度方法。
61.存储器420可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系
统、至少一个功能所需要的应用程序;存储数据区可存储根据任务调度设备的使用所创建的数据等。此外,存储器420可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器420可选包括相对于处理器410远程设置的存储器,这些远程存储器可以通过网络连接至任务调度设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
62.输入装置430可接收输入的数字或字符信息,以及产生与任务调度设备的用户设置以及功能控制有关的信号。输出装置440可包括显示屏等显示设备。
63.所述一个或者多个模块存储在所述存储器420中,当被所述一个或者多个处理器410执行时,执行上述任意方法实施例中的任务调度方法。
64.上述产品可执行本技术实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本技术实施例所提供的方法。
65.本技术实施例的电子设备以多种形式存在,包括但不限于:
66.(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机、多媒体手机、功能性手机,以及低端手机等。
67.(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:pda、mid和umpc设备等。
68.(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器,掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。
69.(4)其他具有数据交互功能的机载电子装置,例如安装上车辆上的车机装置。
70.以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
71.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
72.最后应说明的是:以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围。
再多了解一些

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

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

相关文献