CN112732809B - 一种etl系统及基于etl系统的数据处理方法 - Google Patents
一种etl系统及基于etl系统的数据处理方法 Download PDFInfo
- Publication number
- CN112732809B CN112732809B CN202011634028.2A CN202011634028A CN112732809B CN 112732809 B CN112732809 B CN 112732809B CN 202011634028 A CN202011634028 A CN 202011634028A CN 112732809 B CN112732809 B CN 112732809B
- Authority
- CN
- China
- Prior art keywords
- processing
- data
- service
- loaded
- etl
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 15
- 238000012545 processing Methods 0.000 claims abstract description 661
- 230000006870 function Effects 0.000 claims abstract description 44
- 230000005540 biological transmission Effects 0.000 claims description 73
- 238000000034 method Methods 0.000 claims description 64
- 230000008569 process Effects 0.000 claims description 38
- 238000004590 computer program Methods 0.000 claims description 9
- 238000013075 data extraction Methods 0.000 description 8
- 238000006243 chemical reaction Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 238000007689 inspection Methods 0.000 description 5
- 230000002159 abnormal effect Effects 0.000 description 4
- 238000012790 confirmation Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/254—Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明实施例提供了一种ETL系统及基于ETL系统的数据处理方法,本方案中,将ETL系统中设备的各种功能解耦,形成实现各种功能的多个处理单元,采用运行状态服务模块存储处理单元对应的运行状态数据,需要执行ETL业务指令时,根据运行状态数据,将合适的处理单元装载至业务处理实例中,控制装载后的业务处理实例,执行ETL业务指令。本方案可根据实际情况选择合适的处理单元执行ETL业务指令,灵活分配处理资源,提高了方案的灵活性。
Description
技术领域
本发明涉及ETL技术领域,特别是涉及一种ETL系统及基于ETL系统的数据处理方法。
背景技术
ETL(Extract-Transform-Load,抽取-转换-加载),用来描述将数据从来源端经过抽取、转换、加载至目的端的过程。ETL一词较常用在数据仓库,但其使用对象并不限于数据仓库。
目前,一些相关的ETL系统大多是单点式的,也就是部署一些固定的设备来进行数据抽取,部署另一些固定的设备来进行数据转换,部署再一些设备来进行数据加载。这种方案灵活性较差,例如,一些情况下出现单点故障,则整体数据处理流程停滞,也就是说,并不能灵活分配其他设备替换故障设备;再例如,一些情况下,进行数据抽取的设备超负荷运行,而进行数据转换的设备空闲,也就是说,并不能灵活分配设备的资源。
发明内容
本发明实施例的目的在于提供一种ETL系统及基于ETL系统的数据处理方法,以提高方案的灵活性。
为达到上述目的,本发明实施例提供了一种ETL系统,包括:预先生成的业务处理实例、多个处理单元和运行状态服务模块;其中,
所述运行状态服务模块中存储有每个所述处理单元对应的运行状态数据;
所述业务处理实例中包括调度模块;
所述调度模块,用于根据所述运行状态数据,从所述多个处理单元中,确定所述调度模块所在的业务处理实例对应的待装载处理单元;将所述待装载处理单元装载至所述调度模块所在的业务处理实例中,得到装载后的业务处理实例;控制所述装载后的业务处理实例,执行ETL业务指令。
可选的,所述ETL系统还包括元数据库,所述元数据库中存储有每个所述处理单元的元数据,所述元数据中包括处理单元的地址;
所述调度模块,用于根据所述元数据库中存储的每个所述处理单元的元数据,将所述待装载处理单元装载至所述调度模块所在的业务处理实例中。
可选的,所述装载后的业务处理实例中包括:所述调度模块以及多个执行器;其中,
所述执行器为:装载到业务处理实例后的处理单元;
所述调度模块,还用于根据所述运行状态数据,确定执行ETL业务指令的当前执行器,控制所述当前执行器执行ETL业务指令。
可选的,所述装载后的业务处理实例中还包括:
数据传输模块,用于在装载后的业务处理实例之间进行数据传输。
可选的,所述调度模块,还用于在所述当前执行器未处于所述调度模块所在的装载后的业务处理实例中的情况下,通过所述数据传输模块,将所述当前执行器的上一个执行器的处理后数据发送至所述当前执行器中。
可选的,所述装载后的业务处理实例中还包括:每个执行器分别对应的输入队列和输出队列;其中,
所述输入队列,用于存储其对应的执行器的待处理数据;
所述输出队列,用于存储其对应的执行器的处理后数据;
所述调度模块,还用于在所述当前执行器未处于所述调度模块所在的装载后的业务处理实例中的情况下,通过所述数据传输模块,将所述当前执行器的上一个执行器的输出队列中的数据发送至所述当前执行器的输入队列中。
可选的,所述多个处理单元包括多种处理单元,其中每种处理单元包括多个功能相同、互相备份的处理单元;
所述调度模块,还用于根据所述运行状态数据,从所述多个处理单元中,确定所述调度模块所在的业务处理实例对应的各种处理单元,并在所确定的各种处理单元中,选择待装载处理单元。
为达到上述目的,本发明实施例还提供了一种基于ETL系统的数据处理方法,应用于ETL系统中生成的业务处理实例中的调度模块,所述ETL系统中还包括:多个处理单元和运行状态服务模块;所述运行状态服务模块中存储有每个所述处理单元对应的运行状态数据;所述方法包括:
根据所述运行状态数据,从所述多个处理单元中,确定所述调度模块所在的业务处理实例对应的待装载处理单元;
将所述待装载处理单元装载至所述调度模块所在的业务处理实例中,得到装载后的业务处理实例;
控制所述装载后的业务处理实例,执行ETL业务指令。
可选的,所述装载后的业务处理实例中包括:所述调度模块以及多个执行器;其中,所述执行器为:装载到业务处理实例后的处理单元;
所述控制所述装载后的业务处理实例,执行ETL业务指令,包括:
根据所述运行状态数据,确定执行ETL业务指令的当前执行器;
控制所述当前执行器执行ETL业务指令。
可选的,所述装载后的业务处理实例中还包括:数据传输模块;
所述控制所述当前执行器执行ETL业务指令,包括:
在所述当前执行器未处于所述调度模块所在的装载后的业务处理实例中的情况下,通过所述数据传输模块,将所述当前执行器的上一个执行器的处理后数据发送至所述当前执行器中,以使所述当前执行器执行ETL业务指令。
可选的,所述装载后的业务处理实例中还包括:每个执行器分别对应的输入队列和输出队列;其中,所述输入队列,用于存储其对应的执行器的待处理数据;所述输出队列,用于存储其对应的执行器的处理后数据;
所述通过所述数据传输模块,将所述当前执行器的上一个执行器的处理后数据发送至所述当前执行器中,以使所述当前执行器执行ETL业务指令,包括:
通过所述数据传输模块,将所述当前执行器的上一个执行器的输出队列中的数据发送至所述当前执行器的输入队列中,以使所述当前执行器执行ETL业务指令。
可选的,所述根据所述运行状态数据,从所述多个处理单元中,确定所述调度模块所在的业务处理实例对应的待装载处理单元,包括:
根据所述运行状态数据,从所述多个处理单元中,确定所述调度模块所在的业务处理实例对应的各种处理单元,并在所确定的各种处理单元中,选择待装载处理单元,其中每种处理单元包括多个功能相同、互相备份的处理单元。
为达到上述目的,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一种基于ETL系统的数据处理方法。
应用本发明所示实施例,将ETL系统中设备的各种功能解耦,形成实现各种功能的多个处理单元,采用运行状态服务模块存储每个处理单元对应的运行状态数据,需要执行ETL业务指令时,根据该运行状态数据,将合适的处理单元装载至预先生成的业务处理实例中,控制装载后的业务处理实例,执行该ETL业务指令;本方案中,根据该运行状态数据可以确定ETL系统中各业务处理实例中已装载了哪些处理单元,被装载至业务处理实例的处理单元(执行器)的运行情况,可以确定哪些执行器故障或者超负荷运行,因此,根据该运行状态数据,可以选择能够执行该ETL业务指令的处理单元,将所选择的处理单元装载至业务处理实例中执行ETL业务指令,可见,本方案可以根据实际情况选择合适的处理单元执行ETL业务指令,能够灵活分配处理资源,提高了方案的灵活性。
当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的ETL系统的第一种结构示意图;
图2为本发明实施例提供的ETL系统的第二种结构示意图;
图3为本发明实施例提供的ETL系统的第三种结构示意图;
图4为本发明实施例提供的装载后的业务处理实例的第一种结构示意图;
图5为本发明实施例提供的装载后的业务处理实例的第二种结构示意图;
图6为本发明实施例提供的装载后的业务处理实例的第三种结构示意图;
图7为本发明实施例提供的一种基于ETL系统的数据处理方法的流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了达到上述目的,本发明实施例提供了一种ETL系统及基于ETL系统的数据处理方法,下面首先对该ETL系统进行详细介绍。
图1为本发明实施例提供的ETL系统的第一种结构示意图,包括:预先生成的业务处理实例100、多个处理单元200和运行状态服务模块300。其中,运行状态服务模块300中存储有每个处理单元200对应的运行状态数据。业务处理实例100中包括调度模块110。
调度模块110,用于根据所述运行状态数据,从所述多个处理单元200中,确定所述调度模块所在的业务处理实例对应的待装载处理单元;将所述待装载处理单元装载至所述调度模块所在的业务处理实例110中,得到装载后的业务处理实例;控制所述装载后的业务处理实例,执行ETL业务指令。
一个业务处理实例可以理解为一个进程,进程(Process)是计算机中的一段程序,是可以装载处理单元的容器。举例来说,可以根据实际需求,预先生成多个业务处理实例100,例如,可以生成一个或多个用于数据输入的业务处理实例,生成一个或多个用于数据输出的业务处理实例,具体不再一一列举。每个业务处理实例100中可以装载一个或多个处理单元200,本实施例中将装载至业务处理实例中后的处理单元200称为业务处理实例中的执行器。可以在一台设备中运行多个业务处理实例,也可以在不同的设备中运行相同的业务处理实例,也可以在一台设备中运行一个业务处理实例,在不同设备中运行不同的业务处理实例,设备与业务处理实例之间的对应关系不做限定。业务处理实例之间可以进行数据交互,实现数据的串行或并发处理。
处理单元200可以理解为实现功能的最小单元。ETL系统中的数据处理过程可以包括多个处理步骤,例如数据输入、数据检查、数据转换、数据输出等等;每个处理步骤中可以包括多个环节,例如,数据检查这个处理步骤中可以包括数据非空检查和数据格式检查等环节;每个环节可以对应一个处理单元,例如,一个处理单元实现数据非空检查这一功能,另一个处理单元实现数据格式检查这一功能。具体功能不再一一列举。处理单元200可以为一段应用程序,也可以为一个虚拟模块,具体形式不做限定。
运行状态模块300可以为运行状态服务器,或者也可以为运行状态数据库,等等,运行状态模块300的具体形式不做限定。一种情况下,运行状态模块300可以为ZooKeeper,ZooKeeper是一种分布式应用程序协调服务。
运行状态服务模块300中存储有每个处理单元200对应的运行状态数据,对于每个处理单元200来说,其对应的运行状态数据可以包括该处理单元200装载至各业务处理实例中的执行器的运行状态数据,如执行器所处的环节信息,例如处于执行哪个ETL业务指令中的哪个数据处理步骤中的哪个环节的信息,还可以包括执行器的状态信息,例如满载率、处理速度、是否故障等等,还可以包括执行器所在的业务处理实例的相关信息,还可以包括处理单元的软件版本等,运行状态数据的具体内容不做限定。
该运行状态数据可以理解为实时数据,各个业务处理实例可以将各自装载的处理单元(执行器)的运行情况实时上报给运行状态服务模块300,或者,运行状态服务模块300也可以每隔一段时间,对存储的运行状态数据进行更新,这样,可以使得调度模块110能够根据最新的运行状态数据,装载相应的处理单元并执行ETL业务指令,提高了方案的有效性。
可以预先配置业务处理实例100与处理单元200之间的对应关系,也就是说,可以预先配置哪些处理单元装载到哪些业务处理实例中,这样,调度模块110还可以结合预先配置的该对应关系,确定该调度模块110所在的业务处理实例对应的待装载处理单元。一些情况下,不同的业务处理实例中可以装载功能相同的处理单元,或者,另一些情况下,不同的业务处理实例中装载功能不同的处理单元,业务处理实例100与处理单元200之间的对应关系不做限定。
调度模块110能够根据上述运行状态数据,确定当前正在执行哪个ETL业务指令中的哪个数据处理步骤中的哪个环节,以及确定各执行器的满载率、处理速度、是否故障等状态信息。调度模块基于这些信息确定何时由其自身所在的业务处理实例开始执行ETL业务指令,并确定哪些处理单元适合执行该ETL业务指令,然后将确定出的处理单元装载至其自身所在的业务处理实例中,并在合适的时段执行ETL业务指令。
一种情况下,如果业务处理实例中的执行器满载率较高,或者处理速度较慢,或者出现故障,可以在该业务处理实例中再次装载同一种处理单元。例如,假设将处理单元A装载成为业务处理实例中的执行器A1,该执行器A1满载率高于设定阈值,则可以再将处理单元A装载成为业务处理实例中的执行器A2用于执行ETL业务指令。
另一种情况下,如果ETL系统中适合执行该ETL业务指令的执行器的满载率较高,或者处理速度较慢,或者出现故障,即当前ETL系统中没有合适的执行器可以执行该ETL业务指令,那么可以在该业务处理实例中装载能够处理该ETL业务指令的处理单元,装载该处理单元后的业务处理实例可以执行该ETL业务指令。
又一种情况下,如果ETL系统中还没有业务处理实例装载了能够处理该ETL业务指令的处理单元,那么可以在该业务处理实例中装载能够处理该ETL业务指令的处理单元,装载该处理单元后的业务处理实例可以执行该ETL业务指令。
一种实施方式中,可以对处理单元进行冗余备份,这样,ETL系统中包括多种处理单元,其中每种处理单元包括多个功能相同、互相备份的处理单元。处理单元200对应的运行状态数据还可以包括处理单元的被装载情况、是否故障等状态信息。被装载情况可以包括:该处理单元被装载至哪些业务处理实例中、当前同时装载该处理单元的业务处理实例的数量等信息。这种实施方式中,调度模块110可以根据运行状态数据,从所述多个处理单元中,确定所述调度模块所在的业务处理实例对应的各种处理单元,并在所确定的各种处理单元中,选择待装载处理单元。
假设对处理单元进行冗余备份后,存在3个相同的处理单元1-3能够实现功能1,存在4个相同的处理单元4-7能够实现功能2,存在3个相同的处理单元8-10能够实现功能3。假设调度模块110确定其所在的业务处理实例需要实现功能1-3,则调度模块110可以根据处理单元1-3的被装载情况、是否故障等状态信息,从处理单元1-3中确定一个待装载处理单元;根据处理单元4-7的被装载情况、是否故障等状态信息,从处理单元4-7中确定一个待装载处理单元;根据处理单元8-10的被装载情况、是否故障等状态信息,从处理单元8-10中确定一个待装载处理单元。然后将所确定的三个待装载处理单元装载到调度模块110确定所在的业务处理实例中,由该业务处理实例执行相应的ETL业务指令。
对处理单元进行冗余备份,这样,如果部分处理单元故障或者满载(满载可以理解为:当前同时装载该处理单元的业务处理实例的数量达到上限),则可以由具有相同功能的其他处理单元替代故障或者满载的处理单元。也就是说,可以通过备份的处理单元实现负载均衡,延期上述例子,存在3个相同的处理单元1-3能够实现功能1,假设处理单元1已满载、处理单元2空闲,则可以将处理单元2装载至业务处理实例中执行相应的ETL业务指令,实现了负载均衡。此外,还可以通过备份的处理单元实现交叉热备或主从热备,假设处理单元1故障、处理单元2未故障,则可以将处理单元2装载至业务处理实例中执行相应的ETL业务指令,实现了交叉热备或主从热备。
或者,也可以在装载后的业务处理实例执行ETL业务指令的过程中采用负载均衡、交叉热备、主从热备等方式。例如,装载后的业务处理实例中,相同功能的执行器可以有多个,对于具有相同功能的执行器来说,可以按照这些执行器的繁忙程度,优先将数据发送至繁忙程度低的执行器来处理,这样,实现了负载均衡。
再例如,可以对执行器进行交叉热备,具有相同功能的各执行器可以对数据进行并行处理。对于具有相同功能的执行器来说,如果其中某个执行器故障,其他执行器在对自身数据进行处理的同时,还可以对该故障执行器的数据进行处理。
再例如,可以对执行器进行主从热备,主执行器未故障的情况下,由主执行器进行数据处理,主执行器故障的情况下,备用执行器升级为主执行器继续进行数据处理,原主执行器故障恢复后,可以成为备用执行器。或者,原主执行器故障恢复后,也可以继续作为主执行器进行数据处理,具体的主备策略不做限定。
一种实施方式中,参考图2所示,ETL系统中还可以包括元数据库400,元数据库400中存储有每个处理单元200的元数据,所述元数据中包括处理单元200的地址;调度模块110用于根据所述元数据库中存储的每个处理单元200的元数据,将所述待装载处理单元装载至调度模块110所在的业务处理实例中。
举例来说,元数据库400可以为MPP(Massively Parallel Processing,大规模并行处理)数据库,数据库的具体形式不做限定。处理单元的元数据可以包括处理单元的地址,例如,处理单元的物理地址(如处理单元位于哪台设备中)、处理单元的IP(InternetProtocol,互联网协议)地址、等等;处理单元的元数据还可以包括各处理单元间的处理顺序,元数据的具体内容不做限定。元数据库中还可以存储有ETL系统中的数据处理流程,例如,先进行数据抽取,再进行数据转换,最后进行数据加载,数据抽取过程中先进行数据输入、再进行数据检查等等。元数据库400存储的数据不做限定。
一种情况下,ETL系统启动后,运行状态服务模块300可以通过加载元数据库,获取元数据库存储的各类数据信息。调度模块110,可以根据元数据库400中存储的元数据,获知处理单元的存储地址,从而将处理单元装载至该调度模块110所在的业务处理实例中。
一种实施方式中,参考图3所示,上述装载后的业务处理实例中可以包括:调度模块110以及多个执行器120;其中,
执行器120为:装载到业务处理实例后的处理单元200;
调度模块110,还用于根据所述运行状态数据,确定执行ETL业务指令的当前执行器,控制所述当前执行器执行ETL业务指令。
调度模块110可以控制其所在业务处理实例中的每个执行器的运行情况,例如执行器的工作、停止、更新等各种运行情况。调度模块110还可以根据上述运行状态数据确定并控制数据的流向。
举例来说,可以预先配置ETL系统中的数据处理流程,例如,先进行数据抽取,再进行数据转换,最后进行数据加载,数据抽取过程中先进行数据输入、再进行数据检查等等,具体的流程不做限定。或者,该数据处理流程也可以为实时配置的(一边配置一边进行数据处理),具体配置方式不做限定。例如,可以由各业务处理实例中的调度模块110协调配置ETL系统中的数据处理流程,也可以由其他管理设备协调配置ETL系统中的数据处理流程,也可以在一台或多台设备中部署全局协调模块,该全局协调模块实时协调配置ETL系统中的数据处理流程,配置该数据处理流程的方式不再一一列举。
调度模块110可以根据上述数据处理流程以及上述运行状态数据,确定选用哪些执行器执行ETL业务指令、以及各执行器之间的执行顺序,该执行顺序可以为ETL系统中全部执行器的执行顺序,也可以为与该调度模块110所在业务处理实例相关联的执行器的执行顺序,具体不做限定。
假设装载后的业务处理实例中包括3个执行器,假设调度模块110确定出这3个执行器之间的执行顺序为:执行器1→执行器2→执行器3,则先将执行器1确定为当前执行器,控制执行器1进行数据处理,然后将执行器2确定为当前执行器,执行器1处理后的数据输入至执行器2,由执行器2进行数据处理,然后将执行器3确定为当前执行器,执行器2处理后的数据输入至执行器3,由执行器3进行数据处理。此处仅为举例说明,并不对业务处理实例中的执行器数量及顺序构成限定。
如上所述,处理单元200装载至业务处理实例中便成为业务处理实例中的执行器,上述运行状态数据中可以包括各个执行器实时处理数据的相关信息,调度模块可以根据该相关信息,使得执行器之间不会产生冲突,进而解决次序混乱、数据丢失等问题。
一种实施方式中,装载后的业务处理实例中还包括每个执行器分别对应的输入队列和/或输出队列,参考图4所示,装载后的业务处理实例中既包括输入队列,也包括输出队列,输入队列及输出队列均为可选的部分。
以图4为例来说,每个执行器120分别对应输入队列130和输出队列140;其中,输入队列130,用于存储其对应的执行器的待处理数据;输出队列140,用于存储其对应的执行器的处理后数据;也就是说,执行器120从自身连接的输入队列中取数据进行处理,并将处理后的数据存储至自身连接的输出队列中。
一种情况下,可以为每个执行器分别配置数据缓冲区,以减少数据积压阻塞情况的发生,提高整个数据处理流程的处理速度。缓冲区大小可以根据实际情况来设置。举例来说,当某个执行器的缓冲区中待处理的数据量较大时,可以将该执行器的上一个执行器的输出调整为阻塞状态,以减少数据过多积压造成内存溢出的情况。
一种实施方式中,参考图5所示,装载后的业务处理实例中还包括数据传输模块150,用于在装载后的业务处理实例之间进行数据传输。
举例来说,数据传输模块150可以采用SSL(Secure Sockets Layer,安全套接字)协议进行数据传输,这样可以提高数据传输的安全性和时序性。或者也可以采用其他传输协议,具体传输协议不做限定。
一种情况下,数据传输模块150可以为传输的每一个数据块分配唯一标识,这样,可以保证数据块之间的时序性,也能及时发现丢失数据块的情况。
一种情况下,数据传输模块150可以将数据块保存到数据暂存区中,直至数据传输模块150所在业务处理实例将这些数据块处理完成后,再将数据暂存区中保存的数据块删除。例如,数据传输模块150所在业务处理实例将这些数据块处理完成后,将处理后的数据发送至下一个业务处理实例,下一个业务处理实例确定接收到的数据不异常的情况下,向数据传输模块150所在业务处理实例反馈确认消息,数据传输模块150接收到该确认消息后,将数据暂存区中保存的数据块删除。这样,如果下一个业务处理实例确定接收到的数据异常,还可以基于数据暂存区中保存的数据块重新进行处理,而不需要重新获取数据块,节省了传输资源。
这种实施方式中,调度模块110可以在所述当前执行器未处于所述调度模块所在的装载后的业务处理实例中的情况下,通过所述数据传输模块,将所述当前执行器的上一个执行器的处理后数据发送至所述当前执行器中。
举例来说,上一个执行器将其处理后数据发送至其所在业务处理实例中的数据传输模块,该数据传输模块将该处理后数据发送至当前执行器所在业务处理实例中的数据传输模块,当前执行器所在业务处理实例中的数据传输模块再将该处理后数据发送至当前执行器。
一些情况下,数据可以在业务处理实例之间进行传输。例如,业务处理实例之间对数据进行串行处理的情况,假设先由业务处理实例1对数据进行处理,业务处理实例1再将处理后的数据发送至业务处理实例2进行处理,这种情况下,需要在业务处理实例1和业务处理实例2之间传输数据。
再例如,一些情况下,使用不同版本的软件库进行数据处理时,假设业务处理实例1使用1.0版本的软件库进行数据处理,业务处理实例2使用2.0版本的软件库进行数据处理,一些数据处理步骤只能使用1.0版本的软件库进行数据处理,另一些数据处理步骤只能使用2.0版本的软件库进行数据处理,而这些数据处理步骤之间存在交叉,这种情况下,也需要在业务处理实例1和业务处理实例2之间进行数据传输。
可见,这种情况下应用本实施方式,能够实现在同一数据处理流程中,使用不同版本的软件库,解决了不同版本的软件库冲突的问题。类似的,也可以使用不同版本的数据库、组件库等等,也能够解决不同数据库、组件库冲突的问题。
再例如,一些组件升级的情况下,假设业务处理实例1使用未升级的组件进行数据处理,业务处理实例2使用已升级的组件进行数据处理,而这些数据处理步骤之间存在交叉,这种情况下,也需要在业务处理实例1和业务处理实例2之间进行数据传输。
可见,这种情况下应用本实施方式,能够实现在数据处理过程中进行组件升级,也就是说,实现了在不停止数据处理过程的情况下进行在线升级。
业务实施之间进行数据传输的情况有多种,不再一一列举。
本实施方式中,调度模块110可以先判断当前执行器是否处于该调度模块110所在的装载后的业务处理实例中;如果是,则直接将当前执行器的上一个执行器的处理后数据发送至当前执行器中;如果否,则通过数据传输模块150,将当前执行器的上一个执行器的处理后数据发送至当前执行器中。
假设确定执行ETL业务指令的各执行器之间的执行顺序为:业务处理实例1中的执行器1→业务处理实例1中的执行器2→业务处理实例2中的执行器1→业务处理实例1中的执行器3。业务处理实例1中的调度模块先控制业务处理实例1中的执行器1进行数据处理,假设得到数据A;业务处理实例1中的调度模块将该数据A直接发送至业务处理实例1中的执行器2继续进行处理,假设得到数据A’;业务处理实例1中的调度模块通过业务处理实例1中的数据传输模块,将该数据A’发送至业务处理实例2中的执行器1继续进行处理,假设得到数据A”;业务处理实例2中的调度模块通过业务处理实例2中的数据传输模块,将该数据A”发送至业务处理实例1中的执行器3继续进行处理。
一种实施方式中,参考图6所示,装载后的业务处理实例中包括:调度模块110、执行器120、每个执行器120分别对应的输入队列130和输出队列140、以及数据传输模块150。
这种实施方式中,调度模块110可以在当前执行器未处于调度模块110所在的装载后的业务处理实例中的情况下,通过数据传输模块150,将当前执行器的上一个执行器的输出队列中的数据发送至当前执行器的输入队列中。
本实施方式中,调度模块110可以先判断当前执行器是否处于该调度模块110所在的装载后的业务处理实例中;如果是,则直接将当前执行器的上一个执行器的输出队列中的数据发送至当前执行器的输入队列中;如果否,则通过数据传输模块150,将当前执行器的上一个执行器的输出队列中的数据发送至当前执行器的输入队列中。
应用本发明所示实施例,将ETL系统中设备的各种功能解耦,形成实现各种功能的多个处理单元,采用运行状态服务模块存储每个处理单元对应的运行状态数据,需要执行ETL业务指令时,根据该运行状态数据,将合适的处理单元装载至预先生成的业务处理实例中,控制装载后的业务处理实例,执行该ETL业务指令;本方案中,根据该运行状态数据可以确定ETL系统中各业务处理实例中已装载了哪些处理单元,被装载至业务处理实例的处理单元(执行器)的运行情况,可以确定哪些执行器故障或者超负荷运行,因此,根据该运行状态数据,可以选择能够执行该ETL业务指令的处理单元,将所选择的处理单元装载至业务处理实例中执行ETL业务指令,可见,本方案可以根据实际情况选择合适的处理单元执行ETL业务指令,能够灵活分配处理资源,提高了方案的灵活性。
一些相关的ETL系统大多是单点式的,这些ETL系统至少存在如下技术问题:(1)、即便采用多线程技术,但处理能力仍有限,并不适用于一些大数据场景;(2)、通常会发生一些单点故障;(3)、存在软件库版本冲突的问题;(4)、不能在数据处理过程中进行组件升级。
而应用本发明实施例,将处理单元全分布式组装,全分布式可以理解为组装积木的方式,将处理单元全部打散,处理单元全部解耦,可以任意组合装载到不同的业务处理实例里。业务处理实例中、以及各业务处理实例之间可以通过调度模块来协调运行。这样,(1)、可以灵活分配处理资源,适用于大数据场景。(2)、通过对处理单元进行备份,可以实现负载均衡、以及交叉热备或主从热备,减少单点故障造成的影响。(3)、通过业务处理实例之间的数据传输,可以解决软件库版本冲突的问题;(4)、通过业务处理实例之间的数据传输,还可以实现在数据处理过程中进行组件升级(参考实施例中的具体描述)。
基于ETL系统的特殊性,ETL系统中的数据处理过程要求数据有序且可靠,有序是指,数据的先后次序不能乱,可靠是指,不能丢失数据也不能有重复数据,这样才能得到准确的数据处理结果。
在分布式ETL系统中,通常需要在多台设备、多个进程中处理同一个流程的数据,这就很难实现数据有序且可靠。但本发明实施例提供的ETL系统中,运行状态服务模块中存储有每个处理单元对应的运行状态数据,业务处理实例中的调度模块根据该运行状态数据,能够控制各执行器之间的数据流向,使得数据有序且可靠,而且能够发挥分布式ETL系统的并发高性能、高可靠、完全解耦、方便维护的优势。
与上述系统实施例相对应,本发明实施例还提供了一种基于ETL系统的数据处理方法,该方法应用于ETL系统中生成的业务处理实例中的调度模块,所述ETL系统中还包括:多个处理单元和运行状态服务模块;所述运行状态服务模块中存储有每个所述处理单元对应的运行状态数据;参考图7所示,所述方法包括:
S701:根据运行状态服务模块中存储的运行状态数据,从ETL系统中包括的多个处理单元中,确定调度模块所在的业务处理实例对应的待装载处理单元。
上述系统实施例中,已详细介绍过ETL系统,本方法实施例中的相关内容可以参考上述系统实施例。
一个业务处理实例可以理解为一个进程,进程(Process)是计算机中的一段程序,是可以装载处理单元的容器。举例来说,可以根据实际需求,预先生成多个业务处理实例100,例如,可以生成一个或多个用于数据输入的业务处理实例,生成一个或多个用于数据输出的业务处理实例,具体不再一一列举。每个业务处理实例100中可以装载一个或多个处理单元200,本实施例中将装载至业务处理实例中后的处理单元200称为业务处理实例中的执行器。可以在一台设备中运行多个业务处理实例,也可以在不同的设备中运行相同的业务处理实例,也可以在一台设备中运行一个业务处理实例,在不同设备中运行不同的业务处理实例,设备与业务处理实例之间的对应关系不做限定。业务处理实例之间可以进行数据交互,实现数据的串行或并发处理。
处理单元可以理解为实现功能的最小单元。ETL系统中的数据处理过程可以包括多个处理步骤,例如数据输入、数据检查、数据转换、数据输出等等;每个处理步骤中可以包括多个环节,例如,数据检查这个处理步骤中可以包括数据非空检查和数据格式检查等环节;每个环节可以对应一个处理单元,例如,一个处理单元实现数据非空检查这一功能,另一个处理单元实现数据格式检查这一功能。具体功能不再一一列举。处理单元可以为一段应用程序,也可以为一个虚拟模块,具体形式不做限定。
运行状态模块可以为运行状态服务器,或者也可以为运行状态数据库,等等,运行状态模块的具体形式不做限定。一种情况下,运行状态模块可以为ZooKeeper,ZooKeeper是一种分布式应用程序协调服务。
运行状态服务模块300中存储有每个处理单元200对应的运行状态数据,对于每个处理单元200来说,其对应的运行状态数据可以包括该处理单元200装载至各业务处理实例中的执行器的运行状态数据,如执行器所处的环节信息,例如处于执行哪个ETL业务指令中的哪个数据处理步骤中的哪个环节的信息,还可以包括执行器的状态信息,例如满载率、处理速度、是否故障等等,还可以包括执行器所在的业务处理实例的相关信息,还可以包括处理单元的软件版本等,运行状态数据的具体内容不做限定。
该运行状态数据可以理解为实时数据,各个业务处理实例可以将各自装载的处理单元(执行器)的运行情况实时上报给运行状态服务模块,或者,运行状态服务模块也可以每隔一段时间,对存储的运行状态数据进行更新,这样,可以使得后续调度模块能够根据最新的运行状态数据,装载相应的处理单元并执行ETL业务指令,提高了方案的有效性。
可以预先配置业务处理实例与处理单元之间的对应关系,也就是说,可以预先配置哪些处理单元装载到哪些业务处理实例中,这样,调度模块还可以结合预先配置的该对应关系,确定该调度模块所在的业务处理实例对应的待装载处理单元。一些情况下,不同的业务处理实例中可以装载功能相同的处理单元,或者,另一些情况下,不同的业务处理实例中装载功能不同的处理单元,业务处理实例与处理单元之间的对应关系不做限定。
调度模块能够根据上述运行状态数据,确定当前正在执行哪个ETL业务指令中的哪个数据处理步骤中的哪个环节,以及确定各执行器的满载率、处理速度、是否故障等状态信息。调度模块基于这些信息确定何时由其自身所在的业务处理实例开始执行ETL业务指令,并确定哪些处理单元适合执行该ETL业务指令,然后将确定出的处理单元装载至其自身所在的业务处理实例中,并在合适的时段执行ETL业务指令。
一种情况下,如果业务处理实例中的执行器满载率较高,或者处理速度较慢,或者出现故障,可以在该业务处理实例中再次装载同一种处理单元。例如,假设将处理单元A装载成为业务处理实例中的执行器A1,该执行器A1满载率高于设定阈值,则可以再将处理单元A装载成为业务处理实例中的执行器A2用于执行ETL业务指令。
另一种情况下,如果ETL系统中适合执行该ETL业务指令的执行器的满载率较高,或者处理速度较慢,或者出现故障,即当前ETL系统中没有合适的执行器可以执行该ETL业务指令,那么可以在该业务处理实例中装载能够处理该ETL业务指令的处理单元,装载该处理单元后的业务处理实例可以执行该ETL业务指令。
又一种情况下,如果ETL系统中还没有业务处理实例装载了能够处理该ETL业务指令的处理单元,那么可以在该业务处理实例中装载能够处理该ETL业务指令的处理单元,装载该处理单元后的业务处理实例可以执行该ETL业务指令。
一种实施方式中,可以对处理单元进行冗余备份,这样,ETL系统中包括多种处理单元,其中每种处理单元包括多个功能相同、互相备份的处理单元。处理单元200对应的运行状态数据还可以包括处理单元的被装载情况、是否故障等状态信息。被装载情况可以包括:该处理单元被装载至哪些业务处理实例中、当前同时装载该处理单元的业务处理实例的数量等信息。这种实施方式中,S701可以包括:根据运行状态数据,从所述多个处理单元中,确定所述调度模块所在的业务处理实例对应的各种处理单元,并在所确定的各种处理单元中,选择待装载处理单元。
假设对处理单元进行冗余备份后,存在3个相同的处理单元1-3能够实现功能1,存在4个相同的处理单元4-7能够实现功能2,存在3个相同的处理单元8-10能够实现功能3。假设调度模块确定其所在的业务处理实例需要实现功能1-3,则调度模块可以根据处理单元1-3的被装载情况、是否故障等状态信息,从处理单元1-3中确定一个待装载处理单元;根据处理单元4-7的被装载情况、是否故障等状态信息,从处理单元4-7中确定一个待装载处理单元;根据处理单元8-10的被装载情况、是否故障等状态信息,从处理单元8-10中确定一个待装载处理单元。然后将所确定的三个待装载处理单元装载到调度模块确定所在的业务处理实例中,由该业务处理实例执行相应的ETL业务指令。
对处理单元进行冗余备份,这样,如果部分处理单元故障或者满载(满载可以理解为:当前同时装载该处理单元的业务处理实例的数量达到上限),则可以由具有相同功能的其他处理单元替代故障或者满载的处理单元。也就是说,可以通过备份的处理单元实现负载均衡,延期上述例子,存在3个相同的处理单元1-3能够实现功能1,假设处理单元1已满载、处理单元2空闲,则可以将处理单元2装载至业务处理实例中执行相应的ETL业务指令,实现了负载均衡。此外,还可以通过备份的处理单元实现交叉热备或主从热备,假设处理单元1故障、处理单元2未故障,则可以将处理单元2装载至业务处理实例中执行相应的ETL业务指令,实现了交叉热备或主从热备。
S702:将待装载处理单元装载至调度模块所在的业务处理实例中,得到装载后的业务处理实例。
如上所述,处理单元装载至业务处理实例中便成为业务处理实例中的执行器,执行器可以进行数据处理。
S703:控制装载后的业务处理实例,执行ETL业务指令。
一种实施方式中,所述装载后的业务处理实例中包括:所述调度模块以及多个执行器;其中,所述执行器为:装载到业务处理实例后的处理单元。这种实施方式中,S703可以包括:根据所述运行状态数据,确定执行ETL业务指令的当前执行器,控制所述当前执行器执行ETL业务指令。
调度模块可以控制其所在业务处理实例中的每个执行器的运行情况,例如执行器的工作、停止、更新等各种运行情况。调度模块还可以根据上述运行状态数据确定并控制数据的流向。
举例来说,可以预先配置ETL系统中的数据处理流程,例如,先进行数据抽取,再进行数据转换,最后进行数据加载,数据抽取过程中先进行数据输入、再进行数据检查等等,具体的流程不做限定。或者,该数据处理流程也可以为实时配置的(一边配置一边进行数据处理),具体配置方式不做限定。例如,可以由各业务处理实例中的调度模块协调配置ETL系统中的数据处理流程,也可以由其他管理设备协调配置ETL系统中的数据处理流程,也可以在一台或多台设备中部署全局协调模块,该全局协调模块实时协调配置ETL系统中的数据处理流程,配置该数据处理流程的方式不再一一列举。
调度模块可以根据上述数据处理流程以及上述运行状态数据,确定选用哪些执行器执行ETL业务指令、以及各执行器之间的执行顺序,该执行顺序可以为ETL系统中全部执行器的执行顺序,也可以为与该调度模块所在业务处理实例相关联的执行器的执行顺序,具体不做限定。
假设装载后的业务处理实例中包括3个执行器,假设调度模块110确定出这3个执行器之间的执行顺序为:执行器1→执行器2→执行器3,则先将执行器1确定为当前执行器,控制执行器1进行数据处理,然后将执行器2确定为当前执行器,执行器1处理后的数据输入至执行器2,由执行器2进行数据处理,然后将执行器3确定为当前执行器,执行器2处理后的数据输入至执行器3,由执行器3进行数据处理。此处仅为举例说明,并不对业务处理实例中的执行器数量及顺序构成限定。
如上所述,处理单元装载至业务处理实例中便成为业务处理实例中的执行器,上述运行状态数据中可以包括各个执行器实时处理数据的相关信息,调度模块可以根据该相关信息,使得执行器之间不会产生冲突,进而解决次序混乱、数据丢失等问题。
一种实施方式中,所述装载后的业务处理实例中还包括:数据传输模块;所述控制所述当前执行器执行ETL业务指令,包括:
在所述当前执行器未处于所述调度模块所在的装载后的业务处理实例中的情况下,通过所述数据传输模块,将所述当前执行器的上一个执行器的处理后数据发送至所述当前执行器中,以使所述当前执行器执行ETL业务指令。
举例来说,数据传输模块可以采用SSL协议进行数据传输,这样可以提高数据传输的安全性和时序性。或者也可以采用其他传输协议,具体传输协议不做限定。
一种情况下,数据传输模块可以为传输的每一个数据块分配唯一标识,这样,可以保证数据块之间的时序性,也能及时发现丢失数据块的情况。
一种情况下,数据传输模块可以将数据块保存到数据暂存区中,直至数据传输模块所在业务处理实例将这些数据块处理完成后,再将数据暂存区中保存的数据块删除。例如,数据传输模块所在业务处理实例将这些数据块处理完成后,将处理后的数据发送至下一个业务处理实例,下一个业务处理实例确定接收到的数据不异常的情况下,向数据传输模块所在业务处理实例反馈确认消息,数据传输模块接收到该确认消息后,将数据暂存区中保存的数据块删除。这样,如果下一个业务处理实例确定接收到的数据异常,还可以基于数据暂存区中保存的数据块重新进行处理,而不需要重新获取数据块,节省了传输资源。
这种实施方式中,调度模块可以在所述当前执行器未处于所述调度模块所在的装载后的业务处理实例中的情况下,通过所述数据传输模块,将所述当前执行器的上一个执行器的处理后数据发送至所述当前执行器中。
举例来说,上一个执行器将其处理后数据发送至其所在业务处理实例中的数据传输模块,该数据传输模块将该处理后数据发送至当前执行器所在业务处理实例中的数据传输模块,当前执行器所在业务处理实例中的数据传输模块再将该处理后数据发送至当前执行器。
一些情况下,数据可以在业务处理实例之间进行传输。例如,业务处理实例之间对数据进行串行处理的情况,假设先由业务处理实例1对数据进行处理,业务处理实例1再将处理后的数据发送至业务处理实例2进行处理,这种情况下,需要在业务处理实例1和业务处理实例2之间传输数据。
再例如,一些情况下,使用不同版本的软件库进行数据处理时,假设业务处理实例1使用1.0版本的软件库进行数据处理,业务处理实例2使用2.0版本的软件库进行数据处理,一些数据处理步骤只能使用1.0版本的软件库进行数据处理,另一些数据处理步骤只能使用2.0版本的软件库进行数据处理,而这些数据处理步骤之间存在交叉,这种情况下,也需要在业务处理实例1和业务处理实例2之间进行数据传输。
可见,这种情况下应用本实施方式,能够实现在同一数据处理流程中,使用不同版本的软件库,解决了不同版本的软件库冲突的问题。类似的,也可以使用不同版本的数据库、组件库等等,也能够解决不同数据库、组件库冲突的问题。
再例如,一些组件升级的情况下,假设业务处理实例1使用未升级的组件进行数据处理,业务处理实例2使用已升级的组件进行数据处理,而这些数据处理步骤之间存在交叉,这种情况下,也需要在业务处理实例1和业务处理实例2之间进行数据传输。
可见,这种情况下应用本实施方式,能够实现在数据处理过程中进行组件升级,也就是说,实现了在不停止数据处理过程的情况下进行在线升级。
业务实施之间进行数据传输的情况有多种,不再一一列举。
本实施方式中,调度模块可以先判断当前执行器是否处于该调度模块所在的装载后的业务处理实例中;如果是,则直接将当前执行器的上一个执行器的处理后数据发送至当前执行器中;如果否,则通过数据传输模块,将当前执行器的上一个执行器的处理后数据发送至当前执行器中。
假设确定执行ETL业务指令的各执行器之间的执行顺序为:业务处理实例1中的执行器1→业务处理实例1中的执行器2→业务处理实例2中的执行器1→业务处理实例1中的执行器3。业务处理实例1中的调度模块先控制业务处理实例1中的执行器1进行数据处理,假设得到数据A;业务处理实例1中的调度模块将该数据A直接发送至业务处理实例1中的执行器2继续进行处理,假设得到数据A’;业务处理实例1中的调度模块通过业务处理实例1中的数据传输模块,将该数据A’发送至业务处理实例2中的执行器1继续进行处理,假设得到数据A”;业务处理实例2中的调度模块通过业务处理实例2中的数据传输模块,将该数据A”发送至业务处理实例1中的执行器3继续进行处理。
一种实施方式中,所述装载后的业务处理实例中还包括:每个执行器分别对应的输入队列和输出队列;其中,所述输入队列,用于存储其对应的执行器的待处理数据;所述输出队列,用于存储其对应的执行器的处理后数据;
所述通过所述数据传输模块,将所述当前执行器的上一个执行器的处理后数据发送至所述当前执行器中,以使所述当前执行器执行ETL业务指令,包括:
通过所述数据传输模块,将所述当前执行器的上一个执行器的输出队列中的数据发送至所述当前执行器的输入队列中,以使所述当前执行器执行ETL业务指令。
上述一种实施方式中,对处理单元进行了冗余备份,从备份的处理单元中挑选合适的处理单元装载至业务处理实例中。或者,另一种实施方式中,也可以在装载后的业务处理实例中对执行器进行冗余备份,例如,装载后的业务处理实例中,相同功能的执行器可以有多个。这样,装载后的业务处理实例执行ETL业务指令的过程中可以采用负载均衡、交叉热备、主从热备等方式。
例如,对于具有相同功能的执行器来说,可以按照这些执行器的繁忙程度,优先将数据发送至繁忙程度低的执行器来处理,这样,实现了负载均衡。
再例如,可以对执行器进行交叉热备,具有相同功能的各执行器可以对数据进行并行处理。对于具有相同功能的执行器来说,如果其中某个执行器故障,其他执行器在对自身数据进行处理的同时,还可以对该故障执行器的数据进行处理。
再例如,可以对执行器进行主从热备,主执行器未故障的情况下,由主执行器进行数据处理,主执行器故障的情况下,备用执行器升级为主执行器继续进行数据处理,原主执行器故障恢复后,可以成为备用执行器。或者,原主执行器故障恢复后,也可以继续作为主执行器进行数据处理,具体的主备策略不做限定。
应用本发明所示实施例,将ETL系统中设备的各种功能解耦,形成实现各种功能的多个处理单元,采用运行状态服务模块存储每个处理单元对应的运行状态数据,需要执行ETL业务指令时,根据该运行状态数据,将合适的处理单元装载至预先生成的业务处理实例中,控制装载后的业务处理实例,执行该ETL业务指令;本方案中,根据该运行状态数据可以确定ETL系统中各业务处理实例中已装载了哪些处理单元,被装载至业务处理实例的处理单元(执行器)的运行情况,可以确定哪些执行器故障或者超负荷运行,因此,根据该运行状态数据,可以选择能够执行该ETL业务指令的处理单元,将所选择的处理单元装载至业务处理实例中执行ETL业务指令,可见,本方案可以根据实际情况选择合适的处理单元执行ETL业务指令,能够灵活分配处理资源,提高了方案的灵活性。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一种基于ETL系统的数据处理方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一种基于ETL系统的数据处理方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例、计算机可读存储介质实施例、以及计算机程序产品实施例而言,由于其基本相似于系统实施例,所以描述的比较简单,相关之处参见系统实施例的部分说明即可。
以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (13)
1.一种ETL系统,其特征在于,包括:预先生成的业务处理实例、多个处理单元和运行状态服务模块;其中,
所述运行状态服务模块中存储有每个所述处理单元对应的运行状态数据;
所述业务处理实例中包括调度模块;
所述调度模块,用于根据所述运行状态数据,从所述多个处理单元中,确定所述调度模块所在的业务处理实例对应的待装载处理单元;将所述待装载处理单元装载至所述调度模块所在的业务处理实例中,得到装载后的业务处理实例;控制所述装载后的业务处理实例,执行ETL业务指令;
其中,所述ETL业务指令中的一个数据处理步骤中的一个环节对应一个处理单元。
2.根据权利要求1所述的ETL系统,其特征在于,还包括元数据库,所述元数据库中存储有每个所述处理单元的元数据,所述元数据中包括处理单元的地址;
所述调度模块,用于根据所述元数据库中存储的每个所述处理单元的元数据,将所述待装载处理单元装载至所述调度模块所在的业务处理实例中。
3.根据权利要求1所述的ETL系统,其特征在于,所述装载后的业务处理实例中包括:所述调度模块以及多个执行器;其中,
所述执行器为:装载到业务处理实例后的处理单元;
所述调度模块,还用于根据所述运行状态数据和各执行器之间的执行顺序,从所述装载后的业务处理实例包含的多个执行器中确定执行ETL业务指令的当前执行器,控制所述当前执行器执行ETL业务指令。
4.根据权利要求3所述的ETL系统,其特征在于,所述装载后的业务处理实例中还包括:
数据传输模块,用于在装载后的业务处理实例之间进行数据传输。
5.根据权利要求4所述的ETL系统,其特征在于,
所述调度模块,还用于在所述当前执行器未处于所述调度模块所在的装载后的业务处理实例中的情况下,通过所述数据传输模块,将所述当前执行器的上一个执行器的处理后数据发送至所述当前执行器中。
6.根据权利要求4所述的ETL系统,其特征在于,所述装载后的业务处理实例中还包括:每个执行器分别对应的输入队列和输出队列;其中,
所述输入队列,用于存储其对应的执行器的待处理数据;
所述输出队列,用于存储其对应的执行器的处理后数据;
所述调度模块,还用于在所述当前执行器未处于所述调度模块所在的装载后的业务处理实例中的情况下,通过所述数据传输模块,将所述当前执行器的上一个执行器的输出队列中的数据发送至所述当前执行器的输入队列中。
7.根据权利要求1所述的ETL系统,其特征在于,所述多个处理单元包括多种处理单元,其中每种处理单元包括多个功能相同、互相备份的处理单元;
所述调度模块,还用于根据所述运行状态数据,从所述多个处理单元中,确定所述调度模块所在的业务处理实例对应的各种处理单元,并在所确定的各种处理单元中,选择待装载处理单元。
8.一种基于ETL系统的数据处理方法,其特征在于,应用于ETL系统中生成的业务处理实例中的调度模块,所述ETL系统中还包括:多个处理单元和运行状态服务模块;所述运行状态服务模块中存储有每个所述处理单元对应的运行状态数据;所述方法包括:
根据所述运行状态数据,从所述多个处理单元中,确定所述调度模块所在的业务处理实例对应的待装载处理单元;
将所述待装载处理单元装载至所述调度模块所在的业务处理实例中,得到装载后的业务处理实例;
控制所述装载后的业务处理实例,执行ETL业务指令;
其中,所述ETL业务指令中的一个数据处理步骤中的一个环节对应一个处理单元。
9.根据权利要求8所述的方法,其特征在于,所述装载后的业务处理实例中包括:所述调度模块以及多个执行器;其中,所述执行器为:装载到业务处理实例后的处理单元;
所述控制所述装载后的业务处理实例,执行ETL业务指令,包括:
根据所述运行状态数据和各执行器之间的执行顺序,从所述装载后的业务处理实例包含的多个执行器中确定执行ETL业务指令的当前执行器;
控制所述当前执行器执行ETL业务指令。
10.根据权利要求9所述的方法,其特征在于,所述装载后的业务处理实例中还包括:数据传输模块;
所述控制所述当前执行器执行ETL业务指令,包括:
在所述当前执行器未处于所述调度模块所在的装载后的业务处理实例中的情况下,通过所述数据传输模块,将所述当前执行器的上一个执行器的处理后数据发送至所述当前执行器中,以使所述当前执行器执行ETL业务指令。
11.根据权利要求10所述的方法,其特征在于,所述装载后的业务处理实例中还包括:每个执行器分别对应的输入队列和输出队列;其中,所述输入队列,用于存储其对应的执行器的待处理数据;所述输出队列,用于存储其对应的执行器的处理后数据;
所述通过所述数据传输模块,将所述当前执行器的上一个执行器的处理后数据发送至所述当前执行器中,以使所述当前执行器执行ETL业务指令,包括:
通过所述数据传输模块,将所述当前执行器的上一个执行器的输出队列中的数据发送至所述当前执行器的输入队列中,以使所述当前执行器执行ETL业务指令。
12.根据权利要求8所述的方法,其特征在于,所述根据所述运行状态数据,从所述多个处理单元中,确定所述调度模块所在的业务处理实例对应的待装载处理单元,包括:
根据所述运行状态数据,从所述多个处理单元中,确定所述调度模块所在的业务处理实例对应的各种处理单元,并在所确定的各种处理单元中,选择待装载处理单元,其中每种处理单元包括多个功能相同、互相备份的处理单元。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求8-12任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011634028.2A CN112732809B (zh) | 2020-12-31 | 2020-12-31 | 一种etl系统及基于etl系统的数据处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011634028.2A CN112732809B (zh) | 2020-12-31 | 2020-12-31 | 一种etl系统及基于etl系统的数据处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112732809A CN112732809A (zh) | 2021-04-30 |
CN112732809B true CN112732809B (zh) | 2023-08-04 |
Family
ID=75608544
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011634028.2A Active CN112732809B (zh) | 2020-12-31 | 2020-12-31 | 一种etl系统及基于etl系统的数据处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112732809B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09146883A (ja) * | 1995-11-21 | 1997-06-06 | Nec Software Ltd | トランザクション処理タスク数制御方式 |
CN102236580A (zh) * | 2010-04-26 | 2011-11-09 | 阿里巴巴集团控股有限公司 | 为etl任务分配节点的方法和调度系统 |
CN103677967A (zh) * | 2012-09-03 | 2014-03-26 | 阿里巴巴集团控股有限公司 | 一种数据库的远程数据服务系统及任务调度方法 |
CN104050042A (zh) * | 2014-05-30 | 2014-09-17 | 北京先进数通信息技术股份公司 | Etl作业的资源分配方法及装置 |
CN107145576A (zh) * | 2017-05-08 | 2017-09-08 | 科技谷(厦门)信息技术有限公司 | 一种支持可视化和流程化的大数据etl调度系统 |
KR101806497B1 (ko) * | 2016-08-03 | 2017-12-08 | (주) 이노트리 | Etl 잡 프로세스를 분산 수행하기 위한 미들웨어 장치 및 그 방법 |
CN107730077A (zh) * | 2017-09-13 | 2018-02-23 | 平安科技(深圳)有限公司 | 节点任务数据显示方法、装置、存储介质和计算机设备 |
CN109408236A (zh) * | 2018-10-22 | 2019-03-01 | 福建南威软件有限公司 | 一种etl在集群上的任务负载均衡方法 |
CN111080243A (zh) * | 2019-12-05 | 2020-04-28 | 北京百度网讯科技有限公司 | 业务处理的方法、装置、系统、电子设备及存储介质 |
CN111510468A (zh) * | 2019-01-30 | 2020-08-07 | 杭州海康威视数字技术股份有限公司 | 计算任务的调度方法、装置、服务器及计算系统 |
CN111694888A (zh) * | 2020-06-12 | 2020-09-22 | 谷云科技(广州)有限责任公司 | 基于微服务架构的分布式etl数据交换系统及方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7058615B2 (en) * | 2003-04-24 | 2006-06-06 | International Business Machines Corporation | Scheduling for data warehouse ETL processing and data mining execution |
US8214324B2 (en) * | 2009-08-25 | 2012-07-03 | International Business Machines Corporation | Generating extract, transform, and load (ETL) jobs for loading data incrementally |
US10353965B2 (en) * | 2016-09-26 | 2019-07-16 | Splunk Inc. | Data fabric service system architecture |
-
2020
- 2020-12-31 CN CN202011634028.2A patent/CN112732809B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09146883A (ja) * | 1995-11-21 | 1997-06-06 | Nec Software Ltd | トランザクション処理タスク数制御方式 |
CN102236580A (zh) * | 2010-04-26 | 2011-11-09 | 阿里巴巴集团控股有限公司 | 为etl任务分配节点的方法和调度系统 |
CN103677967A (zh) * | 2012-09-03 | 2014-03-26 | 阿里巴巴集团控股有限公司 | 一种数据库的远程数据服务系统及任务调度方法 |
CN104050042A (zh) * | 2014-05-30 | 2014-09-17 | 北京先进数通信息技术股份公司 | Etl作业的资源分配方法及装置 |
KR101806497B1 (ko) * | 2016-08-03 | 2017-12-08 | (주) 이노트리 | Etl 잡 프로세스를 분산 수행하기 위한 미들웨어 장치 및 그 방법 |
CN107145576A (zh) * | 2017-05-08 | 2017-09-08 | 科技谷(厦门)信息技术有限公司 | 一种支持可视化和流程化的大数据etl调度系统 |
CN107730077A (zh) * | 2017-09-13 | 2018-02-23 | 平安科技(深圳)有限公司 | 节点任务数据显示方法、装置、存储介质和计算机设备 |
CN109408236A (zh) * | 2018-10-22 | 2019-03-01 | 福建南威软件有限公司 | 一种etl在集群上的任务负载均衡方法 |
CN111510468A (zh) * | 2019-01-30 | 2020-08-07 | 杭州海康威视数字技术股份有限公司 | 计算任务的调度方法、装置、服务器及计算系统 |
CN111080243A (zh) * | 2019-12-05 | 2020-04-28 | 北京百度网讯科技有限公司 | 业务处理的方法、装置、系统、电子设备及存储介质 |
CN111694888A (zh) * | 2020-06-12 | 2020-09-22 | 谷云科技(广州)有限责任公司 | 基于微服务架构的分布式etl数据交换系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112732809A (zh) | 2021-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108664496B (zh) | 数据迁移方法及装置 | |
CN107666525B (zh) | 集群容器ip分配的方法和装置 | |
US11663085B2 (en) | Application backup and management | |
CN109683826B (zh) | 用于分布式存储系统的扩容方法和装置 | |
CN110825420B (zh) | 分布式集群的配置参数更新方法、装置、设备及存储介质 | |
US8615588B2 (en) | Accelerate copying of virtual machine images | |
EP2354875B1 (en) | Peer-to-Peer exchange of data resources in a control system | |
US10839377B2 (en) | Syncing blockchain nodes with snapshots | |
CN100570607C (zh) | 用于多处理环境中的数据聚合的方法和系统 | |
US11106454B2 (en) | Software update control device, software update control method, and recording medium having software update control program stored thereon | |
CN109144785B (zh) | 用于备份数据的方法和装置 | |
CN107480014B (zh) | 一种高可用设备切换方法及装置 | |
CN113569987A (zh) | 模型训练方法和装置 | |
CN106657167B (zh) | 管理服务器、服务器集群、以及管理方法 | |
CN109558260B (zh) | Kubernetes故障排除系统、方法、设备及介质 | |
CN110895488B (zh) | 任务调度方法及装置 | |
CN110162334B (zh) | 一种代码管理方法、装置及存储介质 | |
CN109739435B (zh) | 文件存储和更新方法及装置 | |
US10305817B1 (en) | Provisioning system and method for a distributed computing environment using a map reduce process | |
KR102114339B1 (ko) | 액티브/스탠바이 모델을 지원하는 쿠버네티스 시스템의 동작 방법 | |
CN115297124B (zh) | 一种系统运维管理方法、装置及电子设备 | |
CN116627721A (zh) | 基于混合云的云原生数据库恢复方法、设备及存储介质 | |
US11042454B1 (en) | Restoration of a data source | |
CN114328033A (zh) | 保持高可用设备组业务配置一致性的方法及装置 | |
CN112579550B (zh) | 一种分布式文件系统的元数据信息同步方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |