一种分布式etl系统及调度方法

文档序号:9375714阅读:566来源:国知局
一种分布式etl系统及调度方法
【技术领域】
[0001] 本发明涉及计算机技术应用领域,尤其涉及一种分布式ETL系统及调度方法。
【背景技术】
[0002] ETL (Extract-Transform-Load,即数据抽取、转换、装载的过程)作为BI/ DW(Business Intelligence)的核心和灵魂,能够按照统一的规则集成并提高数据的价值, 是负责完成数据从数据源向目标数据仓库转化的过程,是实施数据仓库的重要步骤。ETL 用于将分布的、异构数据源中的数据(例如,关系数据、平面数据文件等)抽取到临时中间 层后进行清洗、转换和集成,最后按照预先定义好的数据仓库模型,将数据加载到数据仓库 中,是构建的数据仓库成为联机分析处理和数据挖掘的基础。在技术上,ETL主要涉及到关 联、转换、增量、调度和监控等几个方面。通常,数据仓库的数据不要求与联机事务处理系统 中的数据实时同步,因此,ETL可以定时进行,但是多个ETL的操作时间、顺序和成败对数据 仓库中数据的有效性有着至关重要的影响,从而直接影响到联机分析处理结果和数据挖掘 结果的质量。
[0003] 目前,支持关系型数据和hadoop的互相迁移的apache开源项目-Sqoop,其分布式 依赖hadoop实现,数据量大,系统实现比较复杂,另外没有很好的任务调度平台;此外,阿 里巴巴开源项目Datax,支持多种数据库数据迁移,其分布式和任务调度依赖阿里巴巴上层 调度系统,其应用的友好度比较低,难以应用于其他系统,主要应用在大规模的数据迁移, 系统实现比较复杂。
[0004] 因此,现有技术中存在如下技术缺陷:
[0005] 1、多个数据库之间数据转换及不同数据库之间大数据迁移实现难度较大;
[0006] 2、子节点横向扩展不灵活,难以突破计算瓶颈;
[0007] 3、系统部署复杂,以及公司业务集成难度大。

【发明内容】

