基于数据管道和安全沙箱的ETL方法、装置、设备和介质制造方法及图纸

技术编号:28140542 阅读:12 留言:0更新日期:2021-04-21 19:16
本发明专利技术提供一种基于数据管道和安全沙箱的ETL方法、装置、设备和介质,方法包括:启动执行器接收前端的任务报文信息,并提取出各阶段的组件编码分别实例化出各阶段组件,通过无锁的内存队列构建各阶段组件之间的数据管道,从而构建ETL拓扑实例,启动数据采集,数据通过数据管道传输,实现中间数据不落地,且数据边生产边消费;其中,各阶段组件是独立且可复用的组件,并能按业务场景自由对接;数据的结构为经过封装改造的数组;其中类加载是采用扩展的双亲委派模型进行,使所述执行器各各阶段组件运行在各自独立的安全沙箱中。从而解决了目前ETL采集方案中传输速度小,性能损失大,组件和业务强相关,以及双亲委派模型存在的包冲突缺陷问题。陷问题。陷问题。

【技术实现步骤摘要】
基于数据管道和安全沙箱的ETL方法、装置、设备和介质


[0001]本专利技术涉及计算机
,特别涉及一种ETL方法、装置、设备和介质。

技术介绍

[0002]ETL,是英文Extract

Transform

Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。
[0003]组件是一个组装单元,它具有约定式规范的接口,以及明确的依赖环境。本案,组件用来实现具体业务的ETL功能,是一个软件功能包的总称。
[0004]ETL采集装置分三个阶段,即抽取、转换、加载。各阶段的数据源依赖上一模块处理后的数据结果,即转换阶段的数据依赖抽取阶段的输出数据;加载阶段的数据依赖转换阶段的输出数据。
[0005]现有的ETL采集装置方案一,如图1所示:抽取阶段:从源端抽取数据,并将抽取结果输出到临时数据,可以是内存、数据库、文件等;转换阶段:从上一步的临时数据读取数据,对数据进行转换,并将转换结果输出到临时数据,可以是内存、数据库、文件等;加载阶段:从上一步的临时数据中读取数据,将数据加载至目的数据源,可以是数据库、文件等。该方案抽取和转换阶段都需要将数据临时存储到临时数据中,即将临时数据作中转,每个阶段都要依赖上一阶段完成才能启动,同时可能需要消耗大量的磁盘IO或网络带宽,采集效率低,对于实时性要求较高的业务场景可能无法满足其时效性要求。
[0006]现有的ETL采集装置方案二,如图2所示:抽取、转换、加载通过队列建立起连接,抽取阶段从源端抽取数据并发送至队列一;转换阶段从队列一消费数据并执行转换逻辑,将转换后的数据发送至队列二;加载阶段从队列二消费数据并将数据加载至目的数据源中。该方案采用队列进行传输,相比于方案一,少了临时存储,采集时间会缩短,但该方案还是存在缺陷。各阶段的具体功能组件若采用单线程时,容易造成性能瓶颈,当读写速度不匹配将导致整体速度下降,吞吐量低;各阶段的具体功能组件若采用多线程时,需要使用阻塞队列做线程安全保障,锁的引入会对性能造成损失,尤其当采集需要花费较长时间时,锁带来的性能损失将被放大的更为明显。同时,使用队列需要频繁的分配内存和回收内存,在JAVA系统中,可能因为垃圾回收造成系统短暂的停顿。此外,这种方案还有一种更严重的缺陷,单组件实现的ETL功能具有强业务耦合,如:从FTP到HDFS组件、从FTP到FTP组件、从Hive到Oracle组件、从Hive到Mysql组件等等,所有的ETL功能封装在一个组件中,组件和具体的业务场景具有强相关性;相同数据源的逻辑基本相同,代码重复度高,维护易出错。
[0007]且所述方案一和方案二同时还有一些共同的缺陷,组件所依赖的第三方包容易互相冲突,或与ETL框架所依赖的包产生冲突。如:某个组件引用到kafka1.x的包,另一组件引用到kafka2.x的包,两个版本的包存放在同一组件目录引起包冲突,组件对外开放性差。要解决包冲突,就必须扩展双亲委派模型。而现有的双亲委派模型在传统的ETL采集方案中存在如下缺陷:
[0008]双亲委派模型一,如图3所示,该模型下,执行器框架和组件都由App ClassLoader
类加载器,所以组件和组件、组件和执行器之间的包极其容易冲突。
[0009]双亲委派模型二,如图4所示,该模型下,组件和组件之间属于同级的Class Loader不会冲突,然而组件Class Loader的父Class Loader是App ClassLoader(执行器运行在这里),组件在实例化类的时候,优先委托App ClassLoader加载,当App ClassLoader和组件ClassLoader下有相同包的不同版本时,还是会引起冲突。

技术实现思路

