CN108228459A - 基于Spark平台的分布式调试方法、装置及电子设备 - Google Patents

基于Spark平台的分布式调试方法、装置及电子设备 Download PDF

Info

Publication number
CN108228459A
CN108228459A CN201810005025.9A CN201810005025A CN108228459A CN 108228459 A CN108228459 A CN 108228459A CN 201810005025 A CN201810005025 A CN 201810005025A CN 108228459 A CN108228459 A CN 108228459A
Authority
CN
China
Prior art keywords
debugging
control program
spark
processes
executor
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.)
Pending
Application number
CN201810005025.9A
Other languages
English (en)
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.)
Beijing QIYI Century Science and Technology Co Ltd
Original Assignee
Beijing QIYI Century Science and Technology 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 Beijing QIYI Century Science and Technology Co Ltd filed Critical Beijing QIYI Century Science and Technology Co Ltd
Priority to CN201810005025.9A priority Critical patent/CN108228459A/zh
Publication of CN108228459A publication Critical patent/CN108228459A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime

Abstract

本发明实施例提供了一种基于Spark平台的分布式调试方法、装置及电子设备,该方法包括:在Spark平台中设置扩展程序,通过该扩展程序扩展Spark平台的弹性分布式数据集RDD类,使扩展后的RDD类支持断点操作和监视点操作;在Spark程序的Driver进程中设置第一调试控制程序,并在Spark程序的Executor进程中设置第二调试控制程序;基于扩展后的RDD类,通过第一调试控制程序和第二调试控制程序,对Spark程序进行断点调试或监视点调试。本发明实施例能够方便开发人员在Spark程序运行时对Spark程序进行调试,提高调试效率,从而为减少分布式程序bug并提高分布式程序质量打下基础。

Description

