CN107844410A - 一种分布式集群系统的调试方法和装置 - Google Patents

一种分布式集群系统的调试方法和装置 Download PDF

Info

Publication number
CN107844410A
CN107844410A CN201610829431.8A CN201610829431A CN107844410A CN 107844410 A CN107844410 A CN 107844410A CN 201610829431 A CN201610829431 A CN 201610829431A CN 107844410 A CN107844410 A CN 107844410A
Authority
CN
China
Prior art keywords
data
udf
calculate node
debugged
information
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
CN201610829431.8A
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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201610829431.8A priority Critical patent/CN107844410A/zh
Publication of CN107844410A publication Critical patent/CN107844410A/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/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/161Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning

Abstract

本申请涉及一种分布式集群系统的调试方法及装置所述方法包括:向分布式集群系统发送数据请求,所述数据请求包含待调试计算节点的信息;接收所述分布式集群系统发送的与所述数据请求对应的待调试计算节点的用户定义方法UDF代码和数据;利用预先设置的UDF最小运行环境运行所述UDF代码和数据,以对所述计算节点进行调试。本申请可以利用预先设置的UDF最小运行环境以及获取的线上UDF实际运行代码和数据,对单个计算节点进行调试,有效降低了用户调试UDF的成本,提高了数据处理效率。

Description

一种分布式集群系统的调试方法和装置
技术领域
本申请涉及终端设备技术领域,尤其涉及一种分布式集群系统的调试方法和装置。
背景技术
分布式集群系统可以将大型计算任务部署到多台机器上运行,从而利用多台集群的计算资源提高数据的处理能力,因此得到了广泛的应用。分布式集群系统可以为用户提供统一的计算框架,但由于每个用户的需求是不一样的,因此出现了一种用户定义方法(英文全称为User Defined Function,英文简称为UDF),可以允许用户在所述计算框架内根据自己的业务逻辑编写UDF程序,并提交到分布式集群系统后运行。然而,用户的UDF程序可能包含种种错误,当UDF程序在分布式集群系统中运行时发生异常时,会导致用户的整个作业失败。因此,需要一种方法对用户的UDF程序进行调试。
现有技术中,存在两种方法可以用于调试用户的UDF程序。一种方法是通过分布式集群系统的专业维护人员帮助用户定位错误,但这种方式的人力成本耗费较大。另外一种方法是用户自己通过分布式集群系统的标准错误输出(英文全称为standard error)文件查看运行时出错信息,用户修正一个错误后,需要重新提交整个作业来验证修改是否正确。由于系统在计算节点出错后即会停止整个作业的运行,因此当某个计算节点包含多个错误时,由于用户只能看到第一个错误的信息,因此需要反复提交整个作业来验证修改是否正确,非常耗费时间资源和计算资源。
发明内容
本申请的目的是,提供一种分布式集群系统的调试方法和装置,可以降低用户的调试成本,提高数据处理效率。
根据本申请的第一方面,提供了一种调试系统,包括客户端和分布式集群系统,其中:
所述客户端用于向所述分布式集群系统发送数据请求,所述数据请求包含待调试计算节点的信息;接收所述分布式集群系统发送的与所述数据请求对应的待调试计算节点的用户定义方法UDF代码和数据;利用预先设置的UDF最小运行环境运行所述UDF代码和数据,以对所述计算节点进行调试;
所述分布式集群系统用于接收所述客户端发送的数据请求,所述数据请求包含待调试计算节点的信息;根据所述待调试计算节点的信息,获取与所述待调试计算节点对应的用户定义方法UDF代码和数据;向所述客户端发送所述UDF代码和数据。
根据本申请的第二方面,提供了一种分布式集群系统的调试方法,所述方法应用于客户端,包括:
向分布式集群系统发送数据请求,所述数据请求包含待调试计算节点的信息;
接收所述分布式集群系统发送的与所述数据请求对应的待调试计算节点的用户定义方法UDF代码和数据;
利用预先设置的UDF最小运行环境运行所述UDF代码和数据,以对所述计算节点进行调试。
可选地,所述待调试计算节点的信息包括所述计算节点的标识、位置和路径信息。
可选地,所述利用预先设置的UDF最小运行环境运行所述UDF代码和数据,以对所述计算节点进行调试包括:
利用预先设置的UDF最小运行环境运行所述UDF代码和数据,显示标准输出信息、标准错误信息以及所述计算节点的运行信息,以便用户对所述计算节点进行调试。
可选地,所述客户端包括虚拟机容器模块和集成开发环境IDE模块,所述利用预先设置的UDF最小运行环境运行所述UDF代码和数据,显示标准输出信息、标准错误信息以及所述计算节点的运行信息,以便用户对所述计算节点进行调试包括:
利用所述虚拟机容器模块承载的UDF最小运行环境运行所述UDF代码和数据;
所述虚拟机容器模块将标准输出信息、标准错误信息以文件流的形式发送给所述IDE模块,以便所述IDE模块向用户显示所述标准输出信息和所述标准错误信息;
所述虚拟机容器模块在所述UDF的运行时启动时与所述IDE模块的调试器实现连接,以便所述IDE模块获取并显示所述计算节点的运行信息。
可选地,所述方法还包括:
设置UDF最小运行环境,所述UDF最小运行环境包括所述分布式集群系统的部分计算框架以及UDF运行时runtime。
根据本申请的第三方面,提供了一种分布式集群系统的调试方法,所述方法应用于分布式集群系统,包括:
接收客户端发送的数据请求,所述数据请求包含待调试计算节点的信息;
根据所述待调试计算节点的信息,获取与所述待调试计算节点对应的用户定义方法UDF代码和数据;
向所述客户端发送所述UDF代码和数据。
可选地,所述待调试计算节点的信息包括所述计算节点的标识、位置和路径信息。
可选地,所述待调试计算节点的信息还包括用户账户信息,在接收到客户端发送的数据请求后,所述方法还包括:
根据所述用户账户信息对所述数据请求进行鉴权处理,以确定所述用户是否具有获取所述数据的权限。
可选地,所述获取与所述待调试计算节点对应的用户定义方法UDF代码和数据包括:
获取所述待调试计算节点的UDF代码、所述分布式集群系统为所述计算节点生成的代码、所述计算节点的输入数据、所述计算节点的执行计划。
根据本申请的第四方面,提供了一种分布式集群系统的调试装置,包括:
发送单元,用于向分布式集群系统发送数据请求,所述数据请求包含待调试计算节点的信息;
接收单元,用于接收所述分布式集群系统发送的与所述数据请求对应的待调试计算节点的用户定义方法UDF代码和数据;
调试单元,用于利用预先设置的UDF最小运行环境运行所述UDF代码和数据,以对所述计算节点进行调试。
可选地,所述发送单元具体用于:
向分布式集群系统发送包含待调试计算节点的标识、位置和路径信息的数据请求。
可选地,所述调试单元具体用于:
利用预先设置的UDF最小运行环境运行所述UDF代码和数据,显示标准输出信息、标准错误信息以及所述计算节点的运行信息,以便用户对所述计算节点进行调试。
根据本申请的第五方面,提供了一种分布式集群系统的调试装置,包括:
接收单元,用于接收客户端发送的数据请求,所述数据请求包含待调试计算节点的信息;
获取单元,用于根据所述待调试计算节点的信息,获取与所述待调试计算节点对应的用户定义方法UDF代码和数据;
发送单元,用于向所述客户端发送所述UDF代码和数据。
可选地,所述接收单元具体用于:
接收客户端发送的包含待调试计算节点的标识、位置和路径信息的数据请求。
可选地,所述装置还包括:
当所述数据请求还包括用户账户信息时,在接收到所述数据请求后,根据所述用户账户信息对所述数据请求进行鉴权处理,以确定所述用户是否具有获取所述数据的权限。
可选地,所述获取单元具体用于:
获取所述待调试计算节点的UDF代码、所述分布式集群系统为所述计算节点生成的代码、所述计算节点的输入数据、所述计算节点的执行计划。
本申请实施例提供的分布式集群系统的调试方法和装置,可以利用预先设置的UDF最小运行环境以及获取的线上UDF实际运行代码和数据,对单个计算节点进行调试,有效降低了用户调试UDF的成本,提高了数据处理效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例可以应用的一个示意性应用场景;
图2为本申请实施例提供的一种分布式集群系统的调试方法流程图;
图3为本申请实施例提供的又一种分布式集群系统的调试方法流程图;
图4为本申请实施例提供的又一种分布式集群系统的调试方法示意图;
图5为本申请实施例提供的一种分布式集群系统的调试装置示意图;
图6为本申请实施例提供的又一种分布式集群系统的调试装置示意图。
具体实施方式
本申请的目的是,提供一种分布式集群系统的调试方法和装置,可以降低用户的调试成本,提高数据处理效率。
在本文中,需要理解的是,所涉及的术语“客户端”包括但不限于各类电子设备,所述电子设备可以是现有的、正在研发的或将来研发的任何电子设备,包括但不限于:现有的、正在研发的或将来研发的、台式计算机、膝上型计算机、移动终端(包括智能手机、非智能手机、各种平板电脑)等。所述客户端可以与所述分布式集群系统进行数据交互。
其中,所涉及的技术术语“分布式集群系统”一般指将计算任务部署到多台机器上运行的系统,所述分布式集群系统可以包括多个计算节点。
其中,所涉及的技术术语“计算节点”一般是指运行在每台机器上的每个计算进程、数据、运行时(英文名称为runtime)。
其中,所涉及的技术术语“运行时”(英文名称为runtime)一般是指一种面向对象的编程语言的运行环境。举例说明,在Java中,Runtime类封装了运行时的环境。每个Java应用程序都有一个Runtime类实例,使应用程序能够与其运行的环境相连接。当然,运行时还可能具有其他含义,在此不进行限定。
其中,所涉及的技术术语“集成开发环境”(英文全称为Integrated DevelopmentEnvironment,英文简称为IDE),一般是指提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面工具。
其中,所涉及的技术术语“调试器”一般是指一种用于调试其它程序的计算机程序及工具,能够让代码在指令组模拟器(ISS)中可以检查运行状况以及选择性地运行,以便排错、除错。
其中,所涉及的技术术语“UDF”(英文全称为User Defined Function,中文全称为用户定义方法),在本文中是指一种用户使用自定义的业务逻辑编写的程序。
当然,上述术语的解释仅为方便理解而做出,而不具有任何限制含义。
为使得本申请的发明目的、特征、优点能够更加的明显和易懂,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述,显然,所描述的实施例仅仅是本申请一部分实施例,而非全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
首先参考图1,本申请实施方式可以应用的场景例如可以为如图1所示的调试系统,所述调试系统包括客户端设备500和分布式集群系统600。其中,客户端设备500(下文简称客户端)和分布式集群系统600可以交互数据。例如,客户端可以向分布式集群系统提交作业,分布式集群系统可以响应客户端的数据请求,向其发送数据。其中,所述客户端具体用于向所述分布式集群系统发送数据请求,所述数据请求包含待调试计算节点的信息;接收所述分布式集群系统发送的与所述数据请求对应的待调试计算节点的用户定义方法UDF代码和数据;利用预先设置的UDF最小运行环境运行所述UDF代码和数据,以对所述计算节点进行调试。所述分布式集群系统具体用于接收所述客户端发送的数据请求,所述数据请求包含待调试计算节点的信息;根据所述待调试计算节点的信息,获取与所述待调试计算节点对应的用户定义方法UDF代码和数据;向所述客户端发送所述UDF代码和数据需要注意的是,上述应用场景仅是为了便于理解本申请的精神和原理而示出,本申请的实施方式在此方面不受任何限制。相反,本申请的实施方式可以应用于适用的任何场景。
下面结合图1的应用场景,参考图2至图4分别从客户端侧和分布式集群系统侧来描述根据本申请示例性实施方式的分布式集群系统的调试方法。
如图2所示,为根据本申请一实施方式的分布式集群系统的调试方法的流程图,该方法应用于客户端,具体例如可以包括:
S201、客户端向分布式集群系统发送数据请求,所述数据请求包含待调试计算节点的信息。
客户端可以通过预先定义的接口向分布式集群系统发送数据请求用于请求待调试计算节点的用户定义方法UDF的代码以及数据。其中,所述数据请求包含待调试计算节点的信息,所述待调试计算节点的信息例如可以包括待调试计算节点的标识、位置和路径信息。其中,所述计算节点的标识用于唯一标识所述计算节点。所述计算节点的位置信息例如可以是所述计算节点的IP地址。所述计算节点的路径信息用于表示如何访问所述计算节点,例如所述结算节点布置在哪个计算机上的哪个位置等。可选地,所述待调试计算节点的信息还可以包括客户端的用户账号信息,用于分布式集群系统根据所述用户账户信息对所述数据请求进行鉴权处理,以确定所述用户是否具有获取所述数据的权限。对应地,分布式集群系统在接收到客户端的数据请求后,会根据所述数据请求包含的待调试计算节点的信息,获取与所述待调试计算节点对应的用户定义方法UDF代码和数据,并向所述客户端发送所述UDF代码和数据。分布式集群系统的具体实现可以参照图3所示实施例的描述。
S202、客户端接收所述分布式集群系统发送的与所述数据请求对应的待调试计算节点的用户定义方法UDF代码和数据。
具体实现时,分布式集群系统会对所述UDF代码和数据进行打包处理,发送给客户端。客户端在接收到所述UDF代码和数据后进行解压处理。
其中,所述待调试计算节点对应的UDF代码和数据包括:
(1)所述待调试计算节点的UDF代码。
(2)所述分布式集群系统为所述计算节点生成的代码。例如,所述分布式集群系统的计算框架为当前计算节点生成的代码(code),例如为ODPS(中文全称为开放式数据平台服务)结构化查询语言(英文全称为Structured Query Language,英文简称为SQL)而编码生成(Code Generate)的动态库等。
(3)所述计算节点的输入数据。
(4)所述计算节点的执行计划。
S203,客户端利用预先设置的UDF最小运行环境运行所述UDF代码和数据,以对所述计算节点进行调试。
具体实现时,客户端预先设置UDF最小运行环境,所述UDF最小运行环境包括所述分布式集群系统的部分计算框架以及UDF运行时。举例说明,对应Java语言的UDF而言,UDF运行时便是JDK(英文全称为Java Development Kit,中文全称为Java软件开发工具包)。
需要说明的是,用户使用客户端提交作业以后(作业里包含用户自定义的一个或者多个模块,即UDF),UDF会在分布式系统的框架里运行。为了能够重现在线作业的某个计算节点出错的场景,需要在用户的开发机(即客户端)上运行UDF,便需要准备一个UDF的运行环境。由于用户开发机的资源(包括硬盘大小,内存大小等)有限,所以尽量从分布式系统中抽取一个UDF的最小运行环境,只要包含必要的少量框架模块即可,不需要准备整个分布式系统的所有模块。这里,UDF的最小运行环境包括所述分布式集群系统的部分计算框架以及UDF运行时。具体实现时,用户可以通过下载包含运行时(runtime)的虚拟机容器镜像来准备UDF的最小运行环境。在所述虚拟机容器镜像中即包含了分布式集群系统的部分计算框架以及UDF运行时。举例说明,用户可以下载docker容器镜像来设置UDF的最小运行环境。所述设置UDF最小运行环境的操作可以在客户端发送数据请求之前进行,也可以在客户端发送数据请求、接收到分布式集群系统发送的UDF代码和数据之后,在对计算节点调试前进行。
具体实现时,客户端可以利用预先设置的UDF最小运行环境运行所述UDF代码和数据,显示标准输出信息、标准错误信息以及所述计算节点的运行信息,以便用户对所述计算节点进行调试。其中,标准输出信息包括计算节点运行UDF代码的输出结果,标准错误信息包括计算节点运行时的出错信息。计算节点的运行信息是指计算节点运行的具体步骤以及某一步骤包含的变量、变量值等具体运行信息。用户通过查看所述标准输出信息、标准错误信息以及所述计算节点的运行信息,可以对计算节点进行调试。具体的调试方法在此不进行限定。
在一些实施方式中,所述客户端包括虚拟机容器模块和集成开发环境IDE模块,所述利用预先设置的UDF最小运行环境运行所述UDF代码和数据,显示标准输出信息、标准错误信息以及所述计算节点的运行信息,以便用户对所述计算节点进行调试包括:利用所述虚拟机容器模块承载的UDF最小运行环境运行所述UDF代码和数据;所述虚拟机容器模块将标准输出信息、标准错误信息以文件流的形式发送给所述IDE模块,以便所述IDE模块向用户显示所述标准输出信息和所述标准错误信息;所述虚拟机容器模块在所述UDF的运行时启动时与所述IDE模块的调试器实现连接,以便所述IDE模块获取并显示所述计算节点的运行信息。举例说明,当虚拟机容器模块为Docker Container时,所述Docker Container启动后会运行内部的计算节点(vertex)的代码以及相应数据,并将标准输出信息stdout和所述标准错误信息stderr共享文件以文件流的形式传送给IDE模块,同时在UDF的runtime启动时将UDF进程连接到IDE内部的调试器,以便IDE的调试器可以获取并显示计算节点的全部运行信息。这时,用户可以使用IDE自身的调试器调试计算节点,例如断点、插入临时语句等。用户还可以看到UDF程序异常时的完整信息。若用户在同一个计算节点存在多个错误,那么用户可以使用客户端反复修改代码并再次编译然后在UDF最小运行环境下进行测试,直至该计算节点完全正确为止。由此避免了向线上的分布式集群系统反复提交作业带来的时间和资源的耗费。
以上从客户端侧介绍了本申请的分布式集群系统的调试方法,现在从分布式集群系统侧介绍分布式集群系统的调试方法。如图3所示,为根据本申请一实施方式的分布式集群系统的调试方法的流程图,该方法应用于分布式集群系统,具体例如可以包括:
S301,分布式集群系统接收客户端发送的数据请求,所述数据请求包含待调试计算节点的信息。
具体实现时,所述待调试计算节点的信息包括所述计算节点的标识、位置和路径信息。可选地,所述待调试计算节点的信息还包括用户账户信息,在接收到客户端发送的数据请求后,所述方法还包括:根据所述用户账户信息对所述数据请求进行鉴权处理,以确定所述用户是否具有获取所述数据的权限。举例说明,分布式集群系统会对所述数据请去进行鉴权,确认请求的发起者即所述用户账户的拥有者是否具有作业的读权限以及所有输入文件的读权限,若具有权限,则响应所述数据请求;若不具有权限,则拒绝响应所述数据请求。
S302,根据所述待调试计算节点的信息,获取与所述待调试计算节点对应的用户定义方法UDF代码和数据。
具体实现时,所述获取与所述待调试计算节点对应的用户定义方法UDF代码和数据包括:获取所述待调试计算节点的UDF代码、所述分布式集群系统为所述计算节点生成的代码、所述计算节点的输入数据、所述计算节点的执行计划。
S303,向所述客户端发送所述UDF代码和数据。
在一些实施方式中,分布式集群系统包括集群控制服务器以及多个计算节点任务机。所述集群控制服务器用于接收客户端发送的数据请求,并对数据请求进行鉴权处理。若鉴权通过后,会根据所述数据请求包含的待调试计算节点的标识、位置和路径信息将所述数据请求转发给计算集群的目标计算节点。所述目标计算节点会获取所述计算节点的执行计划,获取需要下载的输入文件(即计算节点的输入数据)。然后,将所述计算节点的执行计划、输入数据、UDF代码、所述分布式集群系统为所述计算节点生成的代码一起打包,发送给集群控制服务器,由集群控制服务器将打包好的用户代码和数据发送给客户端。
为了便于本领域技术人员更清楚地理解本申请在具体场景下的实施方式,下面以一个具体示例对本申请实施方式进行介绍。需要说明的是,该具体示例仅为使得本领域技术人员更清楚地了解本申请,但本申请的实施方式不限于该具体示例。
参见图4,为本申请实施例提供的又一种分布式集群系统的调试方法示意图。
如图4所示,客户端Dev Machine用于表示分布式系统的使用者(开发者)的工作终端。其中,客户端Dev Machine包括虚拟机容器模块(Docker Container,以下简称容器模块)和集成开发环境模块IDE。其中,所述容器模块内置有UDF的最小运行环境,其用于承载计算节点vertex的全部运行环境,内置与线上机器相同或近似的操作系统。所述IDE模块例如可以是Intellij或者Eclipse等,在IDE模块内部包含调试器(Debugger)。
如图4所示,分布式集群系统包括集群控制服务器ODPS Service以及多个计算节点设备Worker。其中,计算节点访问接口API是用于访问计算节点进程的接口,会对来自客户端的请求进行鉴权。计算节点设备Worker为ODPS平台的计算节点(vertex)。计算节点进程为运行在每个计算节点vertex上的独立进程,用于监听某特定端口,提供vertex数据的打包服务。
具体实现时,图4所示方法可以包括以下步骤:
步骤a:客户端向集群控制服务器发送数据请求。
具体实现时,客户端使用IDE(并结合ODPS Studio插件扩展)来得到作业的执行信息,例如可以包括作业是否成功,作业包括哪些计算节点,每个计算节点的状态等。客户端获取想要调试的某个或某些计算节点(运行成功或失败的均可)的位置和路径等信息,并通过ODPS API向ODPS Service发出数据请求。
步骤b:集群控制服务器(ODPS Service)在接到数据请求后,会对请求进行鉴权,确认请求发起者拥有作业的读权限和所有输入文件的读权限后,把请求转发给计算集群的目标计算节点,即Fuxi Worker。
步骤c:计算节点获取用户作业代码和数据。
计算节点进程是运行在计算节点设备Worker上的服务进程,它在接到请求后,会找到该计算节点的执行计划,从中找到需要下载的输入文件,并下载到本地。同时将用户作业代码和数据一起打包,并将打包好的用户作业代码和数据传回集群控制服务器(ODPSService)。具体实现如图4所示,计算节点进程会下载输入数据(Download inputs data),修改执行计划(Change exe plan),打包代码和数据(Tar bits and data),发送打包后的代码和数据给客户端(Send tar to dev machine)。
步骤d:ODPS API返回打包好的用户作业代码和数据给客户端IDE。
步骤e:客户端IDE解压打包好的计算节点的代码和数据,并加载到容器模块Docker Container,然后启动容器模块Docker Container。
具体实现时,IDE模块可以预先下载包含运行时的容器镜像(图中所示的Downloaddocker image with runtime)。当然,也可以在IDE接收到计算节点的代码和数据后,发现本地开发机未安装Docker环境,则IDE会提醒用户安装Docker Toolbox,以及包含ODPS运行时的镜像Image。然后,IDE解压打包好的vertex计算节点的代码和数据(untar job dataand bits),加载所述代码和数据至Docker Container,然后启动Container(Start dockercontainer)。
步骤f:Docker Container启动后会启动内部的vertex(Start vertex),并将stdout/stderr共享文件以流式传送给IDE,同时在UDF的runtime启动时连接attach到IDE内的调试器debugger(Attach to Debugger in IDE)。最后,IDE的内部调试器会将vertex的运行信息完全展示给用户,用户可以使用IDE自身各种强大的功能调试的vertex,如断点,插入临时语句等,也可以看到UDF程序异常时的完整信息。值得一提的是,如果用户在UDF再次提交前就是使用了该IDE进行UDF的开发,那么,用户可以反复修改代码并再次编译UDF然后部署至该Docker Container进行反复测试,直至正确,这对于UDF非常复杂、bug可能不止一处,或者作业重新提交代价过大的开发者尤为有益。
以上是对本申请实施例所提供的分布式集群系统的调试方法进行的详细描述,下面对本申请提供的分布式集群系统的调试装置进行详细描述。
图5是本申请实施例提供的分布式集群系统的调试装置示意图,如图5所示,本申请的分布式集群系统的调试装置包括:发送单元501、接收单元502和调试单元503。
其中,所述发送单元用于向分布式集群系统发送数据请求,所述数据请求包含待调试计算节点的信息;
所述接收单元用于接收所述分布式集群系统发送的与所述数据请求对应的待调试计算节点的用户定义方法UDF代码和数据;
所述调试单元用于利用预先设置的UDF最小运行环境运行所述UDF代码和数据,以对所述计算节点进行调试。
在一些实施方式中,所述发送单元具体用于:
向分布式集群系统发送包含待调试计算节点的标识、位置和路径信息的数据请求。
在一些实施方式中,所述调试单元具体用于:
利用预先设置的UDF最小运行环境运行所述UDF代码和数据,显示标准输出信息、标准错误信息以及所述计算节点的运行信息,以便用户对所述计算节点进行调试。
图6是本申请实施例提供的分布式集群系统的调试装置示意图,如图6所示,本申请的分布式集群系统的调试装置包括:接收单元601、获取单元602和发送单元603。
其中,所述接收单元用于接收客户端发送的数据请求,所述数据请求包含待调试计算节点的信息;
所述获取单元用于根据所述待调试计算节点的信息,获取与所述待调试计算节点对应的用户定义方法UDF代码和数据;
所述发送单元用于向所述客户端发送所述UDF代码和数据.
在一些实施方式中,所述接收单元具体用于:
接收客户端发送的包含待调试计算节点的标识、位置和路径信息的数据请求。
在一些实施方式中,所述装置还包括:
当所述数据请求还包括用户账户信息时,在接收到所述数据请求后,根据所述用户账户信息对所述数据请求进行鉴权处理,以确定所述用户是否具有获取所述数据的权限。
在一些实施方式中,所述获取单元具体用于:
获取所述待调试计算节点的UDF代码、所述分布式集群系统为所述计算节点生成的代码、所述计算节点的输入数据、所述计算节点的执行计划。
上述各单元的功能可对应于图2~图4详细描述的上述分布式集群系统的调试方法的处理步骤,于此不再赘述。
本申请实施例提供的分布式集群系统的调试方法和装置,可以利用预先设置的UDF最小运行环境以及获取的线上UDF实际运行代码和数据,对单个计算节点进行调试,有效降低了用户调试UDF的成本,提高了数据处理效率。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (12)

