一种管理流式计算应用程序的方法、装置及计算设备与流程

文档序号:20016896发布日期:2020-02-25 10:42阅读:208来源:国知局
一种管理流式计算应用程序的方法、装置及计算设备与流程

本申请涉及计算机技术领域,尤其是涉及一种管理流式计算应用程序的方法、装置及计算设备。



背景技术:

物联网生态系统中的设备产生了急剧增长的海量数据,且具有迫切的分析需求。在这个领域的解决方案将有非常大的潜力可以挖掘,比那些要花很长时间才能实现的项目能更快地获得投资回报。大数据分析应用程序在广泛发展,许多行业都可以通过它进行行业资源的优化。目前,大数据分析中包括:流式计算(spark)、实时流处理(storm)、开源流处理框架(flink)、流处理引擎(nifi)等。大数据生态圈内spark的发展势头迅猛,应用最为广泛,体系最为健全。

spark流式计算的特点是应用程序提交之后便实时常驻运行,除非是人为停止,在实际中,线上运行的流式计算应用程序较多,但对于应用程序的启动和停止只能用户逐一进行操作,对应用程序的管理效率较低。

因此,对流式计算应用程序进行高效率、高质量、高时效性的管理是目前亟待解决的问题。



技术实现要素:

本申请实施例提供一种管理流式计算应用程序的方法、装置及计算设备,用于提高对流式计算应用程序的管理效率。

第一方面,提供一种管理流式计算应用程序的方法,所述方法包括:

从预先设置的管理配置列表包括的至少一个待管理流式计算应用程序中确定目标流式计算应用程序;其中,所述管理配置列表包括每个待管理流式计算应用程序对应的应用程序名称和管理参数信息;

确定所述目标流式计算应用程序的当前运行状态;

根据所述目标流式计算应用程序的当前运行状态和对应的管理参数信息,对所述目标流式计算应用程序进行管理操作。

可选的,若管理参数信息包括管理类型参数名称和管理类型参数值,则根据所述目标流式计算应用程序的当前运行状态和对应的管理参数信息,对所述目标流式计算应用程序进行管理操作,包括:

在所述目标流式计算应用程序的管理类型参数值为重启告警时,若所述当前运行状态为下线状态,则启动所述目标流式计算应用程序,以及输出告警信息;

在所述目标流式计算应用程序的管理类型参数值为仅告警时,若所述当前运行状态为下线状态,则输出告警信息;

在所述目标流式计算应用程序的管理类型参数值为保持时,保持所述当前运行状态。

可选的,若管理参数信息包括内部异常探测参数名称和内部异常探测参数值,则根据所述目标流式计算应用程序的当前运行状态和对应的管理参数信息,对所述目标流式计算应用程序进行管理操作,包括:

若所述目标流式计算应用程序的内部异常探测参数值为预定选项值,则在所述当前运行状态为上线状态时对所述目标流式计算进行应用程序内部异常探测,或者,在所述当前运行状态为下线状态时启动所述目标流式计算应用程序、并对所述目标流式计算进行应用程序内部异常探测。

可选的,对所述目标流式计算应用程序进行应用程序内部异常探测,包括:

获得所述目标流式计算应用程序在预定时间段内的运行状态数据;

根据所述运行状态数据,确定所述目标流式计算应用程序在所述预定时间段内执行的各个任务对应的任务执行信息;其中,所述任务执行信息包括各个任务的执行时长和执行结果;

根据所述任务执行信息确定对所述目标流式计算应用程序的内部异常探测结果。

可选的,根据所述任务执行信息确定对所述目标流式计算应用程序的内部异常探测结果,包括:

根据所述任务执行信息统计在所述预定时间段内的总任务数、执行成功的任务数、执行失败的任务数与执行超时的任务数;

若所述总任务数与所述执行成功的任务数相同,则确定所述目标流式计算应用程序正常运行;

若所述执行失败的任务数超过1,则确定所述目标流式计算应用程序出现异常,并输出执行失败的任务的任务描述信息;

若所述执行超时的任务数超过1,则确定所述目标流式计算应用程序出现异常,并输出执行超时的任务的任务描述信息。

可选的,获得所述目标流式计算应用程序在预定时间段内的运行状态数据,包括:

确定所述目标流式计算应用程序的应用程序标识,所述应用程序标识是运行所述目标流式计算应用程序的设备为所述目标流式计算应用程序分配的;

按照预定地址构建方式构建与所述应用程序标识对应的目标地址;

从所述目标地址对应的运行状态页面中获取所述运行状态数据。

可选的,从预先设置的管理配置列表包括的至少一个待管理流式计算应用程序中确定目标流式计算应用程序,包括:

根据所述管理配置列表包括的至少一个待管理流式计算应用程序的应用程序名称,确定对应的流式计算应用程序的业务优先级;

按照业务优先级从高到低的顺序对所述至少一个待管理流式计算应用程序排序;

选取排序位置满足预设条件的流式计算应用程序作为所述目标流式计算应用程序。

可选的,所述方法还包括:

获得用户输入的应用程序控制信息;其中,所述应用程序控制信息包括所述管理配置列表中包括的至少一个应用程序名称以及对应的操作方式;

根据所述操作方式,对所述至少一个应用程序名称对应的各个流式计算应用程序执行相应的操作。

第二方面,提供一种管理流式计算应用程序的装置,所述装置包括:

第一确定模块,用于从预先设置的管理配置列表包括的至少一个待管理流式计算应用程序中确定目标流式计算应用程序;其中,所述管理配置列表包括每个待管理流式计算应用程序对应的应用程序名称和管理参数信息;

第二确定模块,用于确定所述目标流式计算应用程序的当前运行状态;

管理模块,用于根据所述目标流式计算应用程序的当前运行状态和对应的管理参数信息,对所述目标流式计算应用程序进行管理操作。

可选的,若管理参数信息包括管理类型参数名称和管理类型参数值,所述管理模块用于:

在所述目标流式计算应用程序的管理类型参数值为重启告警时,若所述当前运行状态为下线状态,则启动所述目标流式计算应用程序,以及输出告警信息;

在所述目标流式计算应用程序的管理类型参数值为仅告警时,若所述当前运行状态为下线状态,则输出告警信息;

在所述目标流式计算应用程序的管理类型参数值为保持时,保持所述当前运行状态。

可选的,若管理参数信息包括内部异常探测参数名称和内部异常探测参数值,所述管理模块用于:

若所述目标流式计算应用程序的内部异常探测参数值为预定选项值,则在所述当前运行状态为上线状态时对所述目标流式计算进行应用程序内部异常探测,或者,在所述当前运行状态为下线状态时启动所述目标流式计算应用程序、并对所述目标流式计算进行应用程序内部异常探测。

可选的,所述管理模块用于:

获得所述目标流式计算应用程序在预定时间段内的运行状态数据;

根据所述运行状态数据,确定所述目标流式计算应用程序在所述预定时间段内执行的各个任务对应的任务执行信息;其中,所述任务执行信息包括各个任务的执行时长和执行结果;

根据所述任务执行信息确定对所述目标流式计算应用程序的内部异常探测结果。

可选的,所述管理模块用于:

根据所述任务执行信息统计在所述预定时间段内的总任务数、执行成功的任务数、执行失败的任务数与执行超时的任务数;

若所述总任务数与所述执行成功的任务数相同,则确定所述目标流式计算应用程序正常运行;

若所述执行失败的任务数超过1,则确定所述目标流式计算应用程序出现异常,并输出执行失败的任务的任务描述信息;

若所述执行超时的任务数超过1,则确定所述目标流式计算应用程序出现异常,并输出执行超时的任务的任务描述信息。

可选的,所述管理模块用于:

确定所述目标流式计算应用程序的应用程序标识,所述应用程序标识是运行所述目标流式计算应用程序的设备为所述目标流式计算应用程序分配的;

按照预定地址构建方式构建与所述应用程序标识对应的目标地址;

从所述目标地址对应的运行状态页面中获取所述运行状态数据。

可选的,所述第一确定模块用于:

根据所述管理配置列表包括的至少一个待管理流式计算应用程序的应用程序名称,确定对应的流式计算应用程序的业务优先级;

按照业务优先级从高到低的顺序对所述至少一个待管理流式计算应用程序排序;

选取排序位置满足预设条件的流式计算应用程序作为所述目标流式计算应用程序。

可选的,所述装置还包括控制模块,用于:

获得用户输入的应用程序控制信息;其中,所述应用程序控制信息包括所述管理配置列表中包括的至少一个应用程序名称以及对应的操作方式;

根据所述操作方式,对所述至少一个应用程序名称对应的各个流式计算应用程序进行相应的控制。

第三方面,提供一种计算设备,所述计算设备包括:

存储器,用于存储程序指令;

处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行第一方面中任一所述的方法包括的步骤。

第四方面,提供一种存储介质,所述存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行第一方面中任一所述的方法包括的步骤。

第五方面,提供一种包含指令的计算机程序产品,当所述计算机程序产品在计算机上运行时,使得计算机执行上述各种可能的实现方式中所描述的管理流式计算应用程序的方法。

本申请实施例中,为需要管理的流式计算应用程序设备预先设置配置管理列表,例如将多个待管理流式计算应用程序及其对应的管理参数信息预先写入配置管理文件中,进而,在需要对其中的一些目标流式计算应用程序进行管理时,可以直接调用配置管理文件中与这些目标流式计算应用程序对应的管理配置列表,并根据调用的管理配置列表以及每个目标流式计算应用程序的当前运行状态对其进行相应的应用程序管理。如此,可以通过调用配置管理列表的方式对多个流式计算应用程序进行批量的管理操作,进而提升对流式计算应用程序的管理效率。并且,由于是由系统直接读取配置管理列表的方式来实现的应用程序的批量管理,相对于相关技术中人工手动地进行管理操作的方式,可以进一步地提高管理效率,并且提高对流式计算应用程序管理的时效性。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请实施例提供的spark计算引擎的运行框架的示意图;

图2为本申请实施例提供的流式计算实现的工作原理的示意图;

图3为本申请实施例提供的流式计算应用程序在线运行的流程图;

图4为本申请实施例提供的管理流式计算应用程序的方法的流程图;

图5为本申请实施例提供的对流式计算应用程序进行管理操作的流程图;

图6a为本申请实施例提供的管理流式计算应用程序的装置的结构框图;

图6b为本申请实施例提供的管理流式计算应用程序的装置的另一结构框图;

图7为本申请实施例提供的计算设备的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互任意组合。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

本发明的说明书和权利要求书及上述附图中的术语“第一”和“第二”是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的保护。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。

本发明实施例中,“多个”可以表示至少两个,例如可以是两个、三个或者更多个,本发明实施例不做限制。

另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,在不做特别说明的情况下,一般表示前后关联对象是一种“或”的关系。

在介绍本申请实施例之前,首先对本申请中的部分技术特征进行介绍,以便于本领域技术人员理解。

目前业界涉及的大数据分析计算类型,可以分为以下三类:

(1)复杂的批量数据处理(batchdataprocessing),这一类计算的计算时间跨度在数十分钟到数小时之间,一般是间隔一段时间(如半小时或1小时)提交运行一次。

(2)实时数据流的数据处理(streamingdataprocessing),即数据的流式处理,这一类计算的计算时间跨度在数百毫秒到数秒之间,一般是实时在线即应用程序一旦提交就不允许退出,常驻运行,处理实时输入的数据流。

(3)历史数据的交互式查询(interactivequery),这一类的计算时间跨度在数十秒到数分钟之间,一般是由用户触发,不定时生成计算应用程序。

spark计算引擎,是加州大学伯克利分校的amp实验室(ucberkeleyamplab)开源的通用型分布式大数据计算框架,是大数据计算技术领域中用于计算和分析的主流技术引擎,它涵盖了上述三种大数据计算类型,尤其是前两类:批量计算和流式计算。

在spark计算引擎中,计算任务涉及四个概念:应用(application)、作业(job)、阶段(stage)和任务(task)。这四个概念的关系是:1个application包含多个job,每个job可以划分为多个stage,每个stage包含一组多个(数量同数据量相关联)相同的task。其中job、stage、task由spark计算引擎负责管理维护,application由用户自己管理,是用户通过spark-submit提交的一个完整的业务计算单位。

spark计算引擎的运行框架如图1所示,主要涉及2个角色,1个为driver,1个是worker。driver为计算任务(task为单位)的分发管理节点,worker为计算任务的执行节点。worker和driver本质上是一个java虚拟机(javavirtualmachine,jvm)。

sparkstreaming,是spark提供的流式计算实现,它可以接收实时的数据输出,并按指定时间片(如2s)累积为1个弹性分布式数据集(resilientdistributeddataset,rdd)作为计算单位并进行处理,输出处理结果。工作原理如图2所示,以时间片2秒为例,rdd@time1(datafromtime0to1)为一个时间批次,如11:00:00-11:00:02,这段时间接收的数据计算任务,rdd@time2为11:00:02-11:00:04这段时间接收的数据计算任务,依次类推。

在生产的大数据应用系统中,通常会有几十甚至上百个流式计算应用程序在执行,而这些应用程序一般要求是7*24小时实时在线,且每个流式计算应用程序内部的每个批次数据处理都有时间要求,像图2中时间片长度为2秒。

spark流式计算应用程序的特点是提交之后便实时常驻运行,除非是人为停止。当发生因异常原因导致应用程序挂掉的情况下,也应当立马重新提交启动应用程序。故每一个spark流式计算应用程序的生命周期内的状态会不停转换。如图3所示,流式计算应用程序的生命周期的入口是应用程序提交,出口是正常停止,在应用程序提交运行后,存在2种状态:正常重启和异常退出,这两种情况都需要将该应用程序重新切换到初始状态,即重新提交,启动流式计算应用程序。

如前所述的,对流式计算应用程序进行高效率、高质量、高时效性的管理是目前亟待解决的问题。相关技术中,对流式计算应用程序的管理使用的是sparkonyarn模式,提交应用程序只能由spark-submit命令提供,应用程序停止则由yarn提供的命令行和web操作实现。但yarn本身侧重于资源管理,对应用程序管理也是以一个应用程序为单位进行。且管理应用程序都是以applicationid为唯一标识,来定位要管理的spark流式计算应用程序,而applicationid不带有具体的业务信息,因此难以从此applicationid中直观看出这个应用程序是实现什么功能,是什么业务。需要通过applicationid二次查看相应流式计算应用程序id附属的信息,才能知道要操作的应用程序是涉及哪个业务。此外,对于有很多流式计算应用程序的场景下,批量启动、停止流式计算应用程序,操作效率极低且很繁索,极容易误操作。

鉴于此,本申请实施例提供一种管理流式计算应用程序的方法,通过调用配置管理信息的方式对多个流式计算应用程序进行批量的管理操作,进而提升对流式计算应用程序的管理效率。并且,由于是由系统直接读取配置管理信息的方式来实现的应用程序的批量管理,相对于相关技术中人工手动地进行管理操作的方式,可以进一步地提高管理效率,并且提高对流式计算应用程序管理的时效性。

为进一步说明本申请实施例提供的技术方案,下面结合附图以及具体实施方式对此进行详细的说明。虽然本申请实施例提供了如下述实施例或附图所示的方法操作步骤,但基于常规或者无需创造性的劳动在所述方法中可以包括更多或者更少的操作步骤。在逻辑上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本申请实施例提供的执行顺序。所述方法在实际的处理过程中或者装置执行时,可按照实施例或者附图所示的方法顺序执行或者并行执行。

基于上述内容,本申请提供一种管理流式计算应用程序的方法。该方法可以用于大数据领域需要进行实时批量任务处理的系统中。请参见图4所示,本申请实施例中的管理流式计算应用程序的方法的流程描述如下:

步骤401:从预先设置的管理配置列表包括的至少一个待管理流式计算应用程序中确定目标流式计算应用程序。

在本申请实施例中,在对流式计算应用程序进行管理之前,可通过编写配置文件的方式对待管理流式计算应用程序进行配置,可以将配置文件编写成流式计算应用程序管理列表,例如,将该表称作管理配置列表,管理配置列表中包含至少一个待管理流式计算应用程序,以及每个待管理流式计算应用程序对应的应用程序名称和管理参数信息,每个流式计算应用程序配置一行命令,有多少个应用程序则配置多少行,其中,每一行命令中包括流式计算应用程序对应的应用程序名称和管理参数信息。对流式计算应用程序进行管理时,可通过从流式计算应用程序管理配置列表中确定想要管理的流式计算应用程序,例如可以以流式计算应用程序对应的应用程序名称为主要识别依据从流式计算应用程序的管理配置列表中找到想要管理的目标流式计算应用程序,从而实现对确定出的目标流式计算应用程序进行实时的守护和管理。

在一种可能的实施方式中,管理配置列表中包括的应用程序名称是按照预定命名规则确定的并能表明对应的流式计算应用程序的业务内容,且与运行流式计算应用程序的设备为目标流式计算应用程序分配的应用程序标识(即系统分配的applicationid)之间具有映射关系,也就是说,通过本申请实施例中的预定命名规则可以直接通过应用程序名称即可体现对应流式计算应用程序的业务内容,相对于相关技术中系统分配的applicationid不带有具体的业务信息的命名方式来说,可以提高流式计算应用程序的识别效率,尤其是可以增加对流式计算应用程序的业务内容的辨识度。

在计算引擎的运行过程中,不同的业务内容可以具有不同的优先级,所以,可以在系统的运行过程中,通过各个流式计算应用程序的应用程序名称即可确定其对应的业务内容的优先级顺序,进而可以知晓各个流式计算应用程序的业务优先级。所以在一种可能的实施方式中,可以先根据管理配置列表中的每个待管理流式计算应用程序的应用程序名称,确定每个待管理流式计算应用程序的业务优先级,然后按照优先级从高到低的顺序对至少一个待管理流式计算应用程序进行排序,选取排序位置满足预设条件的流式计算应用程序作为本轮需要进行管理操作的目标流式计算应用程序,例如将按照业务优先级排序之后,选取排序位于前20位的流式计算应用程序作为目标流式计算应用程序,等等。

在具体的实施过程中,可以将流式计算应用程序的管理配置列表抽象成如下表形式进行表示,下表表示的是一个流式计算应用程序对应的管理配置列表。

对上表中的字段的意义说明:

1、流式计算应用程序名称。

采用字符方式命名,可用于指示该应用程序对应的具体业务内容,或者用户想要通过应用程序名称知道的与该应用程序相关的其它重要信息,在此对该应用程序名称可指示的内容不做具体的限定。

2、流式计算应用程序提交参数。

指spark应用程序的执行参数,以脚本文件格式存在。脚本内指定spark应用程序的具体运行参数,如excutor的cpu核数,内存大小等。

3、应用程序管理类型。

用于标识对应的流式计算应用程序运行过程中被管理的方式,有三个管理类型参数值,意义分别如下:

(1)重启告警(autobootandwarn):实时被守护管理,应用程序异常结束后自动重启,并发出该应用程序已重新启动的告警信息;

(2)仅告警(onlywarn):实时被守护管理,应用程序异常结束后不对该应用程序进行任何处理,且发出该应用程序没有运行的告警信息;

(3)保持(none):实时被守护管理,只对该应用程序进行监听,应用程序异常结束后不对该应用程序做任何操作,且不发出告警信息。

4、内部异常探测。

用于标识流式计算应用程序内部是否开启对任务执行结果的探测功能,一般有两种选项,有两种参数值(例如也可以称作选项值):

(1)off:不开启流式计算应用程序的内部异常探测功能;

(2)on:开启流式计算应用程序的任务僵死探测,只适用于应用程序管理类型配为有发出告警功能的两类,即autobootandwarn和onlywarn。

具体的,如前所述,由于每个流式计算应用程序对应的应用程序名称可以表明该应用程序的业务内容,因此,流式计算应用程序管理系统可以通过每个应用程序对应的业务内容确定出该应用程序的业务优先级,进而在选择本次批量管理的应用程序时,可以首先选择业务优先级较高的应用程序来进行管理,将其作为目标流式计算应用程序,从而可以增强流式应用程序执行任务的可靠性,提升对流式计算应用程序管理效率。

在其它实施方式中,或者可以将管理配置列表中的所有待管理流式计算应用程序确定为目标流式计算应用程序,或者可以采用其它策略选择目标流式计算应用程序,本申请实施例不做限制。

在其它实施例中,获取用户输入的至少一个应用程序名称以及对应的操作方式,该操作方式用于指示该流式计算应用程序运行或停止,根据该操作方式,对至少一个应用程序名称对应的各个流式计算应用程序执行相应的操作。

在具体的实施过程中,用户输入想要管理的流式计算应用程序的应用程序名称以及对应的操作方式,流式计算应用程序管理系统获取并解析用户输入的命令,对命令中包含的流式计算应用程序进行相应的操作,例如,用户输入的命令是killall,则表示停止管理配置列表中所有流式计算应用程序;又例如,用户输入的命令是killapp1,app2,则表示停止应用程序名称是app1、app2的流式计算应用程序;类似的,当用户输入的命令是runall或者runapp1,app2时,则表示开启管理配置列表中所有流式计算应用程序或者应用程序名称是app1、app2的流式计算应用程序,其中,当要操作多个应用程序时,用户输入的命令中的多个应用程序名称之间以逗号隔开,这样,当用户需要对流式计算应用程序进行启动或停止时,不再需要逐一进行操作,可以实现对流式计算应用程序进行批量的管理,从而提升管理效率。

步骤402:确定所述目标流式计算应用程序的当前运行状态。

在本申请实施例中,将确定出的要管理的目标流式计算应用程序与线上正在运行的流式计算应用程序进行匹配,确定目标流式计算应用程序是否正在线上运行,如果在线上运行的流式计算应用程序中找到了该目标流式计算应用程序,则说明该目标流式计算应用程序正在线上运行,如果在线上运行的流式计算应用程序中没找到该目标流式计算应用程序,则说明该目标流式计算应用程序没在线上运行,出现了异常停止的情况。

步骤403:根据所述目标流式计算应用程序的当前运行状态和对应的管理参数信息,对所述目标流式计算应用程序进行管理操作。

在本申请实施例中,管理参数信息可以包括管理类型参数名称和内部异常探测参数名称,以及管理类型参数名称对应的管理类型参数值和内部异常探测参数名称对应的内部异常探测参数值,根据管理参数信息对目标流式计算应用程序进行管理时,可以只根据管理类型参数名称进行管理,也可以只根据内部异常探测参数名称进行管理,还可以同时根据管理类型参数名称和内部异常探测参数名称进行管理,在本申请实施例中并不做限定。

在一种可能的实施方式中,若管理参数信息包括管理类型参数名称和管理类型参数值,其中,管理类型参数值例如可以是管理类型参数指示信息,在所述目标流式计算应用程序的管理类型参数指示信息为重启告警时,若所述当前运行状态为下线状态,则启动所述目标流式计算应用程序,以及输出告警信息,在所述目标流式计算应用程序的管理类型参数指示信息为仅告警时,若所述当前运行状态为下线状态,则输出告警信息,在所述目标流式计算应用程序的管理类型参数指示信息为保持时,保持所述当前运行状态。

例如,若检测到该目标流式计算应用程序的管理类型参数指示信息为重启告警类型,该类型对应的参数值为autobootandwarn,则将该流式计算应用程序自动重启放入下一个循环中重新进行监测,并发出已重新启动的告警信息。

若检测到该目标流式计算应用程序的管理类型参数指示信息为仅告警类型,该类型对应的参数值为onlywarn,则不对该流式计算应用程序进行任何处理直接放入下一个循环中进行监测,且发出所述目标流式计算应用程序没有运行的告警信息。

若检测到该目标流式计算应用程序的管理类型参数指示信息为保持类型,该类型对应的参数值为none,则不对该流式计算应用程序进行任何处理直接放入下一个循环中进行监测,且不发送告警信息。

这样,流式计算应用程序管理系统可以在对目标流式计算应用程序进行处理的同时向用户发出告警信息,让用户知道每个目标流式计算应用程序的运行状态,从而实现对目标流式计算应用程序的实时守护管理。

在一种可能的实施方式中,管理参数信息包括内部异常探测参数名称和内部异常探测参数值,根据目标流式计算应用程序的当前运行状态和对应的管理参数信息,对该目标流式计算应用程序进行管理操作。对于流式计算应用程序内部的每一批次计算失败异常,现有的做法是从业务代码实现上规避,在上线业务前通过测试优化,将每个时间片的计算时间控制在既定范围内。这种方式较适用于即定负载或应用程序计算环境极为稳定的情况下。但当计算任务负载上升,或者受其它外界因素影响时导致应用程序内部出现任务堆积或其它异常时,流式计算应用程序并不会主动向用户侧报告信息,进而导致业务层面已经出现异常了,用户却还无法及时感知。鉴于此,本申请实施例提出了内部异常探测的机制,基于该机制再配置文件中可以为流式计算应用程序配置内部异常探测参数名称以及对应的内部异常探测参数值。

请参见图5所示,若所述目标流式计算应用程序的内部异常探测参数值为预定选项值,则在所述当前运行状态为上线状态时对所述目标流式计算进行应用程序内部异常探测,或者,在所述当前运行状态为下线状态时启动所述目标流式计算应用程序、并对所述目标流式计算进行应用程序内部异常探测。

例如,若检测到目标流式计算应用程序的内部异常探测参数值为预定选项值,例如内部异常探测参数值为on,则当该目标流式计算应用程序的当前运行状态为上线状态时进行内部异常探测;若检测到目标流式计算应用程序的内部异常探测参数值不是预定选项值,例如内部异常探测参数值为off,则禁止对该目标流式计算应用程序进行内部异常探测;其中,若检测到目标流式计算应用程序的内部异常探测参数值为预定选项值,但该目标流式计算应用程序的当前运行状态为下线状态时,首先需要将所述目标流式计算应用程序启动,然后再对目标流式计算应用程序进行应用程序内部异常探测。

通过这种方式,可以采用不对优先级较低的应用程序进行内部异常探测的选择,来减少对应用程序进行内部异常探测的工作量,从而提升系统的工作效率。

在另一种可能的实施方式中,对目标流式计算进行应用程序内部异常探测时,通过获得该目标流式计算应用程序在预定时间段内的运行状态数据,根据该运行状态数据,确定目标流式计算应用程序在预定时间段内执行的各个任务对应的任务执行信息,根据所述任务执行信息统计在所述预定时间段内的总任务数、执行成功的任务数、执行失败的任务数与执行超时的任务数,若所述总任务数与所述执行成功的任务数相同,则确定所述目标流式计算应用程序正常运行,若所述执行失败的任务数超过1,即执行成功的任务数小于总任务数,则确定所述目标流式计算应用程序出现异常,并输出执行失败的任务的任务描述信息,若所述执行超时的任务数超过1,即执行成功的任务数小于总任务数,则确定所述目标流式计算应用程序出现异常,并输出执行超时的任务的任务描述信息。