基于Spark平台的分布式调试方法、装置及电子设备
技术领域
本发明涉及计算机技术领域,特别是涉及一种基于Spark平台的分布式调试方法、装置及电子设备。
背景技术
Spark是加州大学伯克利分校的AMP实验室所开源的通用并行框架。当用户在Spark框架下开发分布式Spark程序时,需要对分布式Spark程序进行调试,以减少分布式Spark程序的bug。
目前,针对分布式Spark程序的调试方法为:程序开发者通过打印日志对分布式Spark程序进行调试。
然而,发明人在实现本发明的过程中发现,现有技术至少存在如下问题:通过打印日志的方法对分布式Spark程序进行调试时,并不能在分布式Spark程序运行时直接对其进行调试,而且针对分布式Spark程序,需要将各个分布式节点保存的日志搜集起来进行分析,因而现有的通过打印日志调试分布式Spark程序的方法并不直观,而且调试效率低。
发明内容
本发明实施例的目的在于提供一种基于Spark平台的分布式调试方法、装置及电子设备,以实现在Spark程序运行时对Spark程序进行调试,提高调试效率。具体技术方案如下:
为达到上述目的,第一方面,本发明实施例公开了一种基于Spark平台的分布式调试方法,该方法包括:
在所述Spark平台中设置扩展程序,通过所述扩展程序扩展所述Spark平台的弹性分布式数据集RDD类,使扩展后的RDD类支持断点操作和监视点操作;
在Spark程序的Driver进程中设置第一调试控制程序,并在所述Spark程序的Executor进程中设置第二调试控制程序;
基于所述扩展后的RDD类,通过所述第一调试控制程序和所述第二调试控制程序,对所述Spark程序进行断点调试或监视点调试。
可选地,所述对所述Spark程序进行断点调试,包括:
当检测到所述Executor进程遇到断点时,控制所述第二调试控制程序暂停执行所述Executor进程;
和/或者,当检测到所述Driver进程接收到指示所述Executor进程继续执行的指令后,通过所述第一调试控制程序控制所述第二调试控制程序继续执行所述Executor进程。
可选地,所述对所述Spark程序进行监视点调试,包括:
当检测到所述Executor进程遇到监视点时,控制所述第二调试控制程序按照预设规则对当前RDD类中包括的RDD分布式数据进行计算,并判断计算结果是否满足预设条件;
如果计算结果满足所述预设条件,控制所述第二调试控制程序暂停执行所述Executor进程;和/或者,当检测到所述Driver进程接收到指示所述Executor进程继续执行的指令后,通过所述第一调试控制程序控制所述第二调试控制程序继续执行所述Executor进程;
或者,如果计算结果不满足所述预设条件,控制所述第二调试控制程序继续执行所述Executor进程。
可选地,在所述控制所述第二调试控制程序暂停执行所述Executor进程后,所述方法还包括:
通过所述第二调试控制程序将所述Executor进程对应的变量信息发送给所述第一调试控制程序;
控制所述第一调试控制程序展示所述变量信息。
可选地,所述变量信息存储于所述Executor进程对应的内存中。
第二方面,本发明实施例公开了一种基于Spark平台的分布式调试装置,该装置包括:
扩展模块,用于在所述Spark平台中设置扩展程序,通过所述扩展程序扩展所述Spark平台的弹性分布式数据集RDD类,使扩展后的RDD类支持断点操作和监视点操作;
设置模块,用于在Spark程序的Driver进程中设置第一调试控制程序,并在所述Spark程序的Executor进程中设置第二调试控制程序;
调试模块,用于基于所述扩展后的RDD类,通过所述第一调试控制程序和所述第二调试控制程序,对所述Spark程序进行断点调试或监视点调试。
可选地,所述调试模块包括:
第一控制子模块,用于当检测到所述Executor进程遇到断点时,控制所述第二调试控制程序暂停执行所述Executor进程;
和/或者,第一调试子模块,用于当检测到所述Driver进程接收到指示所述Executor进程继续执行的指令后,通过所述第一调试控制程序控制所述第二调试控制程序继续执行所述Executor进程。
可选地,所述调试模块包括:
第二控制子模块,用于当检测到所述Executor进程遇到监视点时,控制所述第二调试控制程序按照预设规则对当前RDD类中包括的RDD分布式数据进行计算,并判断计算结果是否满足预设条件;
第二调试子模块,用于如果所述第二控制子模块判断出所述计算结果满足所述预设条件时,控制所述第二调试控制程序暂停执行所述Executor进程;和/或者,当检测到所述Driver进程接收到指示所述Executor进程继续执行的指令后,通过所述第一调试控制程序控制所述第二调试控制程序继续执行所述Executor进程;
或者,如果所述第二控制子模块判断出所述计算结果不满足所述预设条件时,控制所述第二调试控制程序继续执行所述Executor进程。
可选地,所述装置还包括:
发送模块,用于在所述第一调试子模块或所述第二调试子模块控制所述第二调试控制程序暂停执行所述Executor进程后,通过所述第二调试控制程序将所述Executor进程对应的变量信息发送给所述第一调试控制程序;
展示模块,用于控制所述第一调试控制程序展示所述变量信息。
可选地,所述变量信息存储于所述Executor进程对应的内存中。
第三方面,本发明实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现如上第一方面所述的基于Spark平台的分布式调试的方法步骤。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行如上第一方面所述的基于Spark平台的分布式调试的方法步骤。
第五方面,本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行如上第一方面所述的基于Spark平台的分布式调试的方法步骤。
本发明实施例提供的基于Spark平台的分布式调试方法、装置及电子设备,首先在所述Spark平台中设置扩展程序,通过所述扩展程序扩展所述Spark平台的弹性分布式数据集RDD类,使扩展后的RDD类支持断点操作和监视点操作;然后在Spark程序的Driver进程中设置第一调试控制程序,并在所述Spark程序的Executor进程中设置第二调试控制程序;最后基于所述扩展后的RDD类,通过所述第一调试控制程序和所述第二调试控制程序,对所述Spark程序进行断点调试或监视点调试。本发明实施例能够方便开发人员在Spark程序运行时对Spark程序进行调试,提高调试效率,从而为减少分布式程序bug并提高分布式程序质量打下基础。
当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本发明实施例提供的一种基于Spark平台的分布式调试方法的流程示意图;
图2为本发明实施例提供的一种基于Spark平台的分布式调试装置的结构示意图;
图3为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
本发明实施例提供的基于Spark平台的分布式调试方法,能够用于对分布式Spark程序进行调试,具体地,可以对分布式Spark程序进行断点调试和监视点调试等。
图1为本发明实施例提供的一种基于Spark平台的分布式调试方法的流程示意图,该方法包括以下步骤:
S101,在Spark平台中设置扩展程序,通过扩展程序扩展Spark平台的弹性分布式数据集RDD类,使扩展后的RDD类支持断点操作和监视点操作。
弹性分布式数据集(Resilient Distributes Dataset,RDD)是spark中最基础、最常用的数据结构,是一种容错的、并行的数据结构。同时RDD还提供了一系列操作,比如map、flatMap、filter等,可以对RDD中的数据执行相应的操作。
断点(breakpoint)调试是调试程序的一种基本调试类型。在一次调试程序过程中在某个特定点设置断点,就可以在某个特定点上将程序暂时挂起。当程序处于断点模式时,程序中的函数、参数、变量等都保存在内存中,以便于调试人员查看程序中函数、参数、变量的位置和状态是否存在bug,进而在断点模式下对程序中的函数、参数、变量等进行调整。
监视点(watchpoint)调试是调试程序的另一种基本调试类型。在一次调试程序过程中设置监视点,目的在于监视某个参数或变量的变化情况,因而监视点操作实质上是监视一块内存,并且还可以设置对应的触发条件。即当所监视的参数或变量的变化情况达到触发条件时,则将程序暂时挂起,以便于调试人员查看程序中函数、参数、变量的位置和状态是否存在bug,进而在断点模式下对程序中的函数、参数、变量等进行调整。
本实施例中,可以在Spark平台中设置一扩展程序,通过该扩展程序扩展Spark平台中的RDD类,使扩展后的RDD类能够支持上述的断点调试对应的断点操作和上述的监视点调试对应的监视点操作。具体的,可以通过以下示例性的扩展程序实现上述步骤:
abstract class RDD[T:ClassTag]{
def breakpoint
def watchpoint(f:T=>Boo1ean)
}
S102,在Spark程序的Driver进程中设置第一调试控制程序,并在Spark程序的Executor进程中设置第二调试控制程序。
当通过Spark平台将Spark程序部署为Standalone模式时,一般包括一个Driver进程,是Spark程序运行时的主进程,用于解析Spark作业、生成Stage以及分发任务给Executor进程。在Standalone模式下,还包括多个Executor进程,每个Executor进程用于执行Driver进程分发的任务并将执行任务的结果返回给Driver进程。
本实施例中,可以在Spark程序的Driver进程中设置第一调试控制程序,以在对待调试的Spark程序进行调试时,具体使Driver进程通过第一调试控制程序对各个Executor进程执行调试Spark程序的相关控制操作。本实施例中,还可以在Spark程序的Executor进程中设置第二调试控制程序,以在对待调试的Spark程序进行调试时,具体使各个Executor进程通过第二调试控制程序接收Driver进程针对Spark程序的具体的调试操作。
S103,基于扩展后的RDD类,通过第一调试控制程序和第二调试控制程序,对Spark程序进行断点调试或监视点调试。
基于扩展后的RDD类,Spark程序的开发人员可以根据实际需要在Spark程序中设置断点或监视点,以查看并调整Spark程序的函数、变量等。
本实施例中,对Spark程序进行断点调试,可以包括:
当检测到Executor进程遇到断点时,控制第二调试控制程序暂停执行Executor进程;
和/或者,当检测到Driver进程接收到指示Executor进程继续执行的指令后,通过第一调试控制程序控制第二调试控制程序继续执行Executor进程。
可以理解,Executor进程是Spark程序的执行者,当检测到Executor进程遇到断点,意味着开发人员希望在断点处将Spark程序挂起并调试Spark程序,那么可以控制第二调试控制程序暂停执行Executor进程,进而待调试的Spark程序就可以在断点处暂停运行。
当开发人员对Spark程序的函数、变量等查看或调整后,可以通过Spark平台的应用程序编程接口(Application Programming Interface,API)向Driver进程发出继续执行Executor进程的指令,Driver进程接收到该指令后,可以通过第一调试控制程序控制第二调试控制程序继续执行Executor进程,从而被暂停运行的Spark程序可以继续运行。
可以理解,本实施例中,对Spark程序进行断点调试,可以只包括上述的控制第二调试控制程序暂停执行Executor进程或继续执行Executor进程的操作,也可以包括上述的首先控制第二调试控制程序暂停执行Executor进程,然后控制第二调试控制程序继续执行Executor进程的操作。
实际应用中,在对待调试的Spark程序进行监视点调试之前,还可以设置对应的触发条件,以在Spark程序运行时,当监测到当前的RDD数据满足该触发条件时,将Spark程序暂时挂起。触发条件可以根据Spark程序的开发人员的监视需求进行设置,本发明对此不作限制。本实施例中,可以在开发Spark程序的集成开发环境(IDE,Integrated DevelopmentEnvironment)中,添加watchpoint调试的触发条件。示例性地,通过以下程序添加触发条件:
本实施例中,对Spark程序进行监视点调试,可以包括:
当检测到Executor进程遇到监视点时,控制第二调试控制程序按照预设规则对当前RDD类中包括的RDD分布式数据进行计算,并判断计算结果是否满足预设条件;
如果计算结果满足预设条件,控制第二调试控制程序暂停执行Executor进程;和/或者,当检测到Driver进程接收到指示Executor进程继续执行的指令后,通过第一调试控制程序控制第二调试控制程序继续执行Executor进程;
或者,如果计算结果不满足预设条件,控制第二调试控制程序继续执行Executor进程。
可以理解,当检测到Executor进程遇到监视点,意味着开发人员希望在监视点处开始监视当前RDD数据中的某个或某几个变量,并且开发人员可以针对待监测的变量设置预设条件(即如上所述的触发条件)和预设规则。
例如,预设规则为:统计当前RDD数据中为1的数据个数,预设条件为:当前RDD数据中为1的数据个数达到100。那么,Executor进程在遇到监视点后,开始统计当前RDD数据中为1的数据的个数,当当前RDD数据中为1的数据个数未达到100时,可以控制第二调试控制程序继续执行Executor进程,即Spark程序继续运行;当当前RDD数据中为1的数据个数达到100时,可以控制第二调试控制程序暂停执行Executor进程将Spark程序挂起并调试Spark程序,那么可以控制第二调试控制程序暂停执行Executor进程,进而待调试的Spark程序就可以在断点处暂停运行。
当开发人员对Spark程序的函数、变量等查看或调整后,可以通过Spark平台的应用程序编程接口(Application Programming Interface,API)向Driver进程发出继续执行Executor进程的指令,Driver进程接收到该指令后,可以通过第一调试控制程序控制第二调试控制程序继续执行Executor进程,从而被暂停运行的Spark程序可以继续运行。
当然,实际应用中,可以按照预设时间间隔控制第二调试控制程序按照预设规则对当前RDD类中包括的RDD分布式数据进行计算,并判断计算结果是否满足预设条件。预设时间间隔可根据实际需要进行设定。
可以理解,本实施例中,对Spark程序进行监视点调试,可以只包括上述的控制第二调试控制程序暂停执行Executor进程或继续执行Executor进程的操作,也可以包括上述的首先控制第二调试控制程序暂停执行Executor进程,然后控制第二调试控制程序继续执行Executor进程的操作。
一种实现方式中,为了便于开发人员对Spark程序进行调试,在对Spark程序进行断点调试或监视点调试的过程中,在控制第二调试控制程序暂停执行Executor进程后,还可以通过第二调试控制程序将Executor进程对应的变量信息发送给第一调试控制程序,并控制第一调试控制程序展示变量信息。具体的,变量信息可以存储于Executor进程对应的内存中。
本发明实施例提供的基于Spark平台的分布式调试方法,首先在Spark平台中设置扩展程序,通过扩展程序扩展Spark平台的弹性分布式数据集RDD类,使扩展后的RDD类支持断点操作和监视点操作;然后在Spark程序的Driver进程中设置第一调试控制程序,并在Spark程序的Executor进程中设置第二调试控制程序;最后基于扩展后的RDD类,通过第一调试控制程序和第二调试控制程序,对Spark程序进行断点调试或监视点调试。本发明实施例能够方便开发人员在Spark程序运行时对Spark程序进行调试,提高调试效率,从而为减少分布式程序bug并提高分布式程序质量打下基础。
图2为本发明实施例提供的一种基于Spark平台的分布式调试装置的结构示意图,该装置包括:
扩展模块201,用于在Spark平台中设置扩展程序,通过扩展程序扩展Spark平台的弹性分布式数据集RDD类,使扩展后的RDD类支持断点操作和监视点操作;
设置模块202,用于在Spark程序的Driver进程中设置第一调试控制程序,并在Spark程序的Executor进程中设置第二调试控制程序;
调试模块203,用于基于扩展后的RDD类,通过第一调试控制程序和第二调试控制程序,对Spark程序进行断点调试或监视点调试。
本发明实施例提供的基于Spark平台的分布式调试装置,首先在Spark平台中设置扩展程序,通过扩展程序扩展Spark平台的弹性分布式数据集RDD类,使扩展后的RDD类支持断点操作和监视点操作;然后在Spark程序的Driver进程中设置第一调试控制程序,并在Spark程序的Executor进程中设置第二调试控制程序;最后基于扩展后的RDD类,通过第一调试控制程序和第二调试控制程序,对Spark程序进行断点调试或监视点调试。本发明实施例能够方便开发人员在Spark程序运行时对Spark程序进行调试,提高调试效率,从而为减少分布式程序bug并提高分布式程序质量打下基础。
一种实现方式中,调试模块203包括:
第一控制子模块(图中未示出),用于当检测到Executor进程遇到断点时,控制第二调试控制程序暂停执行Executor进程;
和/或者,第一调试子模块(图中未示出),用于当检测到Driver进程接收到指示Executor进程继续执行的指令后,通过第一调试控制程序控制第二调试控制程序继续执行Executor进程。
一种实现方式中,调试模块203包括:
第二控制子模块(图中未示出),用于当检测到Executor进程遇到监视点时,控制第二调试控制程序按照预设规则对当前RDD类中包括的RDD分布式数据进行计算,并判断计算结果是否满足预设条件;
第二调试子模块(图中未示出),用于如果第二控制子模块判断出计算结果满足预设条件时,控制第二调试控制程序暂停执行Executor进程;和/或者,当检测到Driver进程接收到指示Executor进程继续执行的指令后,通过第一调试控制程序控制第二调试控制程序继续执行Executor进程;
或者,如果第二控制子模块判断出计算结果不满足预设条件时,控制第二调试控制程序继续执行Executor进程。
一种实现方式中,上述装置还包括:
发送模块(图中未示出),用于在第一调试子模块或第二调试子模块控制第二调试控制程序暂停执行Executor进程后,通过第二调试控制程序将Executor进程对应的变量信息发送给第一调试控制程序;
展示模块(图中未示出),用于控制第一调试控制程序展示变量信息。
一种实现方式中,上述变量信息存储于Executor进程对应的内存中。
本发明实施例还提供了一种电子设备,如图3所示,包括处理器301、通信接口302、存储器303和通信总线304,其中,处理器301,通信接口302,存储器303通过通信总线304完成相互间的通信,
存储器303,用于存放计算机程序;
处理器301,用于执行存储器303上所存放的程序时,实现如下步骤:
在Spark平台中设置扩展程序,通过扩展程序扩展Spark平台的弹性分布式数据集RDD类,使扩展后的RDD类支持断点操作和监视点操作;
在Spark程序的Driver进程中设置第一调试控制程序,并在Spark程序的Executor进程中设置第二调试控制程序;
基于扩展后的RDD类,通过第一调试控制程序和第二调试控制程序,对Spark程序进行断点调试或监视点调试。
本发明实施例提供的电子设备,处理器通过执行存储器上所存放的程序首先在Spark平台中设置扩展程序,通过扩展程序扩展Spark平台的弹性分布式数据集RDD类,使扩展后的RDD类支持断点操作和监视点操作;然后在Spark程序的Driver进程中设置第一调试控制程序,并在Spark程序的Executor进程中设置第二调试控制程序;最后基于扩展后的RDD类,通过第一调试控制程序和第二调试控制程序,对Spark程序进行断点调试或监视点调试。本发明实施例能够方便开发人员在Spark程序运行时对Spark程序进行调试,提高调试效率,从而为减少分布式程序bug并提高分布式程序质量打下基础。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的基于Spark平台的分布式调试方法。
本发明实施例提供的计算机可读存储介质内存储的指令,当其在计算机上运行时,首先在Spark平台中设置扩展程序,通过扩展程序扩展Spark平台的弹性分布式数据集RDD类,使扩展后的RDD类支持断点操作和监视点操作;然后在Spark程序的Driver进程中设置第一调试控制程序,并在Spark程序的Executor进程中设置第二调试控制程序;最后基于扩展后的RDD类,通过第一调试控制程序和第二调试控制程序,对Spark程序进行断点调试或监视点调试。本发明实施例能够方便开发人员在Spark程序运行时对Spark程序进行调试,提高调试效率,从而为减少分布式程序bug并提高分布式程序质量打下基础。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的基于Spark平台的分布式调试方法。
本发明实施例提供的包含指令的计算程序产品,当其在计算机上运行时,首先在Spark平台中设置扩展程序,通过扩展程序扩展Spark平台的弹性分布式数据集RDD类,使扩展后的RDD类支持断点操作和监视点操作;然后在Spark程序的Driver进程中设置第一调试控制程序,并在Spark程序的Executor进程中设置第二调试控制程序;最后基于扩展后的RDD类,通过第一调试控制程序和第二调试控制程序,对Spark程序进行断点调试或监视点调试。本发明实施例能够方便开发人员在Spark程序运行时对Spark程序进行调试,提高调试效率,从而为减少分布式程序bug并提高分布式程序质量打下基础。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置/电子设备/存储介质/计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (11)

1.一种基于Spark平台的分布式调试方法,其特征在于,包括:
在所述Spark平台中设置扩展程序,通过所述扩展程序扩展所述Spark平台的弹性分布式数据集RDD类,使扩展后的RDD类支持断点操作和监视点操作;
在Spark程序的Driver进程中设置第一调试控制程序,并在所述Spark程序的Executor进程中设置第二调试控制程序;
基于所述扩展后的RDD类,通过所述第一调试控制程序和所述第二调试控制程序,对所述Spark程序进行断点调试或监视点调试。
2.根据权利要求1所述的方法,其特征在于,所述对所述Spark程序进行断点调试,包括:
当检测到所述Executor进程遇到断点时,控制所述第二调试控制程序暂停执行所述Executor进程;
和/或者,当检测到所述Driver进程接收到指示所述Executor进程继续执行的指令后,通过所述第一调试控制程序控制所述第二调试控制程序继续执行所述Executor进程。
3.根据权利要求1所述的方法,其特征在于,所述对所述Spark程序进行监视点调试,包括:
当检测到所述Executor进程遇到监视点时,控制所述第二调试控制程序按照预设规则对当前RDD类中包括的RDD分布式数据进行计算,并判断计算结果是否满足预设条件;
如果计算结果满足所述预设条件,控制所述第二调试控制程序暂停执行所述Executor进程;和/或者,当检测到所述Driver进程接收到指示所述Executor进程继续执行的指令后,通过所述第一调试控制程序控制所述第二调试控制程序继续执行所述Executor进程;
或者,如果计算结果不满足所述预设条件,控制所述第二调试控制程序继续执行所述Executor进程。
4.根据权利要求2或3所述的方法,其特征在于,在所述控制所述第二调试控制程序暂停执行所述Executor进程后,所述方法还包括:
通过所述第二调试控制程序将所述Executor进程对应的变量信息发送给所述第一调试控制程序;
控制所述第一调试控制程序展示所述变量信息。
5.根据权利要求4所述的方法,其特征在于,所述变量信息存储于所述Executor进程对应的内存中。
6.一种基于Spark平台的分布式调试装置,其特征在于,包括:
扩展模块,用于在所述Spark平台中设置扩展程序,通过所述扩展程序扩展所述Spark平台的弹性分布式数据集RDD类,使扩展后的RDD类支持断点操作和监视点操作;
设置模块,用于在Spark程序的Driver进程中设置第一调试控制程序,并在所述Spark程序的Executor进程中设置第二调试控制程序;
调试模块,用于基于所述扩展后的RDD类,通过所述第一调试控制程序和所述第二调试控制程序,对所述Spark程序进行断点调试或监视点调试。
7.根据权利要求6所述的装置,其特征在于,所述调试模块包括:
第一控制子模块,用于当检测到所述Executor进程遇到断点时,控制所述第二调试控制程序暂停执行所述Executor进程;
和/或者,第一调试子模块,用于当检测到所述Driver进程接收到指示所述Executor进程继续执行的指令后,通过所述第一调试控制程序控制所述第二调试控制程序继续执行所述Executor进程。
8.根据权利要求6所述的装置,其特征在于,所述调试模块包括:
第二控制子模块,用于当检测到所述Executor进程遇到监视点时,控制所述第二调试控制程序按照预设规则对当前RDD类中包括的RDD分布式数据进行计算,并判断计算结果是否满足预设条件;
第二调试子模块,用于如果所述第二控制子模块判断出所述计算结果满足所述预设条件时,控制所述第二调试控制程序暂停执行所述Executor进程;和/或者,当检测到所述Driver进程接收到指示所述Executor进程继续执行的指令后,通过所述第一调试控制程序控制所述第二调试控制程序继续执行所述Executor进程;
或者,如果所述第二控制子模块判断出所述计算结果不满足所述预设条件时,控制所述第二调试控制程序继续执行所述Executor进程。
9.根据权利要求7或8所述的装置,其特征在于,所述装置还包括:
发送模块,用于在所述第一调试子模块或所述第二调试子模块控制所述第二调试控制程序暂停执行所述Executor进程后,通过所述第二调试控制程序将所述Executor进程对应的变量信息发送给所述第一调试控制程序;
展示模块,用于控制所述第一调试控制程序展示所述变量信息。
10.根据权利要求9所述的装置,其特征在于,所述变量信息存储于所述Executor进程对应的内存中。
11.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-5任一所述的方法步骤。
CN201810005025.9A 2018-01-03 2018-01-03 基于Spark平台的分布式调试方法、装置及电子设备 Pending CN108228459A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810005025.9A CN108228459A (zh) 2018-01-03 2018-01-03 基于Spark平台的分布式调试方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810005025.9A CN108228459A (zh) 2018-01-03 2018-01-03 基于Spark平台的分布式调试方法、装置及电子设备

