任务调度方法、装置、设备和计算机可读存储介质
技术领域
本公开的实施例一般涉及计算机技术领域,并且更具体地,涉及任务调度方法、装置、设备和计算机可读存储介质。
背景技术
目前的任务调度系统存在共享存储资源与非共享存储资源间的冲突,对于共享存储资源,容易造成多个任务对同一共享资源的抢占;对于非共享存储资源,则容易造成存储及计算资源的闲置。
以生物信息分析领域中的任务调度系统为例:生物信息分析领域都是大规模多台测序仪同时进行测序下机,而测序仪测序完成后,生物信息分析就会启动。生物信息分析的第一步就是数据拆分和质控,而数据拆分和质控是一个高耗CPU资源和IO资源的一种计算模式。
如附图图1所示,现在方案中,测序仪直接连到集群的共享存储中,下机数据被保存在集群的共享存储中,然后再由各计算节点在中心控制节点的控制下,对保存在集群的共享存储中的数据进行数据拆分、生物信息学分析以及数据拷贝等任务。由于新的数据又被源源不断的生产出来,旧的数据尚未被及时处理,这样就导致该存储常常处在一个高IO使用的状态。然而数据拆分使用的bcl2fasq是需要占用大量CPU资源和IO资源的计算工具。随后在执行fastqc对测序数据进行质量评估的时候,虽然单个执行fastqc不会暂用大量的资源,但是出现大量并发的时候CPU资源和IO资源将会被大量使用,量变引起了质变,这个时候就更加卡顿。在这个时候计算节点中可能还有其他非数据拆分的计算业务在大量执行,这就导致需要大量CPU资源和高IO的数据拆分任务无法按预期执行完成,而且整个集群的分析任务都无法按预期执行完成,数据交付严重延期这样会产生各种后续问题。
例如,由于Novaseq超高的测序通量,一次上机可以跑A,B面两张Flowcell,每张Flowcell测序下机的BCL文件大约为1.2T,通过bcl2fastq转换为fastq.gz的原始文件大约有2T,再经过质控处理又产生2T的质控后的fastq.gz文件,也就是说在一个比较短的时间内需要处理一张Flowcell的数据量大约是5.2T,一次Novaseq下机就需要处理大约10.4T的数据量。如果一次有4台Novaseq同时下机,这个时候就需要处理大约41.6T的数据量,可想而知,大规模的数据拆分对CPU资源和IO资源的要求是很高的。当多台Novaseq的测序仪同时测序下机,多个Flowcell测序下机的BCL文件需要同时拆分,而之前已经存在的fastq文件也需要进行生物信息学分析,当集群中fastq文件及其相关的分析结果文件等占用共享存储的空间较高,例如95%的时候,就会导致无法正常拆分交付,分析任务也无法按时完成,一批批的数据延期交付如同多米诺骨牌一样不断延伸。
另外,现在方案中任务调度属于类似“中央调度”的模式,需要用户首先登录其登录节点,然后在登录节点中投递计算任务到中心控制节点,最后由中心节点将计算任务按照某种策略投递到集群中的计算节点中进行任务的执行。因为不同的计算任务是不同的用户来自主投递的,这样某个计算任务需要多少CPU资源和内存资源以及使用时间都是用户随意填写并且很有可能大大的超出了本身需要,这样还导致了计算资源的浪费,当计算量很多的时候就会出现计算节点利用率不是很高但是后续的计算任务还在排队的情况。
发明内容
根据本公开的实施例,提供了一种任务调度方案。
在本公开的第一方面,提供了一种任务调度方法。该方法包括:生成调度任务,将所述调度任务发送给调度平台;向所述调度平台拉取调度任务,并执行所拉取的调度任务;将所述调度任务的执行结果同步到对应的存储中。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述调度任务为数据拆分任务,生成所述调度任务,将所述调度任务发送给调度平台包括:接收对应的测序仪发送的下机数据;将所述下机数据存储到本地存储中;生成数据拆分所需要的配置文件和所述调度平台需要的mod文件,将所述mod文件发送给调度平台;其中,所述mod文件包括了能够执行所述调度任务的同一逻辑分组内的拆分服务器;同一逻辑分组内的拆分服务器的本地存储是独立的。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,向所述调度平台拉取调度任务包括:根据所述配置文件向所述调度平台拉取可被当前拆分服务器执行的所述调度任务。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,执行所述调度任务包括:从上传所述调度任务的拆分服务器的本地存储中获取对应的下机数据进行数据拆分。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,将所述调度任务的执行结果同步到对应的存储中还包括:将数据拆分得到的fastq数据文件从对应的拆分服务器的本地存储同步到存储系统的对应的存储模块中。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述调度任务为分析任务,生成所述调度任务,将所述调度任务发送给调度平台包括:确定本地存储中是否存储所述分析需求对应的需要分析的样本;若是,则生成对应任务的数据分析所需要的配置文件和所述调度平台需要的mod文件,将所述mod文件发送给调度平台;其中,所述mod文件包括了能够执行所述调度任务的同一逻辑分组内的分析服务器;同一逻辑分组内的分析服务器的存储可以是本地存储也可以说是共享存储。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述调度任务为数据压缩任务;生成所述调度任务,将所述调度任务发送给调度平台包括:生成数据压缩所需要的配置文件和所述调度平台需要的mod文件,将所述mod文件发送给调度平台;所述mod文件包括了能够执行所述调度任务的同一逻辑分组内的计算节点。
在本公开的第二方面,提供了一种任务调度装置。该装置包括:任务生成模块,用于生成调度任务,将所述调度任务发送给调度平台;任务拉取模块,用于向所述调度平台拉取所述调度任务,并执行所述调度任务;同步模块,用于将所述调度任务的执行结果同步到对应的存储中。
在本公开的第三方面,提供了一种电子设备。该电子设备包括:存储器和处理器,所述存储器上存储有计算机程序,所述处理器执行所述程序时实现如以上所述的方法。
在本公开的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如根据本公开的第一方面的方法。
应当理解,发明内容部分中所描述的内容并非旨在限定本公开的实施例的关键或重要特征,亦非用于限制本公开的范围。本公开的其它特征将通过以下的描述变得容易理解。
附图说明
结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标记表示相同或相似的元素,其中:
图1示出了现有任务调度方案的示意图;
图2示出了能够在其中实现本公开的实施例的示例性运行环境的示意图;
图3示出了根据本公开的实施例的拆分服务器104的示意图;
图4示出了根据本公开的实施例的调度平台108的示意图;
图5示出了根据本公开的实施例的任务调度方法的流程图;
图6示出了根据本公开的实施例的基因分析任务调度方法的示意图;
图7示出了根据本公开的实施例的数据压缩任务调度方法的示意图;
图8示出了根据本公开的实施例的任务调度装置的方框图;
图9示出了能够实施本公开的实施例的示例性电子设备的方框图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的全部其他实施例,都属于本公开保护的范围。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
图2示出了能够在其中实现本公开的实施例的示例性运行环境200的示意图。在运行环境200中包括测序仪102、拆分服务器104、存储系统106、调度平台108。
在一些实施例中,测序仪102与拆分服务器104一一对应,运行环境100中包括多台测序仪102及与其对应的拆分服务器104。其中,如图3所示,拆分服务器104包括本地存储202、芯片收集器204和调度执行器206。
拆分服务器104的本地存储202接收并存储测序仪102的下机BCL数据;
芯片收集器204监控测序仪102的下机BCL数据,所述BCL数据是以芯片为单位放在单独的文件夹中的,芯片收集器204根据BCL数据的多少实时判断测序仪的测序进度;生成数据拆分需要的配置文件和调度平台108需要的拆分mod文件,然后生成调度任务,即调度平台108所需要的mod文件,最后由提交对象工具将所述调度任务提交到调度平台108;
调度执行器206向调度平台108拉取计算任务,对所存储的下机BCL数据进行bcl2fastq的高CPU和IO计算;然后对拆分得到的fastq测序数据进行高并行的fastqc的质控任务,最后将不同项目的fastq测序数据同步到存储系统106的对应存储模块中。
在一些实施例中,调度执行器206包括任务执行模块、任务对象获取模块、调度策略模块和心跳模块。
存储系统106包括云交付存储模块、集群共享存储模块和其他共享存储模块,还可以包括移动存储模块。
如图4所示,调度平台108包括分析对象管理模块302,流程模板管理模块304和计算节点管理模块306。
在一些实施例中,分析对象管理模块302用于接收调度执行器206的任务执行模块反馈的状态更新信息,并根据调度执行器206的任务对象获取模块的拉取(请求新任务),向其下发可被该拆分服务器执行的调度任务;流程模板管理模块304用于根据调度执行器206的任务对象获取模块的拉取(请求新任务),向其下发对应的流程模板;计算节点管理模块306用于接收调度执行器206的心跳模块的信息注册以及心跳信息。
在一些实施例中,运行环境100中还包括多个计算节点110,计算节点110用于执行数据压缩任务等,
图5示出了根据本公开实施例的用于任务调度方法500的流程图。方法500可以由图2中的拆分服务器104执行。本实施例中,以所述调度任务为数据拆分任务为例,包括以下步骤:
在框510,芯片收集器204监控对应的测序仪102发送的下机BCL数据;;其中,所述BCL数据是以芯片为单位放在单独的文件夹中的。
在一些实施例中,芯片收集器204检查所述BCL数据是否已经下机并传输完成。
在框520,芯片收集器204生成数据拆分需要的配置文件和调度平台108需要的拆分mod文件(mod文件是一个描述性质的文件,不同的业务会不同,他描述当前业务进行分析或拆分或某种任务所需要的输入信息集合,比如需要做数据拆分的bcl2fastq,这个时候的mod文件就描述执行bcl2fastq需要的各种输入参数,再比如需要做一个压缩任务,这个时候的mod文件就需要描述压缩前的原始文件路径和压缩后的压缩文件路径以及压缩程序需要的其他参数),将所述调度任务,即调度系统所需要的mod文件,发送给调度平台108;
在一些实施例中,芯片收集器204监控测序仪102的下机BCL数据,根据BCL数据的多少实时判断测序仪的测序进度;
在一些实施例中,存在多对对应的测序仪102与拆分服务器104;每对对应的测序仪102与拆分服务器104与其他对对应的测序仪102与拆分服务器104之间相互独立。所述调度任务用于调度当前拆分服务器,即提交到调度平台108的所述调度任务只能被当前拆分服务器拉取到。
在一些实施例中,存在多对对应的测序仪102与拆分服务器104;而所述多对对应的测序仪102与拆分服务器104可以划分为不同的逻辑分组,例如,第1对对应的测序仪102与拆分服务器104与第二对对应的测序仪102与拆分服务器104可以作为一个逻辑分组,在同一个逻辑分组中,各拆分服务器就需要有一个共享的存储用于存储数据,可以被同一个逻辑分组中的服务器访问。也就是说,在同一个逻辑分组中,所述调度任务可以被自身以及同一个逻辑分组中的其他拆分服务器拉取到。在一些实施例中,所述调度任务中还包括了负载均衡信息,即同一个逻辑分组中各拆分服务器所能拉取到的任务中的子任务。在不同的调度任务中,逻辑分组可以是不同的。
在一些实施例中,芯片收集器204通过提交对象工具将所述调度任务提交到调度平台108;
在框530,调度执行器206根据所述配置文件向调度平台108拉取调度任务;按照流程模板执行所拉取的调度任务。
在一些实施例中,各拆分服务器104的调度执行器206的任务对象获取模块向调度平台108拉取调度任务;所述拉取可以是定期执行的;接收调度平台108的分析对象管理模块302下发的可被该拆分服务器执行的调度任务;并接收调度平台108的流程模板管理模块下发的对应的流程模板;调度执行器206的调度策略模块根据所述调度任务和流程模板调用调度执行器206的任务执行模块执行所述调度任务,从上传所述调度任务的测序仪102的本地存储202中获取对应的下机BCL数据进行数据拆分和质控。
在本实施例中,向调度平台108拉取调度任务与现有的调度平台将调度任务主动下发到各计算节点不同,提高了计算节点的权限和灵活性。所拉取到的调度任务可以是该拆分服务器104上传的调度任务,也可以是与该拆分服务器属于同一逻辑分组中的其他拆分服务器104上传的可以由同一逻辑分组中的所有拆分服务器104执行的调度任务。
在一些实施例中,调度执行器206的任务执行模块执行所述调度任务,并将调度任务的执行状态反馈给调度平台108的分析对象管理模块302。一个调度任务中可能包括多个子任务,例如50个子任务,每个子任务使用资源情况不一,执行时间也不一。任务执行模块可以将每个任务中子任务的起止执行时间,现在执行的状态反馈给调度平台108的分析对象管理模块302。在一些实施例中,将由例如50个子任务组成的一个任务叫做分析对象,其中的每一个子任务叫做执行命令。
在一些实施例中,调度执行器206的心跳模块的信息注册以及心跳信息事先向调度平台108的计算节点管理模块306进行注册,并保持心跳连接。
在一些实施例中,所述调度任务包括bcl2fastq拆分任务和/或fastqc质控任务。所述调度任务还可以是分析任务、数据压缩任务等。
在框540,将所述调度任务的执行结果同步到对应的存储中。
在一些实施例中,执行所述调度任务生成的fastq数据文件存储在拆分服务器104的本地存储202中,拆分服务器104将所述fastq数据文件根据对应的项目同步到存储系统106的不同的存储模块中。
存储系统106包括云交付存储模块、集群共享存储模块和其他共享存储模块,还可以包括移动存储模块。在一些实施例中,若数据交付时间要求紧张,则可以采用移动存储模块从本地存储202中直接复制需要交付的fastq数据文件。
在一些实施例中,所述方法还包括:
在框450,调度平台108接收调度执行器206反馈的状态信息,并进行显示。
在一些实施例中,所述状态信息包括:每个任务中子任务的起止执行时间,现在执行的状态。在人机界面中,可以以不同的颜色表示现在执行的状态。
根据本公开的实施例,实现了以下技术效果:通过向调度平台上传调度任务,并从调度平台拉取可执行的调度任务,避免了对CPU资源和IO资源的高占用状态导致的卡顿等,保证了数据交付的准时性。
在一些实施例中,以所述调度任务为基因检测类型的分析任务为例,如图6所示:
拆分服务器104还包括批次监控器208(其中,也可以由独立的计算节点执行所述分析任务),批次监控器208根据用户向拆分服务器104提交的分析需求,确定本地存储202中是否存储所述分析需求对应的需要分析的样本,其中,通过对本地存储202中存储的样本经过一些列的判定检测,确定本地存储202中是否存储所述分析需求对应的需要分析的样本。若是,则生成对应任务的数据分析所述的配置文件和调度平台108所需的mod文件,通过提交分析对象工具将所述mod文件,即分析任务,上传给调度平台108。拆分服务器104根据所述配置文件向调度平台108拉取分析任务;拆分服务器104向调度平台108拉取分析任务。在一些实施例中,拆分服务器104的调度执行器206根据配置文件向调度平台108拉取分析任务;按照流程模板执行所述分析任务。具体过程与上述调度任务的上传及拉取步骤类似,在此不再赘述。
在本实施例中,拆分服务器104作为分析服务器执行分析任务。所述mod文件包括了能够执行所述调度任务的同一逻辑分组内的分析服务器;同一逻辑分组内的分析服务器的存储可以是本地存储也可以是共享存储。
根据本公开的实施例,实现了以下技术效果:通过向调度平台上传调度任务,并从调度平台拉取可执行的分析任务,避免了对CPU资源和IO资源的高占用状态导致的卡顿等,保证了数据交付的准时性。
在一些实施例中,以所述调度任务为数据压缩任务为例,如图7所示:
对于压缩任务,由于同时并存的压缩任务数量较大,因此,在本实施例中,将多个计算节点(其中,所述计算节点可以是独立的计算节点,也可以是拆分服务器)划分为同一个逻辑分组,这样,任一计算节点通过脚本生成mod文件,即数据压缩任务,上传给调度平台108;所述数据压缩任务可以被同一各逻辑分组内的所有计算节点拉取。各计算节点的调度执行器206根据所拉取的数据压缩任务,调用工具箱中的数据压缩工具执行所述数据压缩任务。其中,所述数据可以存储在存储系统106的集群共享存储模块中。
在本实施例中,生成对应任务的数据压缩所需要的配置文件和所述调度平台需要的mod文件,将所述mod文件发送给调度平台;所述mod文件包括了能够执行所述调度任务的同一逻辑分组内的计算节点。
根据本公开的实施例,实现了以下技术效果:通过向调度平台上传调度任务,并从调度平台拉取可执行的分析任务,实现了计算节点对任务的可控性。
在一些实施例中,拆分任务和/或分析任务和/或压缩任务等调度任务可以由运行环境200中的一个或多个拆分服务器104和/或一个或多个分析服务器(拆分服务器104)和/或一个或多个计算节点110等执行。根据本公开的实施例,实现了以下技术效果:通过向调度平台上传调度任务,并从调度平台拉取可执行的分析任务,实现了计算节点对任务的可控性,避免了对CPU资源和IO资源的高占用状态导致的卡顿等,保证了数据交付的准时性。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制,因为依据本公开,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开所必须的。
以上是关于方法实施例的介绍,以下通过装置实施例,对本公开所述方案进行进一步说明。
图8示出了根据本公开的实施例的任务调度装置800的方框图。装置800可以被包括在图1的拆分服务器104104中或者被实现为拆分服务器104X104。如图8所示,装置800包括:
任务生成模块810,用于生成所述调度任务,将所述调度任务发送给调度平台;
任务拉取模块820,用于向所述调度平台拉取所述调度任务,并执行所述调度任务;
同步模块830,用于将所述调度任务的执行结果同步到对应的存储中。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,所述描述的模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
图9示出了可以用来实施本公开的实施例的电子设备900的示意性框图。设备900可以用于实现图1的消息系统104和消息到达率确定系统106中的至少一个。如图所示,设备900包括中央处理单元(CPU)901,其可以根据存储在只读存储器(ROM)902中的计算机程序指令或者从存储单元908加载到随机访问存储器(RAM)903中的计算机程序指令,来执行各种适当的动作和处理。在RAM 903中,还可以存储设备900操作所需的各种程序和数据。CPU901、ROM 902以及RAM 903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。
设备900中的多个部件连接至I/O接口905,包括:输入单元906,例如键盘、鼠标等;输出单元907,例如各种类型的显示器、扬声器等;存储单元908,例如磁盘、光盘等;以及通信单元909,例如网卡、调制解调器、无线通信收发机等。通信单元909允许设备900通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理单元901执行上文所描述的各个方法和处理,例如方法500。例如,在一些实施例中,方法500可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元908。在一些实施例中,计算机程序的部分或者全部可以经由ROM 902和/或通信单元909而被载入和/或安装到设备900上。当计算机程序加载到RAM 903并由CPU 901执行时,可以执行上文描述的方法500的一个或多个步骤。备选地,在其他实施例中,CPU 901可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法500。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)等等。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。