一种纠错重启以及自动判断启动的etl调度系统及方法

文档序号:6385915阅读:260来源:国知局
专利名称:一种纠错重启以及自动判断启动的etl调度系统及方法
—种纠错重启以及自动判断启动的ETL调度系统及方法技术领域
本发明属于数据仓库技术领域,特别是一种纠错重启以及自动判断启动的ETL调 度系统及方法。
背景技术
随着数据仓库技术的普及和深化,构建数据仓库的核心技术ETL工具也逐步地完 善且多样化,ETL在数据仓库构建中主要承担着数据抽取、加载、转换的角色,并负责系统程 序调度控制和资源分配,直接关系着数据仓库构建实施的成败。
目前信息价值日益体现,尤其是具有大量数据记录的行业。成功的数据仓库对企 业的发展十分重要,银行、移动电信、保险、电子商务运营商的大数据特性决定了这些行业 极为注重数据仓库的构建及技术实施策略。目前的实施策略大体可以概括如下1、根据任务依赖关系设定调度顺序,依次完成系统调度任务;在调度过程中有管理人 员人工监控,出现异常进行人工操作重启任务。
2、在依赖关系设定调度顺序的基础上,根据各独立任务的关系设定独立线程定时 定点调度,并进行任务监控、人工排错及重启调度。
以上情况,都存在完全依赖人工处理的问题,而且还存在由于异常发生不能被及 时处理而使系统继续运行产生错误结果的情况,并导致系统资源的浪费。
专利“一种ETL调度的实现方法及装置”(专利申请号200910203276. 9),在执行 ETL调度包含的若干任务流程时,针对任意一个任务流程,根据预设的配置文件确定任务流 程内包含的各子任务流程的触发方式、执行顺序和相互之间的依赖关系,按照设定的触发 方式触发子任务流程,并按设定的顺序执行已触发的子任务流程,并根据子任务流程之间 的依赖关系,执行依赖已完成子任务并已触发的后续子任务流程。专利“一种实现ETL调度 的方法及系统”(专利申请号200910137527. 8),根据预设的任务配置文件确定当前需要执 行的任务,所述任务配置文件包括需要执行的任务及各任务之间的依赖关系,并通过获取 应用服务器的资源信息,选定合适的应用服务器来执行任务。
这2种专利所提供的方法都使各任务之间的业务逻辑清晰、业务功能明确,但对 于任务或子任务在执行过程中异常终止后如何处理,仍是采用常用的人工重新启动的方 法,这没有良好的解决ETL的运行效率和运行损耗的问题。发明内容
本发明的目的在于提供一种能够解决ETL任务调度中由于前置子任务出错时而 后续子任务依然执行的问题,提高任务执行效率,有利于减少人工干预,减少运行损耗的纠 错重启以及自动判断启动的ETL调度系统及方法。
实现本发明目的的技术解决方案为一种纠错重启以及自动判断启动的ETL调度系统,包括业务系统数据库服务器、数据 仓库服务器、ETL调度监控服务器、ETL调度平台服务器;数据仓库服务器包括任务配置存储器、数据仓库数据存储器、ETL任务处理器、执行记录存储器,ETL任务处理器与数据仓库 数据存储器和执行记录存储器相连;ETL调度监控服务器包括任务执行监控处理器、任务 异常信息存储器、异常信息发送器,任务异常信息存储器与任务执行监控处理器和异常信 息发送器相连;ETL调度平台服务器包括启动判断处理器、任务启动处理器,启动判断处理 器与任务启动处理器相连;其中,数据仓库服务器的ETL任务处理器与业务系统数据库服 务器和ETL调度平台服务器的任务启动处理器相连,ETL调度平台服务器的启动判断处理 器分别与数据仓库服务器的任务配置存储器、执行记录存储器、以及ETL调度监控服务器 的异常信息发送器相连,数据仓库服务器的执行记录存储器与ETL调度监控服务器的任务 执行监控处理器相连。
一种纠错重启以及自动判断启动的ETL调度方法,包括以下步骤步骤一安排任务、子任务的执行顺序,配置子任务之间的关联关系,把任务执行的先 后顺序,任务包含的子任务,子任务执行的先后顺序,子任务之间的关系保存在数据仓库服 务器的任务配置存储器中,且每个子任务对应数据仓库中的一张表,根据业务需要来安排 任务在执行时间上的先后顺序,安排任务所包含的子任务的执行顺序时,子任务采用以下 原则进行排序(1)当一个子任务与其它子任务之间具有关联关系时,必须在一个或者若干个前置子 任务成功执行之后才能执行该子任务;(2)在此基础上,按照子任务的重要程度进行排序,对业务影响较大的子任务优先执(3)最后根据子任务执行的时间长度进行排序,执行时间较短的子任务优先执行;步骤二 由启动判断处理器从任务配置存储器读取待执行子任务及其前置子任务信 息;由启动判断处理器从执行记录存储器中读取待执行子任务及其前置子任务最近一次成 功执行的结束时间;根据这些信息,通过启动判断处理器的计算,得出待执行子任务的执行 标志,待执行子任务执行标志生成流程如下(1)通过任务配置信息抽取单元,从任务配置存储器获取任务配置信息,通过配置信息 处理单元获取当前待执行的子任务及其前置子任务的信息,将这些信息发送到任务执行标 志计算单元;(2)任务执行信息抽取单元通过配置信息处理单元获取当前待执行的子任务及其前置 子任务的信息,再从执行记录存储器获取当前待执行的子任务及其前置子任务最近一次成 功执行的结束时间;若最近一次成功执行的结束时间不存在,则表明当前子任务是第一次执行,直接得出 “可执行”标志;(3)任务执行标志计算单元计算出待执行子任务所对应的所有前置子任务中最近一次 成功执行的结束时间中的最早值,将这个最早值与待执行子任务的最后一次成功执行结束 时间进行对比,对比方法如下这个最早值若晚于待执行子任务的最后一次成功执行结束时间,则表明待执行子任务 可以执行,返回“可执行”标志;这个最早值若早于待执行子任务的最后一次成功执行结束时间,则表明待执行子任务 的前置子任务中存在着执行异常的情况,返回“不可执行”标志;步骤三将启动判断处理器中任务标志发送单元的执行标志结果发送到任务启动处理 器;任务启动处理器分以下两种情况若任务启动处理器获取“可执行”标志后,将启动指令发送至数据仓库服务器的ETL任 务处理器中,继续执行步骤四;若任务启动处理器获取“不可执行”标志后,不进行动作,跳至步骤二 ;步骤四ETL任务处理器获取启动指令开始执行相应的子任务;gETL任务处理器执行 相应的子任务未发生异常,继续执行步骤五;若ETL任务处理器执行相应的子任务发生异 常而被终止,直接跳到步骤八;步骤五执行记录存储器在子任务开始执行时,记录该子任务的名称,开始时间、把子 任务设置为“fail ”状态,表示此任务还未成功完成,执行记录存储器在子任务成功执行结 束时,记录子任务结束时间,以及更新数据量等信息,把此任务设置为“success”状态,表示 此任务还成功完成;步骤六任务执行监控处理器读取执行记录存储器中的子任务执行情况信息,以便于 系统管理员监控;步骤七如果任务配置存储器中所有任务还未全部执行,则跳至步骤二 ;如果任务配 置存储器中所有任务都已执行,则跳至步骤十三;步骤八执行记录存储器记录该子任务的状态信息,包括开始执行时间、异常终止时 间、运行状态等;步骤九任务执行监控处理器从执行记录存储器中获取任务执行情况信息,并把该异 常子任务的信息放置到任务异常信息存储器中保存,同时对这个异常子任务信息的保存次 数增加一次;步骤十二由于前置任务发生异常,将不会执行与其具有关联关系的后续子任务,跳至 步骤七;步骤十三异常信息发送器依照执行的先后顺序从任务异常信息存储器中读取发生异 常问题的子任务信息,并把它发送给启动判断处理器;步骤十四启动判断处理器从任务配置存储器中读取这个异常子任务的前置子任务, 如果这个异常子任务不存在前置子任务,那么发送“可执行”指令给任务启动处理器;如果 这个异常子任务存在前置子任务,则需要从执行记录存储器读取这个前置子任务的执行状 态,如果判断这个前置子任务的执行状态是成功的,那么启动判断处理器发送“可执行”指 令给任务启动处理器;否则,启动判断处理器发送“不可执行”指令给任务启动处理器;步骤十五任务启动处理器接收到“可执行”执行标志结果,将启动指令发送至数据仓 库服务器的ETL任务处理器中;步骤十六ETL任务处理器开始重新执行相应的异常子任务;步骤十七执行记录存储器在异常子任务开始执行时,记录此异常子任务的名称,开始 时间、把此任务设置为“fail”状态,表示此子任务还未成功完成;执行记录存储器在此子 任务成功执行结束时,记录此子任务结束时间、把此任务设置为“success”状态,表示此此 任务还成功完成,以及更新数据量等信息;如果这个异常子任务在这次执行过程中还是发 生了异常,则把这个异常子任务信息通过任务执行监控处理器仍然保存到任务异常信息存 储器中,同时对这个异常子任务信息的保存次数加I ;步骤十八这个异常子任务成功执行后,启动判断处理器从任务配置存储器中读取与 这个子任务有关联关系的后续子任务,由于这个子任务已经被成功执行,那么计算后续子 任务得到“可执行”的执行标志结果,把“可执行”的执行标志结果传递给任务启动处理器, 进而通过ETL任务处理器执行这些后续子任务;如果这些后续子任务在执行过程中发生异 常,则把异常子任务信息通过任务执行监控处理器仍然保存到任务异常信息存储器中,同 时对此异常子任务信息的保存次数增加I ;步骤十九当这个异常子任务所关联的所有后续任务都执行后,启动判断处理器接收 异常信息发送器发送的异常子任务,开始处理新的异常子任务;步骤二十当所有的异常子任务都处理后,异常信息发送器又开始把仍存在的子任务 信息发送给启动判断处理器,开始新一轮处理过程;步骤二十一如果某个异常子任务经过3轮处理后还是发生异常,那么对这个异常子 任务不再执行,把这个异常子任务的信息发送给系统管理员来进行紧急处理。
本发明与现有技术相比,其显著优点(I)本发明从将数据仓库所有ETL任务分为若干主题任务,每个主题任务包含若干子 任务,在任务执行发生异常后,只需要对对应的异常子任务进行处理,错误排查方便,减少 重新调度任务时间,提高了调度效率。
(2)本发明采用子任务关联关系及子任务成功执行完成时间自动判断是否执行后 续关联子任务,可以避免由于前置子任务出错时而后续子任务依然执行,带来的系统消耗 及产生错误的结果问题。
(3)本发明对记录的异常子任务,以多次自动重启的方式提高任务执行的成功率, 减少人工干预,降低维护成本。
(4)本发明在任务执行顺序的安排上,优先执行重要程度高,执行时间短的子任 务,保证了整个ETL调度过程效率高、故障低。
(5)每个任务对应若干个子任务,每个子任务对应数据仓库中的一张表,子任务与 表一对一的关系可以避免需要处理某个表的数据时对其他的表的数据进行重复处理,节省 了系统资源和时间的消耗。
下面结合附图对本发明作进一步详细描述。


