本说明书一个或多个实施例涉及流式计算领域,尤其涉及spark应用的部署管理方法。
背景技术:
:现在很多公司每天都会产生数以tb计的大数据,这些数据的产生、消费呈现出鲜明的流式特征,更为重要的是,数据价值的有效时间急剧减少,也要求越来越高的数据计算和使用能力。流式计算主要用于对动态产生的数据进行实时计算并及时反馈结果,在数据的有效时间内获取其价值,是流式计算系统的首要设计目标。流式计算在金融行业、互联网领域、都有许多应用场景。在金融行业里常见的有信用卡诈骗、保险诈骗、程序交易等风险管理应用,个性化产品推荐、客户需求预测等营销管理应用,以及通过大量数据提供决策的商业智能等。流式计算框架是一个分布式的实时处理框架,可以连续运行,对每条消息或者是每微批消息进行及时处理。常用的流式框架是sparkstreaming、storm、flink等,这些框架自身提供了分布式、故障迁移等解决方案,确保应用的实时性和高可用性。我们基于sparkstreaming开发了许多通知、报表、查询等“以用户为中心”的应用。部署一个spark应用时,首先需要搭建一个spark集群,然后通过命令的形式提交应用。spark应用部署的集群模式多数采用yarn来管理资源调度,由于很多时候我们需要和mapreduce使用同一个集群,所以都采用yarn来管理资源调度,这也是生产环境大多采用yarn模式的原因。yarn模式又分为yarncluster模式和yarnclient模式:yarncluster:这个就是生产环境常用的模式,所有的资源调度和计算都在集群环境上运行;yarnclient:这个是说sparkdriver和applicationmaster进程均在本机运行,而计算任务在cluster上。无论哪种模式都是通过spark-submit命令的方式在后台提交。现有技术面临着以下缺点。1、集群管理成本高;许多大型公司有许多团队组成,不同团队开发的spark应用假如搭建不同的集群,不仅耗费资源,运维成本也很高。共用一个集群又缺少权限的管理等。2、缺少对应用的管理;应用提交到spark集群后,可以通过yarn的管理页面查看应用的运行情况,但是缺少对应用的管理页面,不能清楚的展示所有应用的名称、功能和配置等信息。3、手动拼接命令时间长、错误率高;通过命令部署,需要上传相应的包,然后手动拼接命令并执行,不仅耗费的时间长,还容易在拼接的过程中出现缺少空格、路径不对、jar包引入不够等各种低级错误。技术实现要素:有鉴于此,本说明书一个或多个实施例的目的在于提出一种spark应用部署方法及相关设备,以解决现有技术中的问题。本说明书一个或多个实施例提供了一种spark部署管理方法,该方法的步骤如下所示:响应于来自前台的上传spark应用的指令,对所述spark应用进行权限校验,将通过权限校验的所述spark应用上传至spark集群的提交机;根据消费的配置为已上传的所述spark应用划分对应的spark集群资源;响应于来自所述前台的部署所述spark应用的指令,自动拼接启动所述提交机上的所述spark应用的启动命令,并将已拼接的所述启动命令存放在启动任务表中,当定时程序读取到所述启动任务表中的所述启动命令时,资源管理器使所述提交机上的所述spark应用利用所述spark集群资源运行。基于同一发明构思,本说明书一个或多个实施例还提供了一种spark应用部署管理装置,可根据功能分为以下模块:spark应用上传模块,响应上传spark应用的指令,将通过权限校验的所述spark应用上传至所述spark提交机;spark资源划分模块,根据消费的配置为已上传的所述spark应用划分对应的spark集群资源;spark应用启动模块,响应部署所述spark应用的指令,自动拼接得到上传到所述spark提交机上的spark应用的提交命令,并将以拼接的所述提交命令存放在启动任务表内,定时程序读取到所述启动任务表内的所述启动命令时,资源管理器使所述提交机上的所述spark应用利用所述spark集群资源运行。基于同一发明构思,本说明书一个或多个实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时可实现spark应用部署管理方法。基于同一发明构思,本说明书一个或多个实施例还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行spark应用部署管理方法。从上面所述可以看出,本说明书一个或多个实施例提供的一种spark部署管理方法及相关设备能够直观明了的实现spark应用的管理,实现spark应用的上传和部署,简化了操作;同时实现了spark应用的自动重启和对多个spark提交机的管理,提升了可用性。附图说明为了更清楚地说明本说明书一个或多个实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书一个或多个实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本说明书一个或多个实施例所述的spark应用部署管理方法步骤图;图2为本说明书一个或多个实施例所述的spark应用上传流程图;图3为本说明书一个或多个实施例所述的spark应用升级流程图;图4为本说明书一个或多个实施例所述的spark应用部署管理装置示意图;图5为本说明书一个或多个实施例所述的实现spark应用部署管理的电子设备示意图。具体实施方式为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。需要说明的是,除非另外定义,本说明书一个或多个实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本说明书一个或多个实施例中使用“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。如
背景技术:
所述,在现有的spark部署管理方法中,存在由集群管理成本高;缺少对应用的管理;手动拼接命令时间长、错误率高的问题。有鉴于此,本说明书一个或多个实施例提出了一种spark部署管理方法,旨在通过spark集群的统一管理,清晰的展示spark应用的运行情况,并实现spark应用的自动部署。本说明书一个或多个实施例提供的spark部署管理方法,运行步骤如图1所示。步骤s101,响应于来自前台的上传spark应用的指令,对所述spark应用进行权限校验,将通过权限校验的所述spark应用上传至spark集群的提交机。本步骤中,在上传通过校验的spark应用时,还需要登记应用的信息,包括:名称、功能描述、spark版本、联系人。后台会把这些信息记录在数据库中,当应用消费积压或者异常时,方便向联系人发送告警邮件或通知。步骤s102,根据消费的配置为已上传的所述spark应用划分对应的spark集群资源。步骤s103,响应于来自所述前台的部署所述spark应用的指令,自动拼接启动所述提交机上的所述spark应用的启动命令,并将已拼接的所述启动命令存放在启动任务表中,当定时程序读取到所述启动任务表中的所述启动命令时,资源管理器使所述提交机上的所述spark应用利用所述spark集群资源运行。上述步骤s101和s103中用户在前台页面通过点击的方式发出上传和部署spark应用的指令,此前台页面还可以显示出spark集群中应用的运行状态。以下,通过具体的实施例来说明本说明书的技术方案。参考图2,在将spark应用上传至spark提交机时,分为如下步骤。步骤s201、上传资源包至服务器。本步骤中,应用上传资源包,要求3级目录:bin、config、lib。bin中保存主类,config保存配置文件,lib中包含执行依赖的包。点击上传后,资源包会存放在服务器的临时目录下。步骤s202、解压资源包并进行校验。本步骤中,解压位于临时目录下的资源包,并对包内的信息进行校验。具体为,对config下的文件进行校验,校验的内容包括:应用消费的kafka中的topic是否有权限、应用的groupid是否规范、唯一、应用的配置信息是否完整等。groupid的规范如下:总公司应用命名规范:【系统英文缩写】 【_模块功能】;分公司应用命名规范:【分公司拼音首字母】 【_模块功能】,模块功能描述每个单词首字母大写。topic的规范如下:【生产者系统名】 【_自定义描述】或【生产者系统名】 【_省级机构代码】 【_自定义描述】例如:浙江分公司的计算应用,应用的名称为zj_calculate,假如消费了kafka中“xx_总公司”的topic,校验就不会通过,只能消费“xx_浙江”的topic。步骤s203、资源包通过校验后,上传至ftp服务器,然后上传至spark集群的提交机;否则,在前台页面进行弹窗提示。作为一个可选的实施例,在上传应用后还要根据消费的配置划分spark集群对应的核数和内存大小。资源划分主要根据分区数和消费哪些topic进行划分。我们根据topic每日的消息量对topic进行划分,级数越多,数据量越大,需要的资源也相应较多。核数和内存的计算公式分别为:核数=min(∑topic个数*核数,∑分区数)内存=∑topic个数*内存例如:如表1所示,将topic划分为5级,有一个应用消费了36个2级topic,分区数为36。则根据表1可得,2级topic的核数为2,内存为1g,spark集群对应的核数为topic个数与核数的乘积和分区数中的较小值,即为36;spark集群的内存为topic的个数和内存的乘积,即为36g。表1、topic等级划分topic级别核数内存1级1512m2级21g3级31.5g4级42g5级52.5g进一步的,当应用消费的topic的级别不同时,如共消费36个topic,其中有18个1级topic,每个topic对应分区数为a;有18个2级topic,每个topic对应分区数为b,二者的核数和内存参照表1。计算该应用对应的核数,即为两级topic的核数与个数的乘积和及两级topic的分区数之和中的最小值,即在54和18*(a b)中选择最小值;计算内存时,参照表1,为1级topic的总内存和2级topic的总内存相加,得到的值为27g。作为一个可选的实施例,在spark应用部署时,需要发布资源包,即由通过校验的spark应用根据记录的配置信息,将其填入启动命令模板,以实现自动拼装启动应用需要的启动命令;然后将启动命令存在启动任务表里。由定时启动任务的程序读取到启动任务表中的启动命令时,并调用yarn的接口以启动应用。作为一个可选的实施例,利用本说明书一个或多个实施例提供的spark应用部署管理方法还能实现spark应用的升级。应用升级与新增应用的部署类似,只是在升级前如原应用在运行时,需要先停止已有应用,升级后覆盖原资源包,并重新启动该应用,具体步骤为如图3所示:s301、上传升级资源包至服务器。s302、解压升级资源包获得新的配置信息。s303、使用新的配置信息替换老旧配置信息并停止spark应用。s304、将升级资源包上传至ftp服务器以覆盖旧资源包。s305、重新启动spark应用。作为一个可选的实施例,在进行spark应用部署管理时,面对不同情形时的操作如下:启动spark应用:在系统前台页面点击启动spark应用,在服务器中根据该应用的通用唯一识别码(uuid)查询获得该应用的配置信息。根据获得的配置信息自动拼接得到启动命令并保存在启动任务表内,由定时启动任务的程序读取启动任务表执行部署命令,调用yarn的接口启动应用。停止spark应用:在服务器中查询获得该应用的id,调用yarn的接口停止应用。重启spark应用:首先检查应用当前状态,若应用正在运行,则将该应用停止;该应用处于停止、失败、已完成的状态时,则根据根据该应用的uuid查询获得该应用的配置信息。根据获得的配置信息拼接得到新的启动命令并保存在启动任务表内,由定时启动任务的程序读取task表执行新的部署命令,并调用yarn的接口启动应用。从上面所述可以看出,本说明书一个或多个实施例提供的一种spark应用部署管理方法能够直观明了的实现spark应用的管理,通过spark集群前台页面实现spark应用的上传、部署及运行状态的监控,简化了操作;同时实现了spark应用的自动启动、升级、停止、重启和对多个spark提交机的管理,提升了可用性。需要说明的是,本说明书一个或多个实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本说明书一个或多个实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。基于同一发明构思,本说明书一个或多个实施例还提供了一种spark应用部署管理装置。参考图4,所述spark应用部署管理装置,包括:spark应用上传模块,响应上传spark应用的指令,将通过权限校验的所述spark应用上传至所述spark提交机;spark资源划分模块,根据消费的配置为已上传的所述spark应用划分对应的spark集群资源;spark应用启动模块,响应部署所述spark应用的指令,自动拼接得到上传到所述spark提交机上的spark应用的启动命令,并将以拼接的所述启动命令存放在启动任务表内,定时程序读取到所述启动任务表内的所述启动命令时,资源管理器使所述提交机上的所述spark应用利用所述spark集群资源运行。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现。上述实施例的装置用于实现前述实施例中相应的spark应用部署管理方法,并且具有相应的方法实施例的有益效果,在此不再赘述。基于同一发明构思,本说明书一个或多个实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上任意一实施例所述的spark应用部署管理方法。图5示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。处理器1010可以采用通用的cpu(centralprocessingunit,中央处理器)、微处理器、应用专用集成电路(applicationspecificintegratedcircuit,asic)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。存储器1020可以采用rom(readonlymemory,只读存储器)、ram(randomaccessmemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如usb、网线等)实现通信,也可以通过无线方式(例如移动网络、wifi、蓝牙等)实现通信。总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。上述实施例的电子设备用于实现前述实施例中相应的spark应用部署管理方法,并且具有相应的方法实施例的有益效果,在此不再赘述。基于同一发明构思,与上述任意实施例方法相对应的,本说明书一个或多个实施例还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任一实施例所述的spark部署管理方法。本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。上述实施例的存储介质存储的计算机指令用于使所述计算机执行如上任一实施例所述的spark部署管理方法,并且具有相应的方法实施例的有益效果,在此不再赘述。所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本说明书一个或多个实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。另外,为简化说明和讨论,并且为了不会使本说明书一个或多个实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(ic)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本说明书一个或多个实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本说明书一个或多个实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本说明书一个或多个实施例。因此,这些描述应被认为是说明性的而不是限制性的。尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态ram(dram))可以使用所讨论的实施例。本说明书一个或多个实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。当前第1页1 2 3 
技术特征:1.一种spark应用部署管理方法,包括:
响应于来自前台的上传spark应用的指令,对所述spark应用进行权限校验,将通过权限校验的所述spark应用上传至spark集群的提交机;
根据消费的配置为已上传的所述spark应用划分对应的spark集群资源;
响应于来自所述前台的部署所述spark应用的指令,自动拼接得到所述提交机上的所述spark应用的启动命令,并将已拼接的所述启动命令存放在启动任务表中,当定时程序读取到所述启动任务表中的所述启动命令时,资源管理器使所述提交机上的所述spark应用利用所述spark集群资源运行。
2.根据权利要求1所述的spark应用部署管理方法,其中,上传所述spark应用,还包括:
在所述前台点击上传后,所述spark应用的资源包会被存放在服务器的临时目录下,并解压所述资源包,以进行所述权限校验;
其中,所述资源包内为3级目录:bin、config、lib,其中:bin中保存主类,config保存配置文件,lib中保存执行依赖的包。
3.根据权利要求2所述的spark应用部署管理方法,其中,所述spark应用的权限校验,包括:
所述权限校验即为对所述config目录下的所述配置文件进行校验;
所述校验内容包括:检查所述spark应用消费的kafka中的topic是否有权限,所述spark应用的groupid是否规范、唯一,所述spark应用的配置信息是否完整。
4.根据权利要求1所述的spark应用部署管理方法,其中,为所述spark应用划分对应的所述spark集群资源,包括:
根据消费的配置划分所述spark应用对应的核数和内存大小,其计算公式为:
核数=min(∑topic个数*核数,∑分区数)
内存=∑topic个数*内存
其中,根据所述topic每日的消息量对其进行等级划分,每一所述等级对应不同的topic核数和topic内存。
5.根据权利要求1所述的spark应用部署管理方法,其中,所述自动拼接得到所述提交机上的所述spark应用的启动命令,包括:
所述spark集群后台获取所述spark应用的配置信息;
所述spark集群后台将所述配置信息拼接进启动命令模板,获取完整的所述启动命令。
6.根据权利要求1所述的spark应用部署管理方法,其中,将通过所述权限校验的所述spark应用上传至所述spark提交机时,能够同时上传给多个所述spark提交机。
7.一种spark应用部署管理装置,包括:
spark应用上传模块,响应上传spark应用的指令,将通过权限校验的所述spark应用上传至所述spark提交机;
spark资源划分模块,根据消费的配置为已上传的所述spark应用划分对应的spark集群资源;
spark应用启动模块,响应部署所述spark应用的指令,自动拼接得到上传到所述spark提交机上的spark应用的提交命令,并将以拼接的所述提交命令存放在启动任务表内,定时程序读取到所述启动任务表内的所述启动命令时,资源管理器使所述提交机上的所述spark应用利用所述spark集群资源运行。
8.一种电子设备,包括存储器、处理器及存储在所述存储器上并可由所述处理器执行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现根据权利要求1至6中任意一项所述的spark应用部署管理方法。
9.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令在被计算机执行时,使所述计算机执行根据权利要求1至6中任一所述的spark应用部署管理方法。
技术总结本发明公开了一种Spark应用部署管理方法及相关设备。首先,响应前台的上传指令,将通过权限校验的Spark应用上传至Spark提交机并根据其消费配置划分出对应的Spark集群资源;然后响应前台的部署指令,自动拼接产生Spark应用的启动命令,并将其插入到启动任务表中,定时启动程序在读取启动任务表时读取到启动命令的话,资源管理器使所述Spark应用利用Spark集群的资源开始运行。这种Spark应用部署管理方法能够直观明了的实现Spark应用的管理,通过Spark集群前台页面实现Spark应用的上传和部署,并在前台页面展示出Spark集群的运行状态;简化了操作,提升了可用性。
技术研发人员:胡潇涵;安靖;刘佳;王毅;宋洋;崔贝贝
受保护的技术使用者:中国人寿保险股份有限公司
技术研发日:2020.11.17
技术公布日:2021.03.12