一种实时ETL系统及方法技术方案

技术编号:12354457 阅读:805 留言:0更新日期:2015-11-19 04:31
本发明专利技术公开了一种实时ETL系统及方法,包括ETL客户端、分布式数据缓存队列、分布式状态管理机和ETL群集;所述ETL客户端,用于设计ETL流程、测试ETL流程和发布ETL流程;所述分布式数据缓存队列,用于缓存输入数据;所述分布式状态管理机,用于存储系统状态信息;所述ETL群集,用于按行从数据源获取输入数据,并将输入数据缓存到分布式数据缓存队列中,然后对输入数据进行处理。本发明专利技术具有很高的效率,能够解决目前ETL技术应用在实时大数据环境下的局限性问题。

【技术实现步骤摘要】

本专利技术涉及数据处理技术,特别是涉及一种实时ETL系统及方法
技术介绍
ETL(Extract-Transformation-Loading)即数据的抽取、转换和加载,也叫数据集 成,是构建数据仓库的一种重要技术。传统ETL过程将批量数据从业务数据库等数据源中抽取出来,经过清洗、转换等 分析统计处理后,最终按照预先定义好的数据仓库模型将结果加载到数据仓库中。ETL过 程通常采用定时任务调度的方式执行,当满足时间条件时,ETL服务器调度执行预先定义好 的ETL任务,每次对数据源中的一批数据进行操作,将结果加载到数据仓库中,适用于对原 始数据进行定时的批量处理情况,其业务流程如图1所示。但是,随着电子商务、移动互联网、电信业务的发展,对业务数据分析的时限要求 越来越高,出现了一批诸如用户点击流分析、基于位置的服务、实时账单查询等应用,这些 应用都要求业务系统中的数据能尽快被后台分析系统感知。传统的ETL技术方案在面对实 时大数据分析应用的情况下,其局限性非常明显,主要表现在以下几个方面: (1)时间片调度方式不能满足实时性要求:传统ETL方案中数据处理任务按时间 片调度,即每隔一段时间调度一次任务,对业务系统中的数据进行抽取、转换、加载操作,后 台分析系统能否在业务系统的数据发生改变的情况下立即与之同步取决于调度的时间片 大小,时间片过大则分析系统同步时延较大,这在时延要求较高的实时分析环境下是不允 许的;时间片过小则会导致计算资源浪费。 (2)大数据环境下执行ETL任务效率不高:传统ETL方案中所有任务在特定的ETL 服务器上执行,在大数据环境下,单台处理机的执行效率有限,且不易扩展。 (3)可靠性得不到保障:ETL服务器主机或网络连接中断导致所有正在运行ETL任 务失败,严重时会导致数据丢失、混乱,这在可靠性要求较高的场景中是不允许的。
技术实现思路
本专利技术的目的在于克服现有技术的不足,提供一种实时ETL系统及方法,具有很 高的效率,能够解决目前ETL技术应用在实时大数据环境下的局限性问题。本专利技术的目的是通过以下技术方案来实现的:一种实时ETL系统,包括ETL客户 端、分布式数据缓存队列、分布式状态管理机和ETL群集。所述ETL客户端,用于设计ETL流程、测试ETL流程和发布ETL流程。 所述分布式数据缓存队列,用于缓存输入数据。 所述分布式状态管理机,用于存储系统状态信息。所述ETL群集,用于按行从数据源获取输入数据,并将输入数据缓存到分布式数 据缓存队列中,然后对输入数据进行处理。所述系统状态信息包括输入数据的元数据信息和当前的分布式数据缓存队列的 队列信息。 所述ETL群集包括多个ETL节点,多个ETL节点组成分布式数据处理ETL网络,分 布式数据处理ETL网络包括抽取任务分布式子网络和处理任务分布式子网络。 所述抽取任务分布式子网络,用于按行从数据源中获取输入数据,并将输入数据 缓存到分布式数据缓存队列。 所述处理任务分布式子网络,用于对输入数据进行处理和转换,并输出结果数据。 -种实时ETL方法,包括以下步骤: SI.设计和测试ETL流程,将测试合格的ETL流程以元数据的方式存储为xml文 件; S2.将测试合格的ETL流程构造成能够在ETL群集中运行的分布式数据处理ETL 流程,并将该分布式数据处理ETL流程发送到ETL群集; S3. ETL群集中的多个ETL节点组成分布式数据处理ETL网络,构建每个数据源的 分布式数据缓存队列,按行从数据源中获取输入数据,将输入数据发送到该数据源对应的 分布式数据缓存队列,将该分布式数据缓存队列的队列信息和该分布式数据缓存队列对应 数据源中输入数据的元数据信息发送到分布式状态管理机; S4.从分布式数据缓存队列中抽取输入数据,并使输入数据流经分布式数据处理 ETL网络中的处理任务分布式子网络中的所有ETL节点; S5.每条进入分布式数据处理ETL网络中的输入数据形成一个消息树; S6.判断每条输入数据是否在分布式数据处理ETL网络中被完全处理: 若存在输入数据未被完全处理,则从分布式数据缓存队列中重新抽取该输入数 据,将该输入数据发送到分布式数据处理ETL网络中,重新处理; 若所有输入数据均被完全处理,输出处理完成后的结果数据。 所述步骤S2包括以下子步骤: S21.检测ETL流程的DAG图中入度为0的ETL转换单元,并将该入度为0的ETL 转换单元归类到输入步骤节点集合;检测ETL的DAG图中出度为0的ETL转换单元,并将该 出度为〇的ETL转换单元归类到输出步骤节点集合;将ETL流程的DAG图中除入度为0、出 度为〇以外的ETL转换单元归类到中间处理步骤节点集合; S22.从步骤Sl中的xml文件中读取每个ETL转换单元的元数据,并构建每个ETL 转换单元的元数据对象; S23.根据输入步骤节点集合中各ETL转换单元的元数据对象和ETL流程的DAG图 中各ETL转换单元间的连接关系构成抽取任务分布式子网络; S24.根据中间处理步骤节点集合中各ETL转换单元的元数据对象和ETL流程的 DAG图中各ETL转换单元间的连接关系构成处理任务分布式子网络。 所述步骤S3还包括:将步骤S22中的元数据存储在分布式数据缓存队列中。 所述步骤S6中判断输入数据是否被处理完成的方式为:为输入数据的消息树分 配一个变量,并将该变量均初始化为〇,待所述输入数据经过处理任务分布式子网络处理 后,判断所述变量是否为〇。 若该变量为0,则该输入数据被完全处理。 若该变量不为〇,则该输入数据未被完全处理。 所述判断输入数据是否被处理完成的方式包括以下子步骤: S61.定义处理任务分布式子网络中任意一个ETL节点为k,接收到的输入数据为 A,则ETL节点k为输入数据A生成一个随机的64位标识符Sa,并将标识符Sa保存到该处 理任务分布式子网络的标识序列中,为ETL节点k的消息树分配一个64位的变量result, 并将该变量result均初始化为0,然后将变量result通过公式(1)与标识符3&进行异或 运算: result =Sa XOR result 公式(I) S62.若处理任务分布式子网络中ETL节点k之后无用于对输入数据A进行处理的 ETL节点,则ETL节点k处理完成后,变量result再次通过公式(1)与标识符3&进行异或 运算,跳转步骤S63 ; 若处理任务分布式子网络中ETL节点k之后有用于对输入数据A进行处理的ETL 节点,则ETL节点k生成输入数据A的一个或多个中间输出值(A 1, A2, A3,…,AJ,并将中间 输出值M1, A2, A3,…,AJ发送给后续ETL节点,每个An表示ETL节点k的一个中间输出值, 为每个中间输出值4生成一个随机的64位标识符I5,并将标识符记录到该处理任务 分布式子网络的标识序列中,变量result的值通过公式(2)进行更新:result-reswltXORS,XORS....XOR 公式(2) ETL节点k处理完成后,变量result再次与标识符5&通过公式(1)进行异或运 算; S63.每过间隔时间t检测一次变量result的值: 若变量result的值为0,则输入数本文档来自技高网
...

【技术保护点】
一种实时ETL系统,其特征在于:包括ETL客户端、分布式数据缓存队列、分布式状态管理机和ETL群集;所述ETL客户端,用于设计ETL流程、测试ETL流程和发布ETL流程;所述分布式数据缓存队列,用于缓存输入数据;所述分布式状态管理机,用于存储系统状态信息;所述ETL群集,用于按行从数据源获取输入数据,并将输入数据缓存到分布式数据缓存队列中,然后对输入数据进行处理。

【技术特征摘要】

【专利技术属性】
技术研发人员:林劼李虹峰郝玉洁廖虹光
申请(专利权)人:电子科技大学
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1