1.一种调试系统,其特征在于,包括客户端和分布式集群系统,其中:
所述客户端用于向所述分布式集群系统发送数据请求,所述数据请求包含待调试计算节点的信息;接收所述分布式集群系统发送的与所述数据请求对应的待调试计算节点的用户定义方法UDF代码和数据;利用预先设置的UDF最小运行环境运行所述UDF代码和数据,以对所述计算节点进行调试;
所述分布式集群系统用于接收所述客户端发送的数据请求,所述数据请求包含待调试计算节点的信息;根据所述待调试计算节点的信息,获取与所述待调试计算节点对应的用户定义方法UDF代码和数据;向所述客户端发送所述UDF代码和数据。
2.一种分布式集群系统的调试方法,其特征在于,所述方法应用于客户端,包括:
向分布式集群系统发送数据请求,所述数据请求包含待调试计算节点的信息;
接收所述分布式集群系统发送的与所述数据请求对应的待调试计算节点的用户定义方法UDF代码和数据;
利用预先设置的UDF最小运行环境运行所述UDF代码和数据,以对所述计算节点进行调试。
3.根据权利要求2所述的方法,其特征在于,所述待调试计算节点的信息包括所述计算节点的标识、位置和路径信息。
4.根据权利要求2所述的方法,其特征在于,所述利用预先设置的UDF最小运行环境运行所述UDF代码和数据,以对所述计算节点进行调试包括:
利用预先设置的UDF最小运行环境运行所述UDF代码和数据,显示标准输出信息、标准错误信息以及所述计算节点的运行信息,以便用户对所述计算节点进行调试。
5.根据权利要求4所述的方法,其特征在于,所述客户端包括虚拟机容器模块和集成开发环境IDE模块,所述利用预先设置的UDF最小运行环境运行所述UDF代码和数据,显示标准输出信息、标准错误信息以及所述计算节点的运行信息,以便用户对所述计算节点进行调试包括:
利用所述虚拟机容器模块承载的UDF最小运行环境运行所述UDF代码和数据;
所述虚拟机容器模块将标准输出信息、标准错误信息以文件流的形式发送给所述IDE模块,以便所述IDE模块向用户显示所述标准输出信息和所述标准错误信息;
所述虚拟机容器模块在所述UDF的运行时启动时与所述IDE模块的调试器实现连接,以便所述IDE模块获取并显示所述计算节点的运行信息。
6.根据权利要求2所述的方法,其特征在于,所述方法还包括:
设置UDF最小运行环境,所述UDF最小运行环境包括所述分布式集群系统的部分计算框架以及UDF运行时runt ime。
7.一种分布式集群系统的调试方法,其特征在于,所述方法应用于分布式集群系统,包括:
接收客户端发送的数据请求,所述数据请求包含待调试计算节点的信息;
根据所述待调试计算节点的信息,获取与所述待调试计算节点对应的用户定义方法UDF代码和数据;
向所述客户端发送所述UDF代码和数据。
8.根据权利要求7所述的方法,其特征在于,所述待调试计算节点的信息包括所述计算节点的标识、位置和路径信息。
9.根据权利要求7或8所述的方法,其特征在于,所述待调试计算节点的信息还包括用户账户信息,在接收到客户端发送的数据请求后,所述方法还包括:
根据所述用户账户信息对所述数据请求进行鉴权处理,以确定所述用户是否具有获取所述数据的权限。
10.根据权利要求7所述的方法,其特征在于,所述获取与所述待调试计算节点对应的用户定义方法UDF代码和数据包括:
获取所述待调试计算节点的UDF代码、所述分布式集群系统为所述计算节点生成的代码、所述计算节点的输入数据、所述计算节点的执行计划。
11.一种分布式集群系统的调试装置,其特征在于,包括:
发送单元,用于向分布式集群系统发送数据请求,所述数据请求包含待调试计算节点的信息;
接收单元,用于接收所述分布式集群系统发送的与所述数据请求对应的待调试计算节点的用户定义方法UDF代码和数据;
调试单元,用于利用预先设置的UDF最小运行环境运行所述UDF代码和数据,以对所述计算节点进行调试。
12.一种分布式集群系统的调试装置,其特征在于,包括:
接收单元,用于接收客户端发送的数据请求,所述数据请求包含待调试计算节点的信息;
获取单元,用于根据所述待调试计算节点的信息,获取与所述待调试计算节点对应的用户定义方法UDF代码和数据;
发送单元,用于向所述客户端发送所述UDF代码和数据。
CN201610829431.8A 2016-09-18 2016-09-18 一种分布式集群系统的调试方法和装置 Pending CN107844410A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610829431.8A CN107844410A (zh) 2016-09-18 2016-09-18 一种分布式集群系统的调试方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610829431.8A CN107844410A (zh) 2016-09-18 2016-09-18 一种分布式集群系统的调试方法和装置