具体的,获得目标流式计算应用程序在预定时间段内的运行状态数据的方式可以是,首先确定运行流式计算应用程序的设备为目标流式计算应用程序分配的应用程序标识,即系统分配的applicationid,然后通过该applicationid按照预定地址构建方式,构建出与目标流式计算应用程序对应的目标地址(如:http://hostid:8088/proxy/applicationid/streaming/),最后从该目标地址生成的运行状态页面中,获取目标流式计算应用程序对应的运行状态数据,例如,在目标地址对应的运行状态页面显示的执行结果中,若执行成功的任务数和需要执行的总任务数相同,说明该应用程序在运行的过程中不存在异常,则反馈执行成功的消息,并将其放入下一个循环中进行监测;若显示的信息是append,说明该流式计算应用程序在执行的过程中某一任务执行超时,导致在规定时长内没能将所有的任务执行完,该应用程序在运行的过程中存在异常,则反馈append;若显示信息是fail,说明该流式计算应用程序在执行的过程中存在执行失败的任务,该应用程序在运行的过程中出现异常,则反馈fail以及执行失败的任务数,这样,可以实时探测应用程序内部每一批次的任务执行结果,洞悉任务执行过程中出现的异常情况,从而解决对应用程序内部每一批次执行结果无感知的问题。

本申请实施例中,针对spark计算引擎框架中对spark应用程序管理薄弱,面对大量流式计算应用程序管理时操作繁索、低效,基于配置管理信息的方式提供了一种高效管理流式计算应用程序的方式,且针对流式计算应用程序出现问题时用户无法感知的情况,提供了应用程序内部异常探测机制,基于该机制可以探测应用程序内部每一批次计算情况,从而实现对流式计算应用程序的有效管理,提高管理时效性。

基于同一发明构思,本申请实施例提供了一种管理流式计算应用程序的装置,该管理流式计算应用程序的装置能够实现前述的管理流式计算应用程序的方法对应的功能。该管理流式计算应用程序的装置可以是硬件结构、软件模块、或硬件结构加软件模块。该管理流式计算应用程序的装置可以由芯片系统实现,芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。请参见图6a所示,该管理流式计算应用程序的装置包括第一确定模块601、第二确定模块602和管理模块603。其中:

第一确定模块601,用于从预先设置的管理配置列表包括的至少一个待管理流式计算应用程序中确定目标流式计算应用程序;其中,所述管理配置列表包括每个待管理流式计算应用程序对应的应用程序名称和管理参数信息;

第二确定模块602,用于确定所述目标流式计算应用程序的当前运行状态;

管理模块603,用于根据所述目标流式计算应用程序的当前运行状态和对应的管理参数信息,对所述目标流式计算应用程序进行管理操作。

在一种可能的实施方式中,若管理参数信息包括管理类型参数名称和管理类型参数值;管理模块603用于:

在所述目标流式计算应用程序的管理类型参数值为重启告警时,若所述当前运行状态为下线状态,则启动所述目标流式计算应用程序,以及输出告警信息;

在所述目标流式计算应用程序的管理类型参数值为仅告警时,若所述当前运行状态为下线状态,则输出告警信息;

在所述目标流式计算应用程序的管理类型参数值为保持时,保持所述当前运行状态。

在一种可能的实施方式中,若管理参数信息包括内部异常探测参数名称和内部异常探测参数值,管理模块603用于:

若所述目标流式计算应用程序的内部异常探测参数值为预定选项值,则在所述当前运行状态为上线状态时对所述目标流式计算进行应用程序内部异常探测,或者,在所述当前运行状态为下线状态时启动所述目标流式计算应用程序、并对所述目标流式计算进行应用程序内部异常探测。

在一种可能的实施方式中,管理模块603用于:

获得所述目标流式计算应用程序在预定时间段内的运行状态数据;

根据所述运行状态数据,确定所述目标流式计算应用程序在所述预定时间段内执行的各个任务对应的任务执行信息;其中,所述任务执行信息包括各个任务的执行时长和执行结果;

根据所述任务执行信息确定对所述目标流式计算应用程序的内部异常探测结果。

在一种可能的实施方式中,管理模块603用于:

根据所述任务执行信息统计在所述预定时间段内的总任务数、执行成功的任务数、执行失败的任务数与执行超时的任务数;

若所述总任务数与所述执行成功的任务数相同,则确定所述目标流式计算应用程序正常运行;

若所述执行失败的任务数超过1,则确定所述目标流式计算应用程序出现异常,并输出执行失败的任务的任务描述信息;

若所述执行超时的任务数超过1,则确定所述目标流式计算应用程序出现异常,并输出执行超时的任务的任务描述信息。

在一种可能的实施方式中,管理模块603用于:

确定所述目标流式计算应用程序的应用程序标识,所述应用程序标识是运行所述目标流式计算应用程序的设备为所述目标流式计算应用程序分配的;

按照预定地址构建方式构建与所述应用程序标识对应的目标地址;

从所述目标地址对应的运行状态页面中获取所述运行状态数据。

在一种可能的实施方式中,第一确定模块601用于:

根据所述管理配置列表包括的至少一个待管理流式计算应用程序的应用程序名称,确定对应的流式计算应用程序的业务优先级;

按照业务优先级从高到低的顺序对所述至少一个待管理流式计算应用程序排序;

选取排序位置满足预设条件的流式计算应用程序作为所述目标流式计算应用程序。

在一种可能的实施方式中,请参见图6b所示,本申请实施例中的管理流式计算应用程序的装置还包括控制模块604,用于:

获得用户输入的应用程序控制信息;其中,应用程序控制信息包括管理配置列表中包括的至少一个应用程序名称以及对应的操作方式;

根据操作方式,对至少一个应用程序名称对应的各个流式计算应用程序进行相应的控制。

前述的管理流式计算应用程序的方法的实施例涉及的各步骤的所有相关内容均可援引到本申请施例中的管理流式计算应用程序的装置所对应的功能模块的功能描述,在此不再赘述。

本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本申请各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

基于同一发明构思,本申请实施例提供一种计算设备,该计算设备中可以运行有流式计算引擎,例如运行有spark计算引擎,该计算设备能够执行前述的管理流式计算应用程序的方法。如图7所示,本申请实施例中的计算设备包括至少一个处理器701,以及与至少一个处理器701连接的存储器702和通信接口703,本申请实施例中不限定处理器701与存储器702之间的具体连接介质,图7中是以处理器701和存储器702之间通过总线700连接为例,总线700在图7中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线700可以分为地址总线、数据总线、控制总线等,为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

在本申请实施例中,存储器702存储有可被至少一个处理器701执行的指令,至少一个处理器701通过执行存储器702存储的指令,可以执行前述的管理流式计算应用程序的方法中所包括的步骤。

其中,处理器701是计算设备的控制中心,可以利用各种接口和线路连接整个计算设备的各个部分,通过运行或执行存储在存储器702内的指令以及调用存储在存储器702内的数据,计算设备的各种功能和处理数据,从而对计算设备进行整体监控。可选的,处理器701可包括一个或多个处理模块,处理器701可集成应用处理器和调制解调处理器,其中,处理器701主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器701中。在一些实施例中,处理器701和存储器702可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。

处理器701可以是通用处理器,例如中央处理器(cpu)、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。

存储器702作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器702可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(randomaccessmemory,ram)、静态随机访问存储器(staticrandomaccessmemory,sram)、可编程只读存储器(programmablereadonlymemory,prom)、只读存储器(readonlymemory,rom)、带电可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、磁性存储器、磁盘、光盘等等。存储器702是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器702还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。

通信接口703是能够用于进行通信的传输接口,可以通过通信接口703接收数据或者发送数据,例如可以通过通信接口703接收其它设备发送的对业务系统进行性能测试所需的数据,以及,还可以通过该通信接口703将获得的性能测试结果发送给其它设备。

进一步地,该计算设备还包括帮助计算设备内的各个器件之间传输信息的基本输入/输出系统(i/o系统)704、用于存储操作系统705、应用程序706和其他程序模块707的大容量存储设备708。

基本输入/输出系统704包括有用于显示信息的显示器709和用于用户输入信息的诸如鼠标、键盘之类的输入设备710。其中显示器709和输入设备710都通过连接到系统总线700的基本输入/输出系统704连接到处理器701。所述基本输入/输出系统704还可以包括输入输出控制器以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器还提供输出到显示屏、打印机或其他类型的输出设备。

所述大容量存储设备708通过连接到系统总线700的大容量存储控制器(未示出)连接到处理器701。所述大容量存储设备708及其相关联的计算机可读介质为该服务器包提供非易失性存储。也就是说,大容量存储设备708可以包括诸如硬盘或者cd-rom驱动器之类的计算机可读介质(未示出)。

根据本申请的各种实施例,该计算设备包还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即该计算设备可以通过连接在所述系统总线700上的通信接口703连接到网络711,或者说,也可以使用通信接口703来连接到其他类型的网络或远程计算机系统(未示出)。

通过对处理器701进行设计编程,可以将前述实施例中介绍的管理流式计算应用程序的方法所对应的代码固化到芯片内,从而使芯片在运行时能够执行前述的管理流式计算应用程序的方法的步骤,如何对处理器701进行设计编程为本领域技术人员所公知的技术,这里不再赘述。

基于同一发明构思,本申请实施例还提供一种存储介质,该存储介质例如是计算机可读存储介质,该存储介质存储有计算机指令,当该计算机指令在计算机上运行时,使得计算设备(例如计算机)执行如前述的管理流式计算应用程序的方法的步骤。

在一些可能的实施方式中,本申请提供的管理流式计算应用程序的方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在计算设备上运行时,程序代码用于使该检测设备执行本说明书上述描述的根据本申请各种示例性实施方式的管理流式计算应用程序的方法中的步骤。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1