Publications (1)

Publication Number Publication Date
CN108228459A true CN108228459A (zh) 2018-06-29

Family

ID=62642754

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810005025.9A Pending CN108228459A (zh) 2018-01-03 2018-01-03 基于Spark平台的分布式调试方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN108228459A (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040117605A1 (en) * 2002-12-11 2004-06-17 Infineon Technologies North America Corp. Digital processor with programmable breakpoint/watchpoint trigger generation circuit
CN102279790A (zh) * 2010-06-11 2011-12-14 国际商业机器公司 分布式调试方法和系统
CN103339614A (zh) * 2011-01-28 2013-10-02 Arm有限公司 控制调试异常的产生
CN104298598A (zh) * 2014-10-01 2015-01-21 东北大学 分布式环境下rdfs本体的调试方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040117605A1 (en) * 2002-12-11 2004-06-17 Infineon Technologies North America Corp. Digital processor with programmable breakpoint/watchpoint trigger generation circuit
CN102279790A (zh) * 2010-06-11 2011-12-14 国际商业机器公司 分布式调试方法和系统
CN103339614A (zh) * 2011-01-28 2013-10-02 Arm有限公司 控制调试异常的产生
CN104298598A (zh) * 2014-10-01 2015-01-21 东北大学 分布式环境下rdfs本体的调试方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
MUHAMMAD ALI GULZAR等: "BigDebug: Debugging Primitives for Interactive Big Data Processing in Spark", 《2016 IEEE/ACM 38TH IEEE INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING》 *
周大为: "《Visual Basic程序设计教程》", 31 December 2008 *
王晟: "《Access 2000中文版使用入门与程序设计初步》", 31 October 1999 *

Similar Documents

Publication Publication Date Title
CN109800159B (zh) 程序调试方法、程序调试装置、终端设备及存储介质
Moran et al. Automatically discovering, reporting and reproducing android application crashes
US11599408B2 (en) Technology system auto-recovery and optimality engine and techniques
EP3213217B1 (en) Historical control flow visualization in production diagnostics
US20180129590A1 (en) System and method for determining test coverage
US8719789B2 (en) Measuring coupling between coverage tasks and use thereof
CN109062809A (zh) 一种线上测试用例生成方法、装置及电子设备
US20070079288A1 (en) System and method for capturing filtered execution history of executable program code
Chen et al. Flowchecker: Detecting bugs in mpi libraries via message flow checking
US10984109B2 (en) Application component auditor
TWI566090B (zh) Debugging firmware / software to produce tracking systems and methods, recording media and computer program products
CN109358975A (zh) 一种软件运行异常的分析方法、装置、电子设备及存储介质
WO2013158788A2 (en) Devices for indicating a physical layer error
CN110580226A (zh) 操作系统级程序的目标码覆盖率测试方法、系统及介质
CN109543417A (zh) 一种基于Qemu平台的漏洞挖掘方法和装置
US20100318850A1 (en) Generation of a stimuli based on a test template
CN105095763B (zh) 漏洞防御方法及装置、电子设备
CN106919462A (zh) 一种生成处理器故障记录的方法及装置
CN113157508B (zh) 嵌入式系统的测试方法、系统、装置、设备及存储介质
CN107463494B (zh) 中断服务程序调试方法、装置、存储介质及其计算机设备
CN108228459A (zh) 基于Spark平台的分布式调试方法、装置及电子设备
RU2669686C1 (ru) Способ и система для помощи в верификации и валидации цепи алгоритмов
CN114328045A (zh) 一种bmc的i2c调试方法、系统、装置及计算机可读存储介质
CN110554969B (zh) 基于预设断点的目标码覆盖率测试方法、系统及介质
CN116382968B (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20180629

RJ01 Rejection of invention patent application after publication