CN109634784A - Spark应用程序控制方法及控制装置 - Google Patents

Spark应用程序控制方法及控制装置 Download PDF

Info

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
Application number
CN201811580726.1A
Other languages
English (en)
Other versions
CN109634784B (zh
Inventor
文燕军
卢春洋
吴文钧
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Concord Investment China Co Ltd
Original Assignee
Concord Investment China Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Concord Investment China Co Ltd filed Critical Concord Investment China Co Ltd
Priority to CN201811580726.1A priority Critical patent/CN109634784B/zh
Publication of CN109634784A publication Critical patent/CN109634784A/zh
Application granted granted Critical
Publication of CN109634784B publication Critical patent/CN109634784B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting 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应用程序控制方法及控制装置。
背景技术
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应用程序的当前状态参数;
所述封装单元,连接所述处理单元,用于将所述当前状态参数封装成信息体;
所述写入单元,连接所述封装单元,用于将所述信息体写入管理员中。
CN201811580726.1A 2018-12-24 2018-12-24 Spark应用程序控制方法及控制装置 Active CN109634784B (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111124650A (zh) * 2019-12-26 2020-05-08 中国建设银行股份有限公司 一种流式数据处理方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
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 中国平安人寿保险股份有限公司 接口日志存储方法、装置、计算机设备和存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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
US8984123B2 (en) Rejuvenation processing device, rejuvenation processing system, computer program, and data processing method
CN113656175B (zh) 基于分布式***训练模型的方法及设备
EP2966571A1 (en) Method for migrating memory data, computer and device
US20070288532A1 (en) Method of updating an executable file for a redundant system with old and new files assured
US20170329655A1 (en) Method and apparatus of unloading out of memory processing flow to user space
CN108664520B (zh) 维护数据一致性的方法、装置、电子设备和可读存储介质
CN109634784A (zh) Spark应用程序控制方法及控制装置
US9229716B2 (en) Time-based task priority boost management using boost register values
US20070209039A1 (en) Message queue control program and message queuing system
CN110555009B (zh) 一种网络文件***nfs服务的处理方法及装置
US10802873B2 (en) Computer system and program migration method
US9244736B2 (en) Thinning operating systems
CN108055159A (zh) 一种集群节点操作同步方法及装置
CN114416276A (zh) 设备管理服务的调度方法、装置、电子设备及存储介质
EP3929737A1 (en) Application state control method apparatus, and terminal and computer-readable storage medium
JP7141939B2 (ja) 産業用コントローラ
CN113419921A (zh) 一种任务监控方法、装置、设备以及存储介质
CN113590287A (zh) 任务处理方法、装置、设备、存储介质及调度***
JP5317182B2 (ja) Pos端末、モジュールアップデート方法およびモジュールアップデートプログラム
JP2001290678A (ja) 非同期メモリダンプ実行方式
CN113553216B (zh) 数据恢复方法、装置、电子设备及存储介质
US20240179053A1 (en) Continuous scheduling for automated suspension and resumption of cloud resources
CN112328359B (zh) 避免容器集群启动拥塞的调度方法和容器集群管理平台
JP4703681B2 (ja) クラスタシステム及び引き継ぎ先ノード決定方法
WO2024002190A1 (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