[0010]本专利技术要解决的技术问题,在于提供一种基于数据管道和安全沙箱的ETL方法、装置、设备和介质,从而解决了目前ETL传输速度小,性能损失大,组件和业务强相关,以及双亲委派模型在传统的ETL采集方案中存在包冲突缺陷问题。
[0011]第一方面,本专利技术提供了一种ETL方法,包括下述步骤:
[0012]S1、通过启动模块启动执行器;
[0013]S2、执行器接收前端的任务报文信息,根据任务报文信息,提取出抽取、转换和加载对应的组件编码,并根据所述组件编码分别实例化出抽取组件、转换组件和加载组件,并通过无锁的内存队列构建所述抽取组件、所述转换组件和所述加载组件之间的数据管道,从而构建ETL拓扑实例;其中,
[0014]所述抽取组件、所述转换组件和所述加载组件是由实现ETL功能的单组件解耦而成的,是独立且可复用的组件,并能按业务场景自由对接;
[0015]S3、所述ETL拓扑实例启动数据采集,数据通过所述数据管道传输,依次由所述抽取组件、所述转换组件和所述加载组件进行抽取、转换和加载,实现中间数据不落地,且数据边生产边消费;其中,
[0016]所述数据的结构为经过封装改造的数组,即利用缓存行填充、CAS原子操作,实现无锁的内存队列;
[0017]整个ETL过程的类加载是采用扩展的双亲委派模型进行,App ClassLoader只加载JAVA的基础包,执行器和组件包的加载则分别由执行器ClassLoader和组件ClassLoader去完成,且所述执行器ClassLoader和所述组件ClassLoader的父加载器均为App ClassLoader,使所述执行器、所述抽取组件、所述转换组件和所述加载组件做到类隔离,运行在各自独立的安全沙箱中。
[0018]第二方面,本专利技术提供了一种ETL装置,包括:
[0019]启动模块,用于启动执行器;
[0020]执行器,用于接收前端的任务报文信息,根据任务报文信息,提取出抽取、转换和加载对应的组件编码,并根据所述组件编码分别实例化出抽取组件、转换组件和加载组件,并通过无锁的内存队列构建所述抽取组件、所述转换组件和所述加载组件之间的数据管道,从而构建ETL拓扑实例;其中,
[0021]所述抽取组件、所述转换组件和所述加载组件是由实现ETL功能的单组件解耦而成的,是独立且可复用的组件,并能按业务场景自由对接;
[0022]ETL拓扑实例,用于启动数据采集,数据通过所述数据管道传输,依次由所述抽取组件、所述转换组件和所述加载组件进行抽取、转换和加载,实现中间数据不落地,且数据边生产边消费;其中,
[0023]所述数据的结构为经过封装改造的数组,即利用缓存行填充、CAS原子操作,实现无锁的内存队列;
[0024]整个ETL过程的类加载是采用扩展的双亲委派模型进行,App ClassLoader只加载JAVA的基础包,执行器和组件包的加载则分别由执行器ClassLoader和组件ClassLoader去完成,且所述执行器ClassLoader和所述组件ClassLoader的父加载器均为App ClassLoader本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于数据管道和安全沙箱的ETL方法,其特征在于:包括下述步骤:S1、通过启动模块启动执行器;S2、执行器接收前端的任务报文信息,根据任务报文信息,提取出抽取、转换和加载对应的组件编码,并根据所述组件编码分别实例化出抽取组件、转换组件和加载组件,并通过无锁的内存队列构建所述抽取组件、所述转换组件和所述加载组件之间的数据管道,从而构建ETL拓扑实例;其中,所述抽取组件、所述转换组件和所述加载组件是由实现ETL功能的单组件解耦而成的,是独立且可复用的组件,并能按业务场景自由对接;S3、所述ETL拓扑实例启动数据采集,数据通过所述数据管道传输,依次由所述抽取组件、所述转换组件和所述加载组件进行抽取、转换和加载,实现中间数据不落地,且数据边生产边消费;所述数据的结构为经过封装改造的数组,即利用缓存行填充、CAS原子操作,实现无锁的内存队列;其中,整个ETL过程的类加载是采用扩展的双亲委派模型进行,App ClassLoader只加载JAVA的基础包,执行器和组件包的加载则分别由执行器ClassLoader和组件ClassLoader去完成,且所述执行器ClassLoader和所述组件ClassLoader的父加载器均为App ClassLoader,使所述执行器、所述抽取组件、所述转换组件和所述加载组件做到类隔离,运行在各自独立的安全沙箱中。2.根据权利要求1所述的基于数据管道和安全沙箱的ETL方法,其特征在于:所述抽取组件为Reader类组件,所述转换组件为Transform类组件,所述加载组件为Writer类组件。3.根据权利要求1所述的基于数据管道和安全沙箱的ETL方法,其特征在于:所述数据管道还支持并行写入和并行消费。4.根据权利要求1所述的基于数据管道和安全沙箱的ETL方法,其特征在于:所述抽取组件、所述转换组件和所述加载组件还具备热插拔和动态更新特性。5.一种基于数据管道和安全沙箱的ETL装置,其特征在于:包括:启动模块,用于启动执行器;执行器,用于接收前端的任务报文信息,根据任务报文信息,提取...

【专利技术属性】
技术研发人员:梁长生潘桦陈凯杰郑涛
申请(专利权)人:福建新大陆软件工程有限公司
类型:发明
国别省市:

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

1