CN109634784A - Spark应用程序控制方法及控制装置 - Google Patents
Spark应用程序控制方法及控制装置 Download PDFInfo
- Publication number
- CN109634784A CN109634784A CN201811580726.1A CN201811580726A CN109634784A CN 109634784 A CN109634784 A CN 109634784A CN 201811580726 A CN201811580726 A CN 201811580726A CN 109634784 A CN109634784 A CN 109634784A
- Authority
- CN
- China
- Prior art keywords
- application program
- spark application
- state parameter
- spark
- historic state
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1438—Restarting or rejuvenating
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及通信技术领域,尤其涉及一种Spark应用程序控制方法及控制装置。所述Spark应用程序控制方法,包括如下步骤:判断Spark应用程序的历史状态参数是否有效,若是,则将所述历史状态参数加入所述Spark应用程序的运行环境;根据获取的历史状态参数运行所述Spark应用程序;判断所述Spark应用程序是否出现运行异常,若是,则保留所述Spark应用程序的当前状态参数;存储所述当前状态参数于管理员中,以更新所述历史状态参数。本发明确保Spark应用程序运行的可承接性,避免因状态的不连续造成数据缺失、数据重复消费等问题,提高了程序的可用性。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种Spark应用程序控制方法及控制装置。
背景技术
Spark Streaming是将流式计算分解成一系列短小的批处理作业。这里的批处理引擎是Spark,也就是把Spark Streaming的输入数据按照batch size(如1秒)分成一段一段的数据(Discretized Stream),每一段数据都转换成Spark中的RDD(ResilientDistributed Dataset),然后将Spark Streaming中对DStream的Transformation操作变为针对Spark中对RDD的Transformation操作,将RDD经过操作变成中间结果保存在内存中。整个流式计算根据业务的需求可以对中间的结果进行叠加,或者存储到外部设备。Kafka是分布式发布-订阅消息系统。它最初由LinkedIn公司开发,之后成为Apache项目的一部分。Kafka是一个分布式的、可划分的、冗余备份的持久性的日志服务。
目前,Spark Streaming获取Kafka数据的方式主要有Receiver和Direct两种,Receiver方式是通过Zookeeper来连接Kafka队列,Direct方式是直接连接到Kafka的节点上获取数据了。其中,基于Receiver的数据获取方式,一旦系统因发生异常而重新启动Spark Streaming后,由于Spark与Kafka中的Zookeeper(管理员)之间可能是不同步的,消费者会重复处理已经处理过的数据,无法保证数据被处理且仅被处理一次。基于Direct的数据获取方式,一旦系统因发生异常或者作业需要而重新启动Spark Streaming后,业务日志仍然会打入到Kafka中,当业务重启后只能从最新的偏移量(Offset)开始消费消息,容易导致重启过程中的消息丢失。
因此,如何避免应用程序在中断后易出现数据丢失的问题,是目前亟待解决的问题。
发明内容
本发明提供一种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应用程序控制装置的结构示意图。
具体实施方式
下面结合附图对本发明提供的Spark应用程序控制方法及控制控制的具体实施方式做详细说明。
本具体实施方式提供了一种Spark应用程序控制方法,附图1是本发明具体实施方式中Spark应用程序控制方法的流程图。如图1所示,本具体实施方式提供的Spark应用程序控制方法,包括如下步骤:
步骤S11,判断Spark应用程序的历史状态参数是否有效,若是,则将所述历史状态参数加入所述Spark应用程序的运行环境。其中,所述历史状态参数是指在当前运行所述Spark应用程序之前运行所述Spark应用程序的过程中保存的状态参数。所述历史状态参数包括所述Spark应用程序的标识(appID)、开始偏移量(startoffset)和截止偏移量(untiloffset)。
步骤S12,根据获取的历史状态参数运行所述Spark应用程序。根据所述历史状态参数运行所述Spark应用程序,能够有效确保程序运行的连贯性。
优选的,根据获取的历史状态参数运行所述Spark应用程序的具体步骤包括:
(S12-1)从所述历史状态参数中的截止偏移量处开始分批次读取日志(kafka)中的数据;
(S12-2)所述Spark应用程序消费从所述日志中读取的数据。
具体来说,在将所述历史状态参数加入运行环境后,则从获取的历史状态参数中的截止偏移量处开始分批次读取日志中的数据,所述Spark应用程序则依次消费每一批次的数据,从而实现所述Spark应用程序的运行。
步骤S13,判断所述Spark应用程序是否出现运行异常,若是,则保留所述Spark应用程序的当前状态参数。优选的,所述当前状态参数均包括所述Spark应用程序的标识、开始偏移量和截止偏移量。更优选的,所述开始偏移量和所述截止偏移量是指,kafka批次数据中的开始偏移量和截止偏移量。所述运行异常是指,所述Spark应用程序在运行过程中异常退出或者出现数据处理失败的情况。本具体你实施方式在检测到所述Spark应用程序出现异常后,在保留所述Spark应用程序当前状态快照后再退出程序,以便于再次运行所述Spark应用程序时确保程序运行的连贯性。
步骤S14,存储所述当前状态参数于管理员(Zookeeper)中,以更新所述历史状态参数。本具体实施方式在检测到所述Spark应用程序中断后,在Zookeeper中保留应用的最新状态,并以该最新状态更新所述历史状态参数。当所述Spark应用程序再次启动后,需要首先检查历史状态,确保了状态的可承接性,避免了因状态的不连续带来数据的缺失或重复消费等问题。
优选的,存储所述当前状态参数于管理员中的具体步骤包括:
(S14-1)读取所述Spark应用程序的当前状态参数;
(S14-2)将所述当前状态参数封装成信息体;
(S14-3)将所述信息体写入管理员中。
本具体实施方式中,通过自定义实现kafka操作类,解决了数据读写到Zookeeper时经常发生的迁移版本不兼容的问题,提高了保存所述Spark应用程序当前状态参数的稳定性及可用性,实现了保存所述Spark应用程序当前状态的及时共享以及及时恢复。具体来说,本具体实施方式通过自定义实现kafka操作类,稳定高效的保留所述Spark应用程序的当前状态参数到Zookeeper中,一方面实现了kafka操作类直接操作底层API(ApplicationProgramming Interface,应用程序编程接口),去除了版本变化带来的高阶API的差异;另一方面同时自定义操作Zookeeper的底层API,消除版本因素的影响。
为了进一步增加所述Spark应用程序的可用性,优选的,所述Spark应用该程序控制方法还包括如下步骤:判断Spark应用程序的历史状态参数是否为空值或者无效,若是,则在默认环境下运行Spark应用程序。其中,所述默认环境的具体参数,本领域技术人员可以根据实际需要进行设置,本具体实施方式对此不作限定。
本具体实施方式还能够根据使用者的业务需要,灵活掌控重新消费的偏移量(offset)值,扩展所述Spark应用程序的应用范围。例如,灵活设置更新以及保留offset值的频次,满足电商日结、小时、秒级等不同数据消费场景:日结统计数据,可以每天更新一次offset值,保证数据统计的完整性;小时统计数据,采用小时频次保留offset值;或者其他任意指定时间统计数据。再例如,灵活设置持久化offset的位置,实现不同Spark应用程序之间共享offset值,比如不同的业务统计作业有需要同样的消费起点的情况(作业恢复重新启动时或者作业初始化时)。
不仅如此,本具体实施方式还提供了一种Spark应用程序控制装置,附图2是本发明具体实施方式中Spark应用程序控制装置的结构示意图。如图2所示,本具体实施方式提供的Spark应用程序控制装置,包括检测模块21、运行模块22、分析模块23和存储模块24。
所述检测模块21,用于判断Spark应用程序的历史状态参数是否有效,若是,则将所述历史状态参数加入所述Spark应用程序的运行环境;所述运行模块22,连接所述检测模块21,用于根据获取的历史状态参数运行所述Spark应用程序;所述分析模块23,连接所述运行模块22,用于判断所述Spark应用程序是否出现运行异常,若是,则保留所述Spark应用程序的当前状态参数;所述存储模块24,同时连接所述分析模块23和所述检测模块21,用于存储所述当前状态参数于管理员中,以更新所述历史状态参数。
优选的,所述历史状态参数与所述当前状态参数均包括所述Spark应用程序的标识、开始偏移量和截止偏移量。
优选的,所述运行模块22包括读取单元221和消费单元222;所述读取单元221,用于从所述历史状态参数中的截止偏移量处开始分批次读取日志中的数据;所述消费单元222,连接所述读取单元221,用于所述Spark应用程序消费从所述日志中读取的数据。
优选的,所述检测模块21还用于判断Spark应用程序的历史状态参数是否为空值或者无效,若是,则在默认环境下运行Spark应用程序。
优选的,所述存储模块24包括处理单元241、封装单元242和写入单元243;所述处理单元241,用于读取所述Spark应用程序的当前状态参数;所述封装单元242,连接所述处理单元241,用于将所述当前状态参数封装成信息体;所述写入单元243,连接所述封装单元242,用于将所述信息体写入管理员中。
本具体实施方式提供的Spark应用程序控制方法及控制装置,在Spark应用程序中断后,自动存储当前运行状态参数,并及时更新所述Spark应用程序的历史状态参数,在Spark应用程序运行前,先对其历史状态参数进行检查,确保Spark应用程序运行的可承接性,避免因状态的不连续造成数据缺失、数据重复消费等问题,提高了程序的可用性。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种Spark应用程序控制方法,其特征在于,包括如下步骤:
判断Spark应用程序的历史状态参数是否有效,若是,则将所述历史状态参数加入所述Spark应用程序的运行环境;
根据获取的历史状态参数运行所述Spark应用程序;
判断所述Spark应用程序是否出现运行异常,若是,则保留所述Spark应用程序的当前状态参数;
存储所述当前状态参数于管理员中,以更新所述历史状态参数。
2.根据权利要求1所述的Spark应用程序控制方法,其特征在于,所述历史状态参数与所述当前状态参数均包括所述Spark应用程序的标识、开始偏移量和截止偏移量。
3.根据权利要求2所述的Spark应用程序控制方法,其特征在于,根据获取的历史状态参数运行所述Spark应用程序的具体步骤包括:
从所述历史状态参数中的截止偏移量处开始分批次读取日志中的数据;
所述Spark应用程序消费从所述日志中读取的数据。
4.根据权利要求1所述的Spark应用程序控制方法,其特征在于,还包括如下步骤:
判断Spark应用程序的历史状态参数是否为空值或者无效,若是,则在默认环境下运行Spark应用程序。
5.根据权利要求1所述的Spark应用程序控制方法,其特征在于,存储所述当前状态参数于管理员中的具体步骤包括:
读取所述Spark应用程序的当前状态参数;
将所述当前状态参数封装成信息体;
将所述信息体写入管理员中。
6.一种Spark应用程序控制装置,其特征在于,包括:
检测模块,用于判断Spark应用程序的历史状态参数是否有效,若是,则将所述历史状态参数加入所述Spark应用程序的运行环境;
运行模块,连接所述检测模块,用于根据获取的历史状态参数运行所述Spark应用程序;
分析模块,连接所述运行模块,用于判断所述Spark应用程序是否出现运行异常,若是,则保留所述Spark应用程序的当前状态参数;
存储模块,同时连接所述分析模块和所述检测模块,用于存储所述当前状态参数于管理员中,以更新所述历史状态参数。
7.根据权利要求6所述的Spark应用程序控制装置,其特征在于,所述历史状态参数与所述当前状态参数均包括所述Spark应用程序的标识、开始偏移量和截止偏移量。
8.根据权利要求7所述的Spark应用程序控制装置,其特征在于,所述运行模块包括读取单元和消费单元;
所述读取单元,用于从所述历史状态参数中的截止偏移量处开始分批次读取日志中的数据;
所述消费单元,连接所述读取单元,用于所述Spark应用程序消费从所述日志中读取的数据。
9.根据权利要求6所述的Spark应用程序控制装置,其特征在于,所述检测模块还用于判断Spark应用程序的历史状态参数是否为空值或者无效,若是,则在默认环境下运行Spark应用程序。
10.根据权利要求6所述的Spark应用程序控制装置,其特征在于,所述存储模块包括处理单元、封装单元和写入单元;
所述处理单元,用于读取所述Spark应用程序的当前状态参数;
所述封装单元,连接所述处理单元,用于将所述当前状态参数封装成信息体;
所述写入单元,连接所述封装单元,用于将所述信息体写入管理员中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811580726.1A CN109634784B (zh) | 2018-12-24 | 2018-12-24 | Spark应用程序控制方法及控制装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811580726.1A CN109634784B (zh) | 2018-12-24 | 2018-12-24 | Spark应用程序控制方法及控制装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109634784A true CN109634784A (zh) | 2019-04-16 |
CN109634784B CN109634784B (zh) | 2021-02-26 |
Family
ID=66076848
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811580726.1A Active CN109634784B (zh) | 2018-12-24 | 2018-12-24 | Spark应用程序控制方法及控制装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109634784B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111124650A (zh) * | 2019-12-26 | 2020-05-08 | 中国建设银行股份有限公司 | 一种流式数据处理方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102280125A (zh) * | 2011-04-25 | 2011-12-14 | 杭州海康威视数字技术股份有限公司 | 一种对异常关机所丢失数据进行恢复的方法及硬盘录像机 |
CN105205189A (zh) * | 2015-09-22 | 2015-12-30 | 中国建筑股份有限公司 | 基于容器的bim模型与高速采集数据系统的集成方法 |
CN106776855A (zh) * | 2016-11-29 | 2017-05-31 | 上海轻维软件有限公司 | 基于Spark Streaming读取Kafka数据的处理方法 |
US20170286252A1 (en) * | 2016-04-01 | 2017-10-05 | Intel Corporation | Workload Behavior Modeling and Prediction for Data Center Adaptation |
US20180027006A1 (en) * | 2015-02-24 | 2018-01-25 | Cloudlock, Inc. | System and method for securing an enterprise computing environment |
CN108804644A (zh) * | 2018-06-05 | 2018-11-13 | 中国平安人寿保险股份有限公司 | 接口日志存储方法、装置、计算机设备和存储介质 |
-
2018
- 2018-12-24 CN CN201811580726.1A patent/CN109634784B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102280125A (zh) * | 2011-04-25 | 2011-12-14 | 杭州海康威视数字技术股份有限公司 | 一种对异常关机所丢失数据进行恢复的方法及硬盘录像机 |
US20180027006A1 (en) * | 2015-02-24 | 2018-01-25 | Cloudlock, Inc. | System and method for securing an enterprise computing environment |
CN105205189A (zh) * | 2015-09-22 | 2015-12-30 | 中国建筑股份有限公司 | 基于容器的bim模型与高速采集数据系统的集成方法 |
US20170286252A1 (en) * | 2016-04-01 | 2017-10-05 | Intel Corporation | Workload Behavior Modeling and Prediction for Data Center Adaptation |
CN106776855A (zh) * | 2016-11-29 | 2017-05-31 | 上海轻维软件有限公司 | 基于Spark Streaming读取Kafka数据的处理方法 |
CN108804644A (zh) * | 2018-06-05 | 2018-11-13 | 中国平安人寿保险股份有限公司 | 接口日志存储方法、装置、计算机设备和存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111124650A (zh) * | 2019-12-26 | 2020-05-08 | 中国建设银行股份有限公司 | 一种流式数据处理方法及装置 |
CN111124650B (zh) * | 2019-12-26 | 2023-10-24 | 中国建设银行股份有限公司 | 一种流式数据处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109634784B (zh) | 2021-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103842968B (zh) | 一种内存数据的迁移方法、计算机和装置 | |
US8984123B2 (en) | Rejuvenation processing device, rejuvenation processing system, computer program, and data processing method | |
CN113656175B (zh) | 基于分布式系统训练模型的方法及设备 | |
US20070288532A1 (en) | Method of updating an executable file for a redundant system with old and new files assured | |
US20110197193A1 (en) | Device and method for controlling communication between bios and bmc | |
CN103827834A (zh) | 一种内存数据的迁移方法、计算机和装置 | |
CN113032125B (zh) | 作业调度方法、装置、计算机系统和计算机可读存储介质 | |
CN113553216B (zh) | 数据恢复方法、装置、电子设备及存储介质 | |
CN109634784A (zh) | Spark应用程序控制方法及控制装置 | |
US20130152098A1 (en) | Task priority boost management | |
US20070209039A1 (en) | Message queue control program and message queuing system | |
US10802873B2 (en) | Computer system and program migration method | |
US9244736B2 (en) | Thinning operating systems | |
CN105353980A (zh) | 一种内存数据的迁移方法、计算机和装置 | |
CN108055159A (zh) | 一种集群节点操作同步方法及装置 | |
CN114416276A (zh) | 设备管理服务的调度方法、装置、电子设备及存储介质 | |
JP7141939B2 (ja) | 産業用コントローラ | |
CN113312136A (zh) | 用于控制虚拟机的方法、电子设备和计算机程序产品 | |
JP2001290678A (ja) | 非同期メモリダンプ実行方式 | |
US12081397B2 (en) | Continuous scheduling for automated suspension and resumption of cloud resources | |
CN112328359B (zh) | 避免容器集群启动拥塞的调度方法和容器集群管理平台 | |
JP4703681B2 (ja) | クラスタシステム及び引き継ぎ先ノード決定方法 | |
CN110677268B (zh) | Nfv自动编排调度方法、装置和系统 | |
JP2010140316A (ja) | 情報処理端末、モジュールアップデート方法およびプログラム | |
CN107315624B (zh) | 信息处理方法及虚拟化管理器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |