首页> 中国专利> 查找分布式ETL中慢节点的方法和装置

查找分布式ETL中慢节点的方法和装置

摘要

本发明提出一种查找分布式ETL中慢节点的方法和装置,该查找分布式ETL中慢节点的方法包括:获取设定数据量,其中,当存在分布式ETL中节点的历史执行信息时,根据所述历史执行信息和本次最先执行完毕的节点的执行信息,确定所述设定数据量,或者,如果不存在所述历史执行信息,根据本次最先执行完毕的节点的执行信息,确定所述设定数据量;获取待检测节点的当前已执行的数据量;在所述当前已执行的数据量小于所述设定数据量时,确定所述待检测节点是慢节点。该方法能够在分布式ETL中查找出其中的慢节点,以便后续处理慢节点。

著录项

  • 公开/公告号CN105824934A

    专利类型发明专利

  • 公开/公告日2016-08-03

    原文格式PDF

  • 申请/专利权人 杭州数梦工场科技有限公司;

    申请/专利号CN201610157319.4

  • 发明设计人 郑振峰;

    申请日2016-03-18

  • 分类号

  • 代理机构北京清亦华知识产权代理事务所(普通合伙);

  • 代理人张大威

  • 地址 310024 浙江省杭州市转塘科技经济区块16号4幢326室

  • 入库时间 2023-06-19 00:11:02

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-06-11

    授权

    授权

  • 2016-08-31

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20160318

    实质审查的生效

  • 2016-08-03

    公开

    公开

说明书

技术领域

本发明涉及计算机技术领域,尤其涉及一种查找分布式ETL中慢节点的方 法和装置。

背景技术

抽取转换加载(Extract-Transform-Load,ETL)是一种数据仓库技术, 用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load) 至目的端的过程。随着数据量的不断增加,传统的单机ETL工具已经不能满足 需求,集群化的ETL工具不断形成。集群化极大的提升了数据转换的性能,但 是由于分布式的业务部署和运行环境实时发生变化,单个节点的任务执行缓慢 会造成整个ETL过程不能迅速结束,这个问题就是分布式架构中常遇到的慢节 点问题。

为此,查找集群中的慢节点是整个分布式ETL解决方案中不可避免的一个 问题。相关技术中,一种方案是忽略慢节点,另一种是对每个节点均匀分配资 源。但是,这些技术都没有正面对待慢节点,没有完成对慢节点的查找和后续 处理。

发明内容

本发明旨在至少在一定程度上解决相关技术中的技术问题之一。

为此,本发明的一个目的在于提出一种查找分布式ETL中慢节点的方法, 该方法可以在分布式ETL中查找出其中的慢节点,以便后续处理慢节点。

本发明的另一个目的在于提出一种查找分布式ETL中慢节点的装置。

为达到上述目的,本发明第一方面实施例提出的查找分布式ETL中慢节点 的方法,包括:获取设定数据量,其中,当存在分布式ETL中节点的历史执 行信息时,根据所述历史执行信息和本次最先执行完毕的节点的执行信息, 确定所述设定数据量,或者,如果不存在所述历史执行信息,根据本次最 先执行完毕的节点的执行信息,确定所述设定数据量;获取待检测节点的 当前已执行的数据量;在所述当前已执行的数据量小于所述设定数据量时, 确定所述待检测节点是慢节点。

本发明第一方面实施例提出的查找分布式ETL中慢节点的方法,通过获 取设定数据量和待检测节点的当前已执行数据量,通过比较设定数据量和 当前已执行数据量,可以在分布式ETL中查找出其中的慢节点,以便后续处 理慢节点。

为达到上述目的,本发明第二方面实施例提出的查找分布式ETL中慢节点 的装置,包括:第一获取模块,用于获取设定数据量,其中,当存在分布式 ETL中节点的历史执行信息时,根据所述历史执行信息和本次最先执行完 毕的节点的执行信息,确定所述设定数据量,或者,如果不存在所述历史 执行信息,根据本次最先执行完毕的节点的执行信息,确定所述设定数据 量;第二获取模块,用于获取待检测节点的当前已执行的数据量;确定模块, 用于在所述当前已执行的数据量小于所述设定数据量时,确定所述待检测 节点是慢节点。

本发明第二方面实施例提出的查找分布式ETL中慢节点的装置,通过获 取设定数据量和待检测节点的当前已执行数据量,通过比较设定数据量和 当前已执行数据量,可以在分布式ETL中查找出其中的慢节点,以便后续处 理慢节点。

本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描 述中变得明显,或通过本发明的实践了解到。

附图说明

本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中 将变得明显和容易理解,其中:

图1是本发明一实施例提出的查找分布式ETL中慢节点的方法的流程 示意图;

图2是本发明另一实施例提出的查找分布式ETL中慢节点的方法的流 程示意图;

图3是图2对应的系统结构示意图;

图4是本发明另一实施例提出的查找分布式ETL中慢节点的装置的结构示 意图;

图5是本发明另一实施例提出的查找分布式ETL中慢节点的装置的结构示 意图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自 始至终相同或类似的标号表示相同或类似的模块或具有相同或类似功能的模 块。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能 理解为对本发明的限制。相反,本发明的实施例包括落入所附加权利要求书的 精神和内涵范围内的所有变化、修改和等同物。

图1是本发明一实施例提出的查找分布式ETL中慢节点的方法的流程 示意图。

参见图1,该方法包括:

S11:获取设定数据量,其中,当存在分布式ETL中节点的历史执行信 息时,根据所述历史执行信息和本次最先执行完毕的节点的执行信息,确 定所述设定数据量,或者,如果不存在所述历史执行信息,根据本次最先 执行完毕的节点的执行信息,确定所述设定数据量。

ETL可以包括:一次完全ETL、增量ETL和实时ETL,一次完全ETL是 指仅执行一次ETL过程;增量ETL是指需要执行多次ETL过程,并且每次 ETL过程是非实时的,例如,每天执行一次ETL过程;实时ETL是指需要 执行多次ETL过程,并且每次ETL过程是实时的,例如,源端实时产生数 据时,实时执行ETL过程,将数据实时抽取、转换、加载到目的端。

因此,根据上述的描述可知,一次完全ETL、第一次增量ETL和第一 次实时ETL不存在历史执行信息,而第二次增量ETL及其后续次数的增量 ETL,以及第二次实时ETL及其后续次数的实时ETL存在历史执行信息。

其中,在存在历史执行信息时,可以根据历史执行信息获取历史平均 速率,根据历史平均速率、本次最先执行完毕的节点的执行时间和执行数 据量计算设定数据量。或者,在不存在历史执行信息时,可以根据本次最 先执行完毕的节点的执行数据量计算设定数据量。具体内容可以参见后续 实施例。

S12:获取待检测节点的当前已执行的数据量。

在本次ETL过程中,当监测到一个节点最先执行完毕时,可以检测其 他节点是否是慢节点。此时,可以将其他的每个节点作为待检测节点,以 检测其是否是慢节点。

在本地ETL过程开始时,可以监测每个节点的已执行的数据量,从而 可以在检测时,获取待检测节点的当前已执行数据量。

S13:在所述当前已执行的数据量小于所述设定数据量时,确定所述待 检测节点是慢节点。

例如,当前已执行的数据量是Nx,设定数据量是NT,如果Nx小于NT, 则确定待检测节点是慢节点。

一些实施例中,在检测出慢节点后,该方法还可以包括:

将慢节点上执行的任务迁移到非慢节点上。

例如,经过检测,第一节点是慢节点,第二节点不是慢节点,则可以 将第一节点上的任务迁移到第二节点上。进一步的,第二节点可以是迁移 前空闲的节点,从而可以保证任务被更快的处理。

本实施例中,通过获取设定数据量和待检测节点的当前已执行数据量, 通过比较设定数据量和当前已执行数据量,可以在分布式ETL中查找出其中 的慢节点,以便后续处理慢节点。

图2是本发明另一实施例提出的查找分布式ETL中慢节点的方法的流 程示意图。

参见图3,为本实施例对应的系统示意图,通过ETL系统将数据从Mysql 加载到Oralce。ETL系统包括节点_1、节点_2、节点_3、…、节点_10等。

本实施例以增量ETL为例。例如,用户提交增量ETL任务,每天执行 一次,每次的数据量大约有1亿条。ETL集群调度系统将任务分发到10个 节点上,当前有超过10个空闲ETL节点部署在不同的虚拟机上,每个节点 的资源都相同。

参见图2,本实施例的流程包括:

S201:第一次ETL开始后,各节点分别与源数据库和目的数据库建立 连接,准备抽取和加载。

S202:在不存在历史执行信息时,获取本次最先执行完毕的节点的执 行数据量,并将所述执行数据量与预设系数的乘积,确定为设定数据量。

S203:获取待检测节点的当前已执行的数据量,在所述当前已执行的 数据量小于所述设定数据量时,确定所述待检测节点是慢节点。

例如,在第一次增量ETL过程中,没有历史执行信息,则可以获取第 一次增量ETL过程中最先执行完毕的节点的执行数据量,并依据该执行数 据量判断其余节点是否是慢节点。

假定ETL集群调度系统的数据分配较均匀,选取其中的节点_1、节点 _2、节点_3、节点_10节点为例。

假定第一次增量ETL过程中,节点_1最先执行完毕,假设第一次增量 ETL过程中,节点_1的执行数据量是N1,则在节点_1执行完毕时,可以统 计节点_2、节点_3、节点_10的当前已执行的数据量,假设分别为C2、C3、 C10。对于节点_2,如果C2<0.5*N1,则确定节点_2是慢节点,之后,ETL 集群调度系统可以调掉节点_2并重新提交任务到一个新的节点。其中,0.5 是设置值,可以调整。

S204:在存在历史执行信息时,获取历史执行信息,并根据所述历史 执行信息获取历史平均速率。

其中,历史平均速率是指所有已完成的ETL过程对应的平均速率的平 均值,例如,对于第二次增量ETL过程,已完成的ETL过程包括第一次增 量ETL过程,则历史平均速率是指第一次增量ETL过程对应的平均速率。 对于第三次增量ETL过程,已完成的ETL过程包括:第一次增量ETL过程 和第二次增量ETL过程,则历史平均速率是指第一次增量ETL过程对应的 平均速率与第二次增量ETL过程对应的平均速率的均值。

每个ETL过程对应的平均速率是指相应的ETL过程中每个节点的速率 的平均值,例如,对于第一次增量ETL过程,执行任务的节点包括10个节 点,则将这10个节点的速率的均值作为第一次增量ETL过程对应的平均速 率。每个节点的速率是指每个ETL过程中,执行数据量与执行时间的比值。

在保存历史执行信息时,可以保存历史平均速率,从而可以从历史执 行信息中直接获取历史平均速率。或者,也可以保存每个ETL过程对应的 平均速率,从而可以从历史执行信息中获取每个ETL过程对应的平均速率, 再进行均值运算,得到历史平均速率。或者,也可以保存每个ETL过程中 每个节点的速率,从而可以从历史执行信息中获取每个ETL过程中每个节 点的速率,再根据该速率计算每个ETL过程对应的平均速率,再根据每个 ETL过程对应的平均速率计算历史平均速率。或者,也可以保存每个ETL 过程中每个节点的执行数据量和执行时间,从而可以从历史执行信息中获 取执行数据量和执行时间,再根据执行数据量和执行时间计算每个节点的 速率,再根据每个ETL过程中每个节点的速率计算每个ETL过程对应的平 均速度,再根据每个ETL过程对应的平均速率计算历史平均速率。

S205:获取本次最先执行完毕的节点的执行时间和执行数据量。

通过对ETL过程的监控,可以确定每次ETL过程中最先执行完毕的节 点,另外,还可以获取最先执行完毕的节点的执行时间和执行数据量。

例如,在第二次增量ETL过程中,假设节点_1是最先执行完毕的节点, 节点_1的执行时间和执行数据量可以分别用T1和N1表示。

S206:如果T1>w2*(N1/S0),则确定本次执行过程中所有节点都是慢 节点,向用户发送提醒消息。

其中,T1和N1是本次最先执行完毕的节点的执行时间和执行数据量, S0是历史平均速率,w2是预设系数,例如为1.25。

例如,对应第二次增量ETL过程,T1和N1是第二次增量ETL过程中 最先执行完毕的节点的执行时间和执行数据量,S0是第一次增量ETL过程 中所有节点的速率的平均值。

S207:如果所述执行时间满足预设条件,则根据所述历史平均速率、 所述执行时间和所述执行数据量,计算设定速率。

其中,在计算设定速率时是依据历史平均速率和当前的执行时间,没 有仅依据历史平均速率是因为历史平均速率可能是不可靠的。

具体的,计算设定速率包括:

如果根据所述执行时间满足的条件确定所述历史平均速率和所述执行 时间是可靠的,则设置第一加权值和第二加权值相同或近似相同,以使得 所述历史平均速率和所述执行时间对设定速率的计算产生相同或近似相同 的影响;或者,

如果根据所述执行时间满足的条件确定所述历史平均速率是不可靠 的,则设置第一加权值小于第二加权值,以使得所述历史平均速率对设定 速率的计算产生的影响小于所述执行时间对设定速率的计算产生的影响;

其中,所述第一加权值是与历史平均速率对应的加权值,所述第二加 权值是与所述执行时间对应的加权值。

上述内容用计算公式表示如下:

如果w1*(N1/S0)<=T1<=w2*(N1/S0),则S1=N1/(a1*(N1/S0)+a2*T1);

如果T1<w1*(N1/S0),则S1=N1/(b1*(N1/S0)+b2*T1)

其中,T1是本次最先执行完毕的节点的执行时间,N1是本次最先执行 完毕的节点的执行数据量,S0是历史平均速率,S1是设定速率,w1、w2、 a1、a2、b1、b2分别是预设的系数。

其中,上述的w1*(N1/S0)<=T1<=w2*(N1/S0)表明历史平均速率和本 次最先执行完毕的节点的执行时间都是可靠的,此时的第一加权值和第二 加权值(a1和a2)是相同或近似相同。

上述的T1<w1*(N1/S0)表明历史平均速率不可靠,此时的第一加权值 (b1)要小于第二加权值(b2)。例如,w1=0.75,w2=1.25,a1=a2=0.5, b1=0.1,b2=0.9。

S208:将所述设定速率、所述执行时间的预设系数的乘积,确定为设 定数据量。

例如,设定数据量NT=S1*T1*0.75。

S209:在所述当前已执行的数据量小于所述设定数据量时,确定所述 待检测节点是慢节点。

假定第二次增量ETL过程中,节点_1最先执行完毕,则在节点_1执行 完毕时,可以统计节点_2、节点_3、节点_10的当前已执行的数据量,假 设分别为C2、C3、C10。对于节点_2,如果C2<NT(S1*T1*0.75),则确 定节点_2是慢节点,之后,ETL集群调度系统可以调掉节点_2并重新提 交任务到一个新的节点。其中,0.75是设置值,可以调整。

之后,在后续的ETL过程中可以参照上述的S204-S209执行,确定出 相应ETL过程中的慢节点。

本实施例中,通过获取设定数据量和待检测节点的当前已执行数据量, 通过比较设定数据量和当前已执行数据量,可以在分布式ETL中查找出其中 的慢节点。进一步的,通过将任务从慢节点上迁移,可以避免慢节点对整体任 务的影响,提高分布式ETL的性能和可用性。进一步的,通过计算历史平均速 率,并根据当前情况确定设定速率,可以提高设定数据量的准确性,从而提高 慢节点确定的准确性。

图4是本发明另一实施例提出的查找分布式ETL中慢节点的装置的结构示 意图。参见图4,该装置40包括:第一获取模块41、第二获取模块42和确定 模块43。

第一获取模块41,用于获取设定数据量,其中,当存在分布式ETL中 节点的历史执行信息时,根据所述历史执行信息和本次最先执行完毕的节 点的执行信息,确定所述设定数据量,或者,如果不存在所述历史执行信 息,根据本次最先执行完毕的节点的执行信息,确定所述设定数据量。

ETL可以包括:一次完全ETL、增量ETL和实时ETL,一次完全ETL是 指仅执行一次ETL过程;增量ETL是指需要执行多次ETL过程,并且每次 ETL过程是非实时的,例如,每天执行一次ETL过程;实时ETL是指需要 执行多次ETL过程,并且每次ETL过程是实时的,例如,源端实时产生数 据时,实时执行ETL过程,将数据实时抽取、转换、加载到目的端。

因此,根据上述的描述可知,一次完全ETL、第一次增量ETL和第一 次实时ETL不存在历史执行信息,而第二次增量ETL及其后续次数的增量 ETL,以及第二次实时ETL及其后续次数的实时ETL存在历史执行信息。

其中,在存在历史执行信息时,可以根据历史执行信息获取历史平均 速率,根据历史平均速率、本次最先执行完毕的节点的执行时间和执行数 据量计算设定数据量。或者,在不存在历史执行信息时,可以根据本次最 先执行完毕的节点的执行数据量计算设定数据量。

第二获取模块42,用于获取待检测节点的当前已执行的数据量。

在本次ETL过程中,当监测到一个节点最先执行完毕时,可以检测其 他节点是否是慢节点。此时,可以将其他的每个节点作为待检测节点,以 检测其是否是慢节点。

在本地ETL过程开始时,可以监测每个节点的已执行的数据量,从而 可以在检测时,获取待检测节点的当前已执行数据量。

确定模块43,用于在所述当前已执行的数据量小于所述设定数据量时, 确定所述待检测节点是慢节点。

例如,当前已执行的数据量是Nx,设定数据量是NT,如果Nx小于NT, 则确定待检测节点是慢节点。

一些实施例中,参见图5,当存在所述历史执行信息时,所述装置还 包括:

第一计算模块44,用于获取历史执行信息,并根据所述历史执行信息 获取历史平均速率;获取本次最先执行完毕的节点的执行时间和执行数据 量;如果所述执行时间满足预设条件,则根据所述历史平均速率、所述执 行时间和所述执行数据量,计算设定速率;将所述设定速率、所述执行时 间的预设系数的乘积,确定为设定数据量。

一些实施例中,第一计算模块用于根据所述历史平均速率、所述执行 时间和所述执行数据量,计算设定速率,包括:

如果根据所述执行时间满足的条件确定所述历史平均速率和所述执行 时间是可靠的,则设置第一加权值和第二加权值相同或近似相同,以使得 所述历史平均速率和所述执行时间对设定速率的计算产生相同或近似相同 的影响;或者,

如果根据所述执行时间满足的条件确定所述历史平均速率是不可靠 的,则设置第一加权值小于第二加权值,以使得所述历史平均速率对设定 速率的计算产生的影响小于所述执行时间对设定速率的计算产生的影响;

其中,所述第一加权值是与历史平均速率对应的加权值,所述第二加 权值是与所述执行时间对应的加权值。

相应的,计算公式包括:

如果w1*(N1/S0)<=T1<=w2*(N1/S0),则S1=N1/(a1*(N1/S0)+a2*T1);

如果T1<w1*(N1/S0),则S1=N1/(b1*(N1/S0)+b2*T1)

其中,T1是本次最先执行完毕的节点的执行时间,N1是本次最先执行 完毕的节点的执行数据量,S0是历史平均速率,S1是设定速率,w1、w2、 a1、a2、b1、b2分别是预设的系数。

一些实施例中,参见图5,该装置还包括:

提醒模块45,用于在T1>w2*(N1/S0)时,确定本次执行过程中所有节 点都是慢节点,向用户发送提醒消息。

可选的,w1=0.75,w2=1.25,a1=a2=0.5,b1=0.1,b2=0.9。

一些实施例中,参见图5,当不存在所述历史执行信息时,所述装置 还包括:

第二计算模块46,用于获取本次最先执行完毕的节点的执行数据量; 以及,将所述执行数据量与预设系数的乘积,确定为所述设定数据量。

一些实施例中,参见图5,该装置还包括:

迁移模块47,用于将慢节点上执行的任务迁移到非慢节点上。

由于该装置与方法对应,该装置中各模块的具体功能可以参见方法实施例 中的相关描述,在此不再详细说明。

本实施例中,通过获取设定数据量和待检测节点的当前已执行数据量, 通过比较设定数据量和当前已执行数据量,可以在分布式ETL中查找出其中 的慢节点,以便后续处理慢节点。

需要说明的是,在本发明的描述中,术语“第一”、“第二”等仅用于描 述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除 非另有说明,“多个”的含义是指至少两个。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表 示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代 码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现, 其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式 或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人 员所理解。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。 在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执 行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方 式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有 用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合 逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA) 等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或 部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种 计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组 合。

此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中, 也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块 中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的 形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品 销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、 “具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体 特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说 明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且, 描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例 中以合适的方式结合。

尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例 是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的 范围内可以对上述实施例进行变化、修改、替换和变型。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号