[0008] 本发明要解决的技术问题在于,针对上述大数据迁移、节点横向扩展不灵活、以及 系统部署复杂的问题,提供一种分布式ETL系统及调度方法。
[0009] 本发明解决其技术问题所采用的技术方案是:构造一种分布式ETL系统,该系统 包括一至多个数据源系统、一个调度系统、一至多个子应用系统、以及一至多个数据仓库; [0010] 一至多个所述数据源系统,用于提供源表结构及源表数据;
[0011] 所述调度系统,用于从所述数据源系统中获取所述源表结构,依据所述源表结构 生成目标表结构,将所述目标表结构迁移至所述数据仓库,并依据所述目标表结构生成调 度信息,将所述调度信息发送至所述子应用系统;
[0012] -至多个所述子应用系统,用于依据所述调度信息从所述数据源系统中读取所述 源表数据,并将所述源表数据转化为目标表数据,经所述目标表数据加载至所述数据仓库;
[0013] -至多个所述数据仓库,用于依据所述目标表结构存储所述目标表数据。
[0014] 在发明所述的系统中,该系统还包括协调系统,所述协调系统用于检测所述调度 信息所发送至的所述子应用系统的发送状态,依据所述发送状态进行所述子应用系统的数 据同步及信息维护。
[0015] 在发明所述的系统中,所述调度信息为依据源表结构将所述源表数据拆分为多个 任务,并向所述子应用系统发布所述多个任务。
[0016] 在发明所述的系统中,所述子应用系统用于设置可并发执行所述任务的数量的最 大值,若并发执行所述任务的数量小于所述最大值,则启动任务扫描线程扫描所发布的多 个任务,按照预设的规则获取多个所述任务中的一个,并实时执行所获取的任务以将所述 任务中的源表数据转化为目标表数据。
[0017] 在发明所述的系统中,所述子应用系统还用于将所述任务中的源表数据转化为目 标表数据之后反馈完成信息至所述调度系统。
[0018] 所述调度系统还用于依据所述完成信息将所述源表数据再次拆分为多个任务以 更新向所述子应用系统所发布的所述多个任务。
[0019] 本发明的另一方面,提供一种分布式ETL调度方法,该方法包括以下步骤:
[0020] Sl、获取源表结构;
[0021] S2、依据所述源表结构生成目标表结构,将所述目标表结构迁移至数据仓库;
[0022] S3、依据所述目标表结构生成调度信息;
[0023] S4、依据所述调度信息读取源表数据,并将所述源表数据转化为目标表数据;
[0024] S5、将所述目标表数据加载至所述数据仓库,所述数据仓库依据所述目标表结构 存储所述源表数据。
[0025] 在本发明所述的调度方法中,在所述步骤S3中,检测所述调度信息的发送状态, 依据所述发送状态进行数据同步及信息维护。
[0026] 在本发明所述的调度方法中,在所述步骤S3中,所述调度信息为依据源表结构将 所述源表数据拆分为多个任务,并发布所述多个任务。
[0027] 在本发明所述的调度方法中,所述步骤S4包括以下子步骤:
[0028] S41、设置可并发执行所述任务的数量的最大值;
[0029] S42、若并发执行所述任务的数量小于所述最大值,则启动任务扫描线程扫描所发 布的多个任务,按照预设的规则获取多个所述任务中的一个;
[0030] S43、实时执行所获取的任务以将所述任务中的源表数据转化为目标表数据。
[0031] 在本发明所述的调度方法中,所述调度方法还包括:
[0032] S6、在所述步骤S5之后,将所述任务中的源表数据转化为目标表数据之后反馈完 成信息,转至步骤S3 ;
[0033] 在所述步骤S3中,还依据所述完成信息将所述源表数据再次拆分为多个任务以 更新所发布的多个任务。
[0034] 实施本发明的一种分布式ETL系统及调度方法,具有以下有益效果:通过获取源 表结构并生成目标表结构,其中通过简单数据类型影射配置实现多个数据库之间的数据类 型转换,应用灵活;通过节点横向扩展以及节点竞争任务的规则实现分布式计算,可解决大 数据的迁移;系统可通过纯Java实现,对第三方技术依赖小,系统部署简易。
【附图说明】
[0035] 下面将结合附图及实施例子对本发明作进一步说明,附图中:
[0036] 图1为本发明一个较佳实施例的分布式ETL系统分布图;
[0037] 图2为本发明一个较佳实施例提供的数据源系统、调度系统、数据仓库的连接示 意图;
[0038] 图3为本发明一个较佳实施例提供的调度系统与子应用系统的连接示意图;
[0039] 图4为本发明一个较佳实施例提供的数据源系统、子应用系统、数据仓库的连接 不意图;
[0040] 图5为本发明一个较佳实施例提供的分布式ETL调度方法的流程图;
[0041] 图6为本发明另一个较佳实施例提供的分布式ETL系统分布图;
[0042] 图7为本发明另一个较佳实施例提供的调度系统与子应用系统的连接示意图;
[0043] 图8为本发明另一个较佳实施例提供的分布式ETL调度方法的流程图;
[0044] 图9为本发明另一个较佳实施例提供的分布式ETL调度方法中步骤S3至S6的循 环流程图;
[0045] 图10为Master节点的工作流程图;
[0046] 图11为Worker节点的工作流程图;
[0047] 图12为任务的构成示意图;
[0048] 图13为Worker节点扫描并执行任务的流程图。
【具体实施方式】
[0049] 为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明 本发明的【具体实施方式】。
[0050] 本发明的目的在于提供一种用于将分布的、异构数据源中的数据抽取到临时中间 层后进行转换和集成,最后按照预先定义好的数据仓库模型,将数据加载到数据仓库中的 一种分布式ETL系统及调度方法,该分布式ETL系统不仅解决了生产数据库与数据仓库的 数据库选型不一,将数据进行转换再存储的问题,还突破了大数据迁移中单节点的计算瓶 颈,实现分布式计算。
[0051] 图1为本发明一个较佳实施例的分布式ETL系统分布图,如图1所示,该系统包括 用于提供源表结构及源表数据的一至多个数据源系统、一个用于从所述数据源系统中获取 所述源表结构,依据所述源表结构生成目标表结构,将所述目标表结构迁移至所述数据仓 库,并依据所述目标表结构生成调度信息,并将所述调度信息发送至所述子应用系统的调 度系统、一至多个用于依据所述调度信息从所述数据源系统中读取所述源表数据,并将所 述源表数据转化为目标表数据,经所述目标表数据加载至所述数据仓库的子应用系统、以 及一至多个用于依据所述目标表结构存储所述目标表数据的数据仓库。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1