Publications (1)

Publication Number Publication Date
CN107844410A true CN107844410A (zh) 2018-03-27

Family

ID=61656599

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610829431.8A Pending CN107844410A (zh) 2016-09-18 2016-09-18 一种分布式集群系统的调试方法和装置

Country Status (1)

Country Link
CN (1) CN107844410A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110442508A (zh) * 2018-05-03 2019-11-12 阿里巴巴集团控股有限公司 测试任务处理方法、装置、设备和介质
CN110795344A (zh) * 2019-10-14 2020-02-14 深圳晶泰科技有限公司 面向分布式高性能计算集群调试系统
CN111930472A (zh) * 2020-08-19 2020-11-13 曙光信息产业(北京)有限公司 一种代码调试方法、装置、电子设备及存储介质
WO2021003870A1 (zh) * 2019-10-14 2021-01-14 深圳晶泰科技有限公司 面向分布式高性能计算集群调试系统
US20210089419A1 (en) * 2019-09-25 2021-03-25 Alibaba Group Holding Limited Debugging unit and processor

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1703870A (zh) * 2002-10-10 2005-11-30 思科技术公司 用于在通信系统中进行分布式调试的方法与系统
CN101387953A (zh) * 2007-09-14 2009-03-18 环达电脑(上海)有限公司 协同软件开发系统及方法
EP2631804A1 (en) * 2012-02-27 2013-08-28 Yokogawa Electric Corporation A method and apparatus for debugging a program of a business process
CN105933163A (zh) * 2016-06-24 2016-09-07 微梦创科网络科技(中国)有限公司 一种实时分布式调试跟踪方法及系统
CN106254145A (zh) * 2016-09-06 2016-12-21 腾讯科技(深圳)有限公司 网络请求跟踪处理方法和装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1703870A (zh) * 2002-10-10 2005-11-30 思科技术公司 用于在通信系统中进行分布式调试的方法与系统
CN101387953A (zh) * 2007-09-14 2009-03-18 环达电脑(上海)有限公司 协同软件开发系统及方法
EP2631804A1 (en) * 2012-02-27 2013-08-28 Yokogawa Electric Corporation A method and apparatus for debugging a program of a business process
CN105933163A (zh) * 2016-06-24 2016-09-07 微梦创科网络科技(中国)有限公司 一种实时分布式调试跟踪方法及系统
CN106254145A (zh) * 2016-09-06 2016-12-21 腾讯科技(深圳)有限公司 网络请求跟踪处理方法和装置

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110442508A (zh) * 2018-05-03 2019-11-12 阿里巴巴集团控股有限公司 测试任务处理方法、装置、设备和介质
US20210089419A1 (en) * 2019-09-25 2021-03-25 Alibaba Group Holding Limited Debugging unit and processor
US11755441B2 (en) * 2019-09-25 2023-09-12 Alibaba Group Holding Limited Debugging unit and processor
CN110795344A (zh) * 2019-10-14 2020-02-14 深圳晶泰科技有限公司 面向分布式高性能计算集群调试系统
WO2021003870A1 (zh) * 2019-10-14 2021-01-14 深圳晶泰科技有限公司 面向分布式高性能计算集群调试系统
CN110795344B (zh) * 2019-10-14 2024-01-05 深圳晶泰科技有限公司 面向分布式高性能计算集群调试系统
CN111930472A (zh) * 2020-08-19 2020-11-13 曙光信息产业(北京)有限公司 一种代码调试方法、装置、电子设备及存储介质
CN111930472B (zh) * 2020-08-19 2023-03-28 曙光信息产业(北京)有限公司 一种代码调试方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN107844410A (zh) 一种分布式集群系统的调试方法和装置
US8799864B2 (en) Providing SystemVerilog testing harness for a standardized testing language
CN104281520B (zh) 跟踪和调试的方法、装置及系统
CN111078539B (zh) 一种测试方法、装置、系统、计算机可读存储介质
CN111209203B (zh) 一种基于源代码的模型验证方法
Iyenghar et al. Towards model-based test automation for embedded systems using UML and UTP
CN113238929B (zh) 基于Mock数据的代码测试方法、装置、电子设备及存储介质
CN113722020A (zh) 接口调用方法、装置和计算机可读存储介质
Apvrille et al. Model-driven engineering for designing safe and secure embedded systems
Pemberton et al. Firemarshal: Making hw/sw co-design reproducible and reliable
US20130125093A1 (en) Generating object-oriented programming language code from a multi-domain dynamic simulation model
CN103294482B (zh) 用于PWscf并行计算系统的Web服务封装方法以及系统
Weiss et al. Philip on the hil: Automated multi-platform os testing with external reference devices
US10310962B2 (en) Infrastructure rule generation
CN113238739A (zh) 一种插件开发和数据获取方法、装置、电子设备及介质
CN109508193B (zh) 一种应用部署运行方法、装置、终端设备和介质
KR20110037140A (ko) 임베디드 소프트웨어 가상 개발 환경을 제공하는 시스템
Rakamarić STORM: static unit checking of concurrent programs
US9612870B2 (en) Inversion of control for executable extensions in a run-time environment
Yu et al. A virtual deployment testing environment for enterprise software systems
Ng et al. Session types: towards safe and fast reconfigurable programming
CN112579448A (zh) 混合应用的调试方法与系统
CN105068796A (zh) 补丁程序集的推送方法和补丁程序集的推送系统
US20240004784A1 (en) Handling mock objects that are written in the form of multiple assignment instructions
Sastry et al. TESTING DISTRIBUTED EMBEDDED SYSTEMS THROUGH INSTRUCTION SET SIMULATORS

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: 20180327

RJ01 Rejection of invention patent application after publication