图1为本发明纠错重启以及自动判断启动的ETL调度系统的系统结构示意图。
图2为本发明的子任务关系图。
图3为本发明的子任务成功执行的过程示意图。
图4为本发明的子任务发生异常时的处理过程示意图。
图5为本发明的子任务执行异常时的关联关系子任务结果示意图。
图6为本发明的纠错重启的处理过程示意图。
图7为本发明的启动判断处理器的结构示意图。
图8为本发明的实施例的ETL任务流程图。
具体实施方式
如图1所述本发明一种纠错重启以及自动判断启动的ETL调度系统,包括业务系统数据库服务 器、数据仓库服务器、ETL调度监控服务器、ETL调度平台服务器;数据仓库服务器包括任 务配置存储器、数据仓库数据存储器、ETL任务处理器、执行记录存储器,ETL任务处理器与 数据仓库数据存储器和执行记录存储器相连;ETL调度监控服务器包括任务执行监控处理 器、任务异常信息存储器、异常信息发送器,任务异常信息存储器与任务执行监控处理器和 异常信息发送器相连;ETL调度平台服务器包括启动判断处理器、任务启动处理器,启动判 断处理器与任务启动处理器相连;其中,数据仓库服务器的ETL任务处理器与业务系统数 据库服务器和ETL调度平台服务器的任务启动处理器相连,ETL调度平台服务器的启动判 断处理器分别与数据仓库服务器的任务配置存储器、执行记录存储器、以及ETL调度监控 服务器的异常信息发送器相连,数据仓库服务器的执行记录存储器与ETL调度监控服务器 的任务执行监控处理器相连。
如图7所述所述的启动判断处理器包括任务配置信息抽取单元、配置信息处理单元、任务执行信 息抽取单元、任务执行标志计算单元、任务标志发送单元,其中任务配置信息抽取单元与配 置信息处理单元和任务执行信息抽取单元相连,任务执行标志计算单元分别与配置信息处 理单元、任务执行信息抽取单元相连、任务标志发送单元相连。
如图3和4以及如图6所述一种纠错重启以及自动判断启动的ETL调度方法,其特征在于,包括以下步骤步骤一安排任务、子任务的执行顺序,配置子任务之间的关联关系,把任务执行的先 后顺序,任务包含的子任务,子任务执行的先后顺序,子任务之间的关系保存在数据仓库服 务器的任务配置存储器中,根据业务需要来安排任务在执行时间上的先后顺序,安排任务 所包含的子任务的执行顺序时,子任务采用以下原则进行排序(1)当一个子任务与其它子任务之间具有关联关系时,必须在一个或者若干个前置子 任务成功执行之后才能执行该子任务;(2)在此基础上,按照子任务的重要程度进行排序,对业务影响较大的子任务优先执(3)最后根据子任务执行的时间长度进行排序,执行时间较短的子任务优先执行;步骤二 由启动判断处理器从任务配置存储器读取待执行子任务及其前置子任务信 息;由启动判断处理器从执行记录存储器中读取待执行子任务及其前置子任务最近一次成 功执行的结束时间;根据这些信息,通过启动判断处理器的计算,得出待执行子任务的执行 标志,待执行子任务执行标志生成流程如下(1)通过任务配置信息抽取单元,从任务配置存储器获取任务配置信息,通过配置信息 处理单元获取当前待执行的子任务及其前置子任务的信息,将这些信息发送到任务执行标 志计算单元;(2)任务执行信息抽取单元通过配置信息处理单元获取当前待执行的子任务及其前置 子任务的信息,再从执行记录存储器获取当前待执行的子任务及其前置子任务最近一次成 功执行的结束时间;若最近一次成功执行的结束时间不存在,则表明当前子任务是第一次执行,直接得出“可执行”标志;(3)任务执行标志计算单元计算出待执行子任务所对应的所有前置子任务中最近一次 成功执行的结束时间中的最早值,将这个最早值与待执行子任务的最后一次成功执行结束 时间进行对比,对比方法如下这个最早值若晚于待执行子任务的最后一次成功执行结束时间,则表明待执行子任务 可以执行,返回“可执行”标志;这个最早值若早于待执行子任务的最后一次成功执行结束时间,则表明待执行子任务 的前置子任务中存在着执行异常的情况,返回“不可执行”标志;步骤三将启动判断处理器中任务标志发送单元的执行标志结果发送到任务启动处理 器;任务启动处理器分以下两种情况若任务启动处理器获取“可执行”标志后,将启动指令发送至数据仓库服务器的ETL任 务处理器中,继续执行步骤四;若任务启动处理器获取“不可执行”标志后,不进行动作,跳至步骤二 ;步骤四ETL任务处理器获取启动指令开始执行相应的子任务;gETL任务处理器执行 相应的子任务未发生异常,继续执行步骤五;若ETL任务处理器执行相应的子任务发生异 常而被终止,直接跳到步骤八;步骤五执行记录存储器在子任务开始执行时,记录该子任务的名称,开始时间、把子 任务设置为“fail”状态,表示此任务还未成功完成,执行记录存储器在子任务成功执行结 束时,记录子任务结束时间,以及更新数据量等信息,把此任务设置为“success”状态,表示 此任务还成功完成;步骤六任务执行监控处理器读取执行记录存储器中的子任务执行情况信息,以便于 系统管理员监控;步骤七如果任务配置存储器中所有子任务未全部执行,则跳至步骤二 ;如果任务配 置存储器中所有子任务都已执行,则跳至步骤十三;步骤八执行记录存储器记录该子任务的状态信息,包括开始执行时间、异常终止时 间、运行状态等;步骤九任务执行监控处理器从执行记录存储器中获取任务执行情况信息,并把该异 常子任务的信息放置到任务异常信息存储器中保存,同时对这个异常子任务信息的保存次 数增加一次;步骤十二由于前置子任务发生异常,将不会执行与其具有关联关系的后续子任务,跳 至步骤七;步骤十三异常信息发送器依照执行的先后顺序从任务异常信息存储器中读取发生异 常问题的子任务信息,并把它发送给启动判断处理器;步骤十四启动判断处理器从任务配置存储器中读取这个异常子任务的前置子任务, 如果这个异常子任务不存在前置子任务,那么发送“可执行”指令给任务启动处理器;如果 这个异常子任务存在前置子任务,则需要从执行记录存储器读取这个前置子任务的执行状 态,如果判断这个前置子任务的执行状态是成功的,那么启动判断处理器发送“可执行”指 令给任务启动处理器;否则,启动判断处理器发送“不可执行”指令给任务启动处理器; 步骤十五任务启动处理器接收到“可执行”执行标志结果,将启动指令发送至数据仓库服务器的ETL任务处理器中;步骤十六ETL任务处理器开始重新执行相应的异常子任务;步骤十七执行记录存储器在异常子任务开始执行时,记录异常子任务的名称,开始时 间、把此子任务设置为“fail”状态,表示此子任务还未成功完成;执行记录存储器在子任 务成功执行结束时,记录子任务结束时间、把此任务设置为“success”状态,表示此子任务 还成功完成,以及更新数据量等信息;如果这个异常子任务在这次执行过程中还是发生了 异常,则把这个异常子任务信息通过任务执行监控处理器仍然保存到任务异常信息存储器 中,同时对这个异常子任务信息的保存次数加I ;步骤十八这个异常子任务成功执行后,启动判断处理器从任务配置存储器中读取与 这个子任务有关联关系的后续子任务,由于这个子任务已经被成功执行,那么计算后续子 任务得到“可执行”的执行标志结果,把“可执行”传递给任务启动处理器,进而通过ETL任 务处理器执行这些后续子任务;如果这些后续子任务在执行过程中发生异常,则把异常子 任务信息通过任务执行监控处理器仍然保存到任务异常信息存储器中,同时对异常子任务 信息的保存次数增加I ;步骤十九当这个异常子任务所关联的所有后续任务都成功执行后,启动判断处理器 接收异常信息发送器发送的异常子任务,又开始处理新的异常子任务;步骤二十当所有的异常子任务都处理后,异常信息发送器又开始把仍存在异常的子 任务信息发送给启动判断处理器,开始新一轮处理过程;步骤二十一如果某个异常子任务经过3轮处理后还是发生异常,那么对这个异常子 任务不再执行,把这个异常子任务的信息发送给系统管理员来进行紧急处理。
如图1所示,本发明的系统结构包括业务系统数据库服务器、数据仓库服务器、 ETL调度监控服务器、ETL调度平台服务器。
业务系统数据库服务器,用于存储业务系统用户使用业务系统操作生成的数据, 业务系统数据库服务器是数据仓库数据的主要来源,是ETL任务数据的源头。
数据仓库服务器,用于执行ETL任务,存储数据仓库的数据,存储ETL任务的相关 配置信息,存储ETL任务执行的相关记录信息。
数据仓库服务器包括任务配置存储器、数据仓库数据存储器、ETL任务处理器、执 行记录存储器。
任务配置存储器,用于存储ETL任务的执行顺序,每个任务所包含的子任务,以及 子任务与子任务的关联关系等配置信息,以供ETL调度平台服务器使用。
数据仓库数据存储器,用于存储数据仓库表的数据,存储每个ETL任务完成后生 成的结果数据。
ETL任务处理器,根据任务配置存储器中的配置信息执行预设的ETL任务,处理来 自业务系统数据库的数据,生成数据仓库数据。
执行记录存储器,记录每个ETL任务执行的初始状态和结束状态,包括子任务名 称、子任务开始时间、子任务结束时间、子任务执行状态、更新的数据量等信息。
ETL调度监控服务器,用于对ETL任务所包含的子任务执行进行监控,捕获子任务 的异常信息,向维护人员发送异常信息提示,用于维护人员查看任务执行状况。ETL调度监 控服务器包括任务执行监控处理器、任务异常信息存储器、异常信息发送器。
任务执行监控处理器,监控数据仓库服务器中的ETL任务执行情况,获取任务及 各个子任务执行信息,并将子任务异常信息发送到任务异常信息存储器。
任务异常信息存储器,从任务执行监控处理器获取子任务异常信息,将异常信息 进行存储。
异常信息发送器,从任务异常信息存储器获取子任务异常信息,将子任务异常信 息发送到维护人员和ETL调度平台服务器。
ETL调度平台服务器,用于判断各个子任务的顺序,判断子任务是否可以执行,在 子任务到可执行状态时启动;WETL调度监控服务器获取异常子任务信息,当子任务由于 执行异常而失败后,准备重新执行该子任务。ETL调度平台服务器包括启动判断处理器、任 务启动处理器。
启动判断处理器,从数据仓库服务器获取ETL任务以及子任务配置信息,通过计 算处理,判断子任务是否符合执行的条件,并将执行标志结果发送到任务启动处理器。
任务启动处理器,获取任务判断处理器处理结果后,将启动任务指令发送至数据 仓库服务器,启动对应ETL任务。
本专利提供的方法具体实现,包括1、安排任务、子任务的执行顺序,配置子任务之间的关联关系按照业务工作的范围,将业务工作需求分成若干个不同的主题,每个主题对应一个任 务。每个任务被划分为若干个子任务,子任务为最小的执行单元,不能再进行划分,每个子 任务对应数据仓库中的一张数据表。
在任务内的子任务之间,存在着2种关系(I)独立关系。子任务之间不存在必要的因果关系。
( 2 )关联关系。子任务之间存在着必要的因果关系,一个子任务必须在一个或者若 干个前置子任务成功执行之后才能开始执行。
如图2所不,子任务I和子任务之间是独立关系。子任务I和子任务3、子任务4 之间是关联关系。子任务2和子任务3、子任务4之间是关联关系。
子任务I和子任务2是子任务3的前置任务,子任务3必须在子任务I和子任务2 全部成功执行结束后才能执行。子任务3是子任务4的前置任务,子任务4必须在子任务 3成功执行结束后才能执行。
子任务5与子任务1、子任务2、子任务3、子任务4是独立关系。子任务6与子任 务1、子任务2、子任务3、子任务4是独立关系。子任务5和子任务6是关联关系,子任务5 是子任务6的前置任务,子任务6必须在子任务5成功执行结束后才能执行。
子任务7与其他所有的子任务之间是独立关系。
根据业务需要来安排任务在执行时间上的先后顺序。安排任务所包含的子任务的 执行顺序时,子任务采用以下原则进行排序(I)当一个子任务与其它子任务之间具有关联关系时,必须在一个或者若干个前置子 任务成功执行之后才能执行该子任务。
(2)在此基础上,按照子任务的重要程度进行排序,对业务影响较大的子任务优先 执行。
(3)最后根据子任务执行的时间长度进行排序,执行时间较短的子任务优先执行。
把任务执行的先后顺序,任务包含的子任务,子任务执行的先后顺序,子任务之间 的关系保存在任务配置存储器中。
2、子任务执行异常时,记录异常子任务信息,并且当异常子任务与其它子任务有 关联关系时,将不执行此异常子任务的后续子任务。
如图3所示,子任务正常执行过程(O由启动判断处理器从任务配置存储器读取待执行子任务及其前置子任务信息。
(2)由启动判断处理器从执行记录存储器中读取待执行子任务及其前置子任务最 近一次成功执行的结束时间。
(3)根据这些信息,通过启动判断处理器的计算,得出子任务的执行标志,相关各 前置子任务成功执行时得到的执行标志结果是“可执行”。
(4)将执行标志结果发送到任务启动处理器。
(5)任务启动处理器获取“可执行”标志后,将启动指令发送至数据仓库服务器的 ETL任务处理器中。
(6) ETL任务处理器开始执行相应的子任务。
(7)执行记录存储器在子任务开始执行时,记录该子任务的名称,开始时间、把子 任务设置为“fail”状态,表示此子任务还未成功完成。执行记录存储器在子任务成功执行 结束时,记录子任务结束时间、以及更新数据量等信息,把此任务设置为“success”状态,表 示此任务还成功完成。
(8)任务执行监控处理器读取执行记录存储器中的子任务执行情况信息,以便于 系统管理员监控。
如图4所示。子任务执行发生异常时,与该子任务有关联关系的后续子任务将不 会被执行,其处理过程如下(I)ETL任务处理器开始执行子任务,该子任务执行时发生异常而被终止。
(2)执行记录存储器记录该子任务的状态信息,包括开始执行时间、异常终止时 间、运行状态等。
( 3 )任务执行监控处理器获取任务执行情况信息。
(4)把该异常子任务的信息放置到任务异常信息存储器中保存,同时对这个异常 子任务信息的保存次数增加一次。
(5)由启动判断处理器从任务配置存储器读取待执行子任务及其前置子任务信 息。此处所述前置子任务为上述执行时发生异常的子任务。
( 6 )由启动判断处理器从执行记录存储器中读取待执行子任务及其前置子任务最 近一次成功执行的结束时间。
(7)启动判断处理器通过计算,由于前置任务发生异常,得出待执行子任务的执行 标志是“不可执行”。
(8)将执行标志即结果发送到任务启动处理器。任务启动处理器接到这个执行标 志,不进行动作。
如图5所示,其中执行顺序为子任务1、子任务2、子任务3、子任务4。其中,子任 务I与子任务3关联,子任务2与子任务3关联,子任务3与子任务4关联,子任务I与子 任务2是独立关系。
如果子任务I发生异常错误,子任务3与子任务4将不会被执行,而子任务2不受 影响,将按顺序执行。
3、当任务配置存储器中的所有任务都已执行后,进入到纠错重启阶段。依次执行 被记录的异常子任务,当异常子任务与其它子任务有关联关系时,成功执行异常子任务后, 需要依次执行与其有关联关系的后续子任务。在此过程中有子任务在执行时发生异常,仍 被记录,用于新一轮的处理,如图6所示。
(I)异常信息发送器依照执行的先后顺序从任务异常信息存储器中读取发生异常 问题的子任务信息,并把它发送给启动判断处理器。
(2)启动判断处理器从任务配置存储器中读取这个异常子任务的前置子任务,如 果这个异常子任务不存在前置子任务,那么发送“可执行”指令给任务启动处理器。如果 这个异常子任务存在前置子任务,则需要从执行记录存储器读取这个前置子任务的执行状 态,如果判断这个前置子任务的执行状态是成功的,那么启动判断处理器发送“可执行”指 令给任务启动处理器;否则,启动判断处理器发送“不可执行”指令给任务启动处理器。
(3)任务启动处理器接收到“可执行”执行标志结果,将启动指令发送至数据仓库 服务器的ETL任务处理器中。
(4) ETL任务处理器开始重新执行相应的异常子任务。
(5)执行记录存储器在异常子任务开始执行时,记录异常子任务的名称,开始时 间、把此子任务设置为“ fai I ”状态,表示此子任务还未成功完成。执行记录存储器在子任务 成功执行结束时,记录子任务结束时间、把此子任务设置为“success”状态,表示此子任务 还成功完成,以及更新数据量等信息。如果这个异常子任务在这次执行过程中还是发生了 异常,则把这个异常子任务信息通过任务监控处理器仍然保存到任务异常信息存储器中, 同时对这个异常子任务信息的保存次数加I。
(6)这个异常子任务成功执行后,启动判断处理器从任务配置存储器中读取与这 个子任务有关联关系的后续子任务,由于这个子任务已经被成功执行,那么计算后续子任 务的是否可执行,得到“可执行”的执行标志结果,把“可执行”传递给任务启动处理器,进而 通过ETL任务处理器执行这些后续子任务。如果这些后续子任务在执行过程中发生异常, 则把异常子任务信息通过任务监控处理器仍然保存到任务异常信息存储器中,同时对此异 常子任务信息的保存次数增加I。
(7)当这个异常子任务所关联的所有后续任务都成功执行后,启动判断处理器接 收异常信息发送器发送的下一个异常子任务,开始处理。
(8)当所有的异常子任务都处理后,异常信息发送器又开始把仍存在的子任务信 息发送给启动判断处理器,开始新一轮处理过程。
(9)如果某个异常子任务经过连续3轮处理后还是发生异常,那么对这个异常子 任务不再执行,把这个异常子任务的信息发送给系统管理员来进行紧急处理。
如图7所示本发明中的启动判断处理器用于计算和判断待执行子任务是否满足执行条件,并向任 务启动处理器发出是否执行的标志,保证任务流程中的子任务按序自动启动执行。其结构 包括任务配置信息抽取单元、配置信息处理单元、任务执行信息抽取单元、任务执行标志计 算单元、任务标志发送单元。
任务配置信息抽取单元,用于抽取任务配置信息存储器中预先设置好的子任务执 行顺序、子任务与子任务的关联关系等信息。
配置信息处理单元,处理任务配置信息抽取单元的信息,计算出待执行的子任务, 并将结果信息发送到任务执行标志计算单元。
任务执行信息抽取单元,从配置信息处理单元获得待执行子任务及其前置子任 务,从执行记录存储器获取待执行子任务最近一次成功执行的结束时间,以及其前置子任 务最近一次成功执行的结束时间等信息,将信息发送到任务执行标志计算单元。
任务执行标志计算单元,从配置信息处理单元获取待执行的子任务及其前置子任 务,再从任务执行信息抽取单元获取待执行子任务其前置子任务相关成功执行的信息,计 算出待执行子任务执行的标志。
任务标志发送单元,从任务执行标志计算单元获取任务可执行标志后,将是否可 执行的指令发送到任务启动处理器,以启动待执行子任务。
待执行子任务执行标志生成流程如下(I)通过任务配置信息抽取单元,获取任务配置信息,通过配置信息处理单元获取当前 待执行的子任务及其前置子任务的信息,将这些信息发送到任务执行标志计算单元。
(2)任务执行信息抽取单元通过配置信息处理单元获取待执行的子任务及其前置 子任务的信息,并从执行记录存储器获取当前待执行的子任务及其前置子任务最近一次成 功执行的结束时间。
若最近一次成功执行的结束时间不存在,则表明当前子任务是第一次执行,直接 得出“可执行”标志。
(3)任务执行标志计算单元计算出待执行子任务所对应的所有前置子任务中最近 一次成功执行的结束时间中的最早值,将这个最早值与待执行子任务的最后一次成功执行 结束时间进行对比。
这个最早值若晚于待执行任务的最后一次成功执行结束时间,则表明待执行子任 务可以执行,返回“可执行”标志。
这个最早值若早于待执行任务的最后一次成功执行结束时间,则表明待执行任务 的前置任务中存在着执行异常的情况,返回“不可执行”标志。
实施例对于一个ETL任务流程,如图8所示。
本ETL任务流程分成4个任务,依次执行顺序是任务1、任务2、任务3、任务4。
其中任务I包括5个子任务,依次执行顺序是1、2、3、4、5。
任务2包括6个子任务,依次执行顺序是6、7、8、9、10、11。
任务3包括5个子任务,依次执行顺序是12、13、14、15、16。
任务4包括6个子任务,依次执行顺序是17、18、19、20、21、22。
并且,在图中有连线直接连接的子任务具有关联关系,无连线直接连接的子任务 无关联关系,是独立关系。
如果子任务2发生异常,则子任务3、4、5将不会被执行。
子任务7发生异常,则子任务9、11将不会被执行。
子任务13发生异常,则子任务14、16将不会被执行。
子任务19发生异常,则子任务20、21、22将不会被执行。
ETL任务流程结束后,子任务2、7、13、19的异常信息将会被保存在任务异常信息 存储器中。当进入到纠错重启阶段时,将依次重新启动子任务2、7、13、19。
当成功执行子任务2后,将会依次执行与其具有关联关系的后续子任务3、4、5。当 成功执行子任务7后,将会依次执行与其具有关联关系的后续子任务9、11。当成功执行子 任务13后,将会依次执行与其具有关联关系的后续子任务14、16。当成功执行子任务19 后,将会依次执行与其具有关联关系的后续子任务20、21、22。
如果某个子任务连续3次执行时都发生异常,将通知系统管理员进行处理。
这种方式可以最大程度的减少人工操作,提高运行效率,并且由于只对发生异常 的子任务进行重新执行,减少了正常子任务的重复运行,减少系统运行损耗。
权利要求
1.一种纠错重启以及自动判断启动的ETL调度系统,其特征在于,包括业务系统数据库服务器、数据仓库服务器、ETL调度监控服务器、ETL调度平台服务器;数据仓库服务器包括任务配置存储器、数据仓库数据存储器、ETL任务处理器、执行记录存储器,ETL任务处理器与数据仓库数据存储器和执行记录存储器相连;ETL调度监控服务器包括任务执行监控处理器、任务异常信息存储器、异常信息发送器,任务异常信息存储器与任务执行监控处理器和异常信息发送器相连;ETL调度平台服务器包括启动判断处理器、任务启动处理器,启动判断处理器与任务启动处理器相连;其中,数据仓库服务器的ETL任务处理器与业务系统数据库服务器和ETL调度平台服务器的任务启动处理器相连,ETL调度平台服务器的启动判断处理器分别与数据仓库服务器的任务配置存储器、执行记录存储器、以及ETL调度监控服务器的异常信息发送器相连,数据仓库服务器的执行记录存储器与ETL调度监控服务器的任务执行监控处理器相连。
2.根据权利要求1所述的一种纠错重启以及自动判断启动的ETL调度系统,其特征在于,所述的启动判断处理器包括任务配置信息抽取单元、配置信息处理单元、任务执行信息抽取单元、任务执行标志计算单元、任务标志发送单元,其中配置信息处理单元与任务配置信息抽取单元、任务执行信息抽取单元、任务执行标志计算单元相连,任务执行标志计算单元分别与配置信息处理单元、任务执行信息抽取单元、任务标志发送单元相连。
3.一种纠错重启以及自动判断启动的ETL调度方法,其特征在于,包括以下步骤 步骤一安排任务、子任务的执行顺序,配置子任务之间的关联关系,把任务执行的先后顺序,任务包含的子任务,子任务执行的先后顺序,子任务之间的关系保存在数据仓库服务器的任务配置存储器中,且每个子任务对应数据仓库中的一张表,根据业务需要来安排任务在执行时间上的先后顺序,安排任务所包含的子任务的执行顺序时,子任务采用以下原则进行排序 (O当一个子任务与其它子任务之间具有关联关系时,必须在一个或者若干个前置子任务成功执行之后才能执行该子任务; (2)在此基础上,按照子任务的重要程度进行排序,对业务影响较大的子任务优先执行; (3)最后根据子任务执行的时间长度进行排序,执行时间较短的子任务优先执行; 步骤二 由启动判断处理器从任务配置存储器读取待执行子任务及其前置子任务信息;由启动判断处理器从执行记录存储器中读取待执行子任务及其前置子任务最近一次成功执行的结束时间;根据这些信息,通过启动判断处理器的计算,得出待执行子任务的执行标志,待执行子任务执行标志生成流程如下 (1)通过任务配置信息抽取单元,从任务配置存储器获取任务配置信息,通过配置信息处理单元获取当前待执行的子任务及其前置子任务的信息,将这些信息发送到任务执行标志计算单元; (2)任务执行信息抽取单元通过配置信息处理单元获取当前待执行的子任务及其前置子任务的信息,再从执行记录存储器获取当前待执行的子任务及其前置子任务最近一次成功执行的结束时间; 若最近一次成功执行的结束时间不存在,则表明当前子任务是第一次执行,直接得出“可执行”标志;(3)任务执行标志计算单元计算出待执行子任务所对应的所有前置子任务中最近一次成功执行的结束时间中的最早值,将这个最早值与待执行子任务的最后一次成功执行结束时间进行对比,对比方法如下 这个最早值若晚于待执行子任务的最后一次成功执行结束时间,则表明待执行子任务可以执行,返回“可执行”标志; 这个最早值若早于待执行子任务的最后一次成功执行结束时间,则表明待执行子任务的前置子任务中存在着执行异常的情况,返回“不可执行”标志; 步骤三将启动判断处理器中任务标志发送单元的执行标志结果发送到任务启动处理器;任务启动处理器分以下两种情况 若任务启动处理器获取“可执行”标志后,将启动指令发送至数据仓库服务器的ETL任务处理器中,继续执行步骤四; 若任务启动处理器获取“不可执行”标志后,不进行动作,跳至步骤二 ; 步骤四ETL任务处理器获取启动指令开始执行相应的子任务;SETL任务处理器执行相应的子任务未发生异常,继续执行步骤五;若ETL任务处理器执行相应的子任务发生异常而被终止,直接跳到步骤八; 步骤五执行记录存储器在子任务开始执行时,记录该子任务的名称,开始时间、把子任务设置为“fail ”状态,表示此任务还未成功完成,执行记录存储器在子任务成功执行结束时,记录子任务结束时间,以及更新数据量等信息,把此任务设置为“success”状态,表示此任务还成功完成; 步骤六任务执行监控处理器读取执行记录存储器中的子任务执行情况信息,以便于系统管理员监控; 步骤七如果任务配置存储器中所有任务还未全部执行,则跳至步骤二 ;如果任务配置存储器中所有任务都已执行,则跳至步骤十三; 步骤八执行记录存储器记录该子任务的状态信息,包括开始执行时间、异常终止时间、运行状态等; 步骤九任务执行监控处理器从执行记录存储器中获取任务执行情况信息,并把该异常子任务的信息放置到任务异常信息存储器中保存,同时对这个异常子任务信息的保存次数增加一次; 步骤十二由于前置任务发生异常,将不执行与其具有关联关系的后续子任务,跳至步骤七; 步骤十三异常信息发送器依照执行的先后顺序从任务异常信息 存储器中读取发生异常问题的子任务信息,并把它发送给启动判断处理器; 步骤十四启动判断处理器从任务配置存储器中读取这个异常子任务的前置子任务,如果这个异常子任务不存在前置子任务,那么发送“可执行”指令给任务启动处理器;如果这个异常子任务存在前置子任务,则需要从执行记录存储器读取这个前置子任务的执行状态,如果判断这个前置子任务的执行状态是成功的,那么启动判断处理器发送“可执行”指令给任务启动处理器;否则,启动判断处理器发送“不可执行”指令给任务启动处理器;步骤十五任务启动处理器接收到“可执行”执行标志结果,将启动指令发送至数据仓库服务器的ETL任务处理器中;步骤十六ETL任务处理器开始重新执行相应的异常子任务; 步骤十七执行记录存储器在此异常子任务开始执行时,记录此异常子任务的名称,开始时间、把此任务设置为“fail”状态,表示此子任务还未成功完成;执行记录存储器在此子任务成功执行结束时,记录此子任务结束时间、把此子任务设置为“success”状态,表示此子任务成功完成,以及更新数据量等信息;如果这个异常子任务在这次执行过程中还是发生了异常,则把这个异常子任务信息通过任务执行监控处理器仍然保存到任务异常信息存储器中,同时对这个异常子任务信息的保存次数加I ; 步骤十八这个异常子任务成功执行后,启动判断处理器从任务配置存储器中读取与这个子任务有关联关系的后续子任务,由于这个子任务已经被成功执行,那么计算后续子任务得到“可执行”的执行标志结果,把“可执行”的执行标志结果传递给任务启动处理器,进而通过ETL任务处理器执行这些后续子任务;如果这些后续子任务在执行过程中发生异常,则把异常子任务信息通过任务执行监控处理器仍然保存到任务异常信息存储器中,同时对此异常子任务信息的保存次数增加I ; 步骤十九当这个异常子任务所关联的所有后续任务都执行后,启动判断处理器接收异常信息发送器发送的异常子任务,开始处理新的异常子任务; 步骤二十当所有的异常子任务都处理后,异常信息发送器开始把仍存在的异常子任务信息发送给启动判断处理器,开始新一轮处理过程; 步骤二十一如果某个异常子任务经过3轮处理后还 是发生异常,那么对这个异常子任务不再执行,把这个异常子任务的信息发送给系统管理员来进行紧急处理。
全文摘要
本发明公开了一种纠错重启以及自动判断启动的ETL调度方法及系统,本发明的系统结构包括业务系统数据库服务器、数据仓库服务器、ETL调度监控服务器、ETL调度平台服务器,本发明的方法是将数据仓库ETL任务分为若干主题任务,每个主题任务包含若干子任务,按预设执行顺序配置信息以及前置关联子任务成功执行完成时间自动判断,执行后续子任务,当子任务执行发生异常后,根据子任务关联关系停止后续关联子任务的执行,并记录异常子任务,以多次自动重启的方式,只对异常子任务及相关联后续子任务进行处理;本发明解决ETL任务调度中由于前置子任务出错时而后续子任务依然执行的问题,提高任务执行效率,减少人工干预,减少运行损耗。
文档编号G06F9/48GK103034554SQ20121058514
公开日2013年4月10日 申请日期2012年12月30日 优先权日2012年12月30日
发明者何昌桃, 黄建鹏, 徐晓冬, 陈静 申请人:焦点科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1