CN109522004A - 一种etl流程在分布式架构运行的方法 - Google Patents
一种etl流程在分布式架构运行的方法 Download PDFInfo
- Publication number
- CN109522004A CN109522004A CN201811329559.3A CN201811329559A CN109522004A CN 109522004 A CN109522004 A CN 109522004A CN 201811329559 A CN201811329559 A CN 201811329559A CN 109522004 A CN109522004 A CN 109522004A
- Authority
- CN
- China
- Prior art keywords
- component
- data
- storm
- etl
- spout
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
Abstract
本发明涉及一种ETL流程在分布式架构运行的方法。通过采用Strom技术,以及在不修改组件原有逻辑,在发布运行的时候,将组件构造成Strom的Spout、Blot,然后构建拓扑结构到Storm集群运行,可以支持ETL流程能在原有传统单节点模式下运行也可以切换到分布式架构下运行。
Description
技术领域
本发明涉及一种ETL流程在分布式架构运行的方法。
背景技术
Storm 是一个自由开源的,分布式的,可靠的,容错的数据流处理***,擅长处理海量数据,适用于数据实时处理而非批处理。它会把工作任务委托给不同类型的组件,每个组件负责处理一项简单特定的任务。Storm 集群的输入流由一个被称作 Spout 的组件管理,Spout 把数据传递给 Bolt, Bolt 要么把数据保存到某种存储器,要么把数据传递给其它的 Bolt。
现有技术如申请号(CN201810090048.4)的发明,一种完全基于分布式内存计算的ETL***,本***包括数据抽取模块、数据处理模块、数据整合模块、数据输出模块、元数据管理模块5大功能模块和一个ETL作业流程引擎;元数据管理模块,并输出元数据控制文件供ETL作业流程引擎使用;ETL作业流程引擎,读取元数据控制文件,计算各节点所处的层数,并将各作业节点按层数进行分层;ETL作业流程引擎按照由低层到高层的执行路径依次运行各层的ETL作业,最终完成ETL作业流程图中所有ETL作业的执行。本***基于Spark和Alluxio技术,提高了***架构的弹性,简化了数据管理,提升了数据加工性能。本申请提案采取使用Storm,可以使用流程原有数据格式。
现有技术如申请号(CN201510425219.0)的发明,公开了一种实时ETL***及方法,包括ETL客户端、分布式数据缓存队列、分布式状态管理机和ETL群集。所述ETL客户端,用于设计ETL流程、测试ETL流程和发布ETL流程;所述分布式数据缓存队列,用于缓存输入数据;所述分布式状态管理机,用于存储***状态信息;所述ETL群集,用于按行从数据源获取输入数据,并将输入数据缓存到分布式数据缓存队列中,然后对输入数据进行处理。
发明内容
本发明的目的在于解决ETL流程能在原有传统的单节点模式下运行切换到分布式架构下运行的兼容问题,而提供一种ETL流程在分布式架构运行的方法。
为实现上述目的,本发明的技术方案是:一种ETL流程在分布式架构运行的方法,包括如下步骤,
步骤S1、识别各组件的类型,对于数据输入类的组件构造成Storm的Spout组件,其余类的组件构造成Storm的Blot组件,根据流程中组件间的连接关系,构造Storm的拓扑,配置各个组件需要的线程数;其中,Spout组件调用数据输入类的运行逻辑,获取数据并加入输出数据缓存队列,定时或当队列达到预定量时就推送到下一个组件;Bolt组件不断监听是否接收到数据传递Tuple,接收到时则调用其原有ETL组件的运行逻辑;
步骤S2、发送拓扑至Storm集群里,使得Storm自动分配组件生成运行实例到集群的各个节点上;
步骤S3、Spout与Bolt,Blot与Blot之间的数据传递Tuple直接使用原ETL流程组件的处理后的数据;当组件接收到Tuple的时候,先判断是否是定时标识flag,如果flag不为空,则将当前组件的输出数据缓存队列全部推送到下一组件并清掉当前缓存;如果flag为空且当前Tuple为待处理数据时,则当前组件处理这条数据,并加入输出数据缓存队列;
步骤S4、当有数据没成功处理完,可通过Strom的自动重发,由Spout组件重新发送失败的数据到下一组件处理。
相较于现有技术,本发明具有以下有益效果:本发明通过采用Strom技术,以及在不修改组件原有逻辑,在发布运行的时候,将组件构造成Strom的Spout、Blot,然后构建拓扑结构到Storm集群运行,可以支持ETL流程能在原有传统单节点模式下运行也可以切换到分布式架构下运行。
附图说明
图1为本发明方法流程图。
具体实施方式
下面结合附图,对本发明的技术方案进行具体说明。
本发明提供了一种ETL流程在分布式架构运行的方法,包括如下步骤,
步骤S1、识别各组件的类型,对于数据输入类的组件构造成Storm的Spout组件,其余类的组件构造成Storm的Blot组件,根据流程中组件间的连接关系,构造Storm的拓扑,配置各个组件需要的线程数;其中,Spout组件调用数据输入类的运行逻辑,获取数据并加入输出数据缓存队列,定时或当队列达到预定量时就推送到下一个组件;Bolt组件不断监听是否接收到数据传递Tuple,接收到时则调用其原有ETL组件的运行逻辑;
步骤S2、发送拓扑至Storm集群里,使得Storm自动分配组件生成运行实例到集群的各个节点上;
步骤S3、Spout与Bolt,Blot与Blot之间的数据传递Tuple直接使用原ETL流程组件的处理后的数据;当组件接收到Tuple的时候,先判断是否是定时标识flag,如果flag不为空,则将当前组件的输出数据缓存队列全部推送到下一组件并清掉当前缓存;如果flag为空且当前Tuple为待处理数据时,则当前组件处理这条数据,并加入输出数据缓存队列;
步骤S4、当有数据没成功处理完,可通过Strom的自动重发,由Spout组件重新发送失败的数据到下一组件处理。
以下为本发明的具体实施实例。
本发明的ETL流程在分布式架构运行的方法,如图1所示,具体实现如下:
1、原ETL流程各组件可单独线程运行和各自的处理数据、取数据、推数据方法,组件支持批量处理。
2、识别各组件的类型,对于数据输入类的组件构造成Storm的Spout组件,其他组件构造成Storm的Blot组件,根据流程中组件间的连接关系,构造Storm的拓扑,可配置各个组件需要的线程数。Spout组件调用数据输入类的运行逻辑,取数据并加入输出数据缓存队列,定时或当队列达到一定量时就推送到下一个组件。Bolt组件不断监听是否接收到Tuple,接收到时则调用其原有ETL组件的运行逻辑。
3、发送拓扑至Storm集群里,Storm会自动分配组件生成运行实例到集群的各个节点上。
4、Spout与Bolt,Blot与Blot之间的数据传递Tuple直接使用原ETL流程组件的处理后的数据。当组件接收到Tuple的时候,先判断是否是定时标识flag,如果flag不为空,则将当前组件的输出数据缓存队列全部推送到下一组件并清掉当前缓存;如果flag为空且当前tuple为待处理数据时,则当前组件处理这条数据,并加入输出数据缓存队列。
5、当有数据没成功处理完,可以通过Strom的自动重发,由Spout组件重新发送失败的数据到下一组件处理。
以上是本发明的较佳实施例,凡依本发明技术方案所作的改变,所产生的功能作用未超出本发明技术方案的范围时,均属于本发明的保护范围。
Claims (1)
1.一种ETL流程在分布式架构运行的方法,其特征在于,包括如下步骤,
步骤S1、识别各组件的类型,对于数据输入类的组件构造成Storm的Spout组件,其余类的组件构造成Storm的Blot组件,根据流程中组件间的连接关系,构造Storm的拓扑,配置各个组件需要的线程数;其中,Spout组件调用数据输入类的运行逻辑,获取数据并加入输出数据缓存队列,定时或当队列达到预定量时就推送到下一个组件;Bolt组件不断监听是否接收到数据传递Tuple,接收到时则调用其原有ETL组件的运行逻辑;
步骤S2、发送拓扑至Storm集群里,使得Storm自动分配组件生成运行实例到集群的各个节点上;
步骤S3、Spout与Bolt,Blot与Blot之间的数据传递Tuple直接使用原ETL流程组件的处理后的数据;当组件接收到Tuple的时候,先判断是否是定时标识flag,如果flag不为空,则将当前组件的输出数据缓存队列全部推送到下一组件并清掉当前缓存;如果flag为空且当前Tuple为待处理数据时,则当前组件处理这条数据,并加入输出数据缓存队列;
步骤S4、当有数据没成功处理完,可通过Strom的自动重发,由Spout组件重新发送失败的数据到下一组件处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811329559.3A CN109522004A (zh) | 2018-11-09 | 2018-11-09 | 一种etl流程在分布式架构运行的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811329559.3A CN109522004A (zh) | 2018-11-09 | 2018-11-09 | 一种etl流程在分布式架构运行的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109522004A true CN109522004A (zh) | 2019-03-26 |
Family
ID=65773310
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811329559.3A Pending CN109522004A (zh) | 2018-11-09 | 2018-11-09 | 一种etl流程在分布式架构运行的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109522004A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112700622A (zh) * | 2020-12-21 | 2021-04-23 | 中铁二院工程集团有限责任公司 | 一种基于storm的铁路地质灾害监测大数据预处理方法及*** |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101477572A (zh) * | 2009-01-12 | 2009-07-08 | 深圳市里王智通软件有限公司 | 基于tds过渡数据存储技术的动态数据仓库的方法与*** |
US20140156707A1 (en) * | 2012-12-05 | 2014-06-05 | Hewlett-Packard Development Company, L.P. | Streaming system performance optimization |
CN104615777A (zh) * | 2015-02-27 | 2015-05-13 | 浪潮集团有限公司 | 一种基于流式计算引擎的实时数据处理方法及装置 |
CN105205105A (zh) * | 2015-08-27 | 2015-12-30 | 浪潮集团有限公司 | 一种基于storm的数据ETL***及处理方法 |
-
2018
- 2018-11-09 CN CN201811329559.3A patent/CN109522004A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101477572A (zh) * | 2009-01-12 | 2009-07-08 | 深圳市里王智通软件有限公司 | 基于tds过渡数据存储技术的动态数据仓库的方法与*** |
US20140156707A1 (en) * | 2012-12-05 | 2014-06-05 | Hewlett-Packard Development Company, L.P. | Streaming system performance optimization |
CN104615777A (zh) * | 2015-02-27 | 2015-05-13 | 浪潮集团有限公司 | 一种基于流式计算引擎的实时数据处理方法及装置 |
CN105205105A (zh) * | 2015-08-27 | 2015-12-30 | 浪潮集团有限公司 | 一种基于storm的数据ETL***及处理方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112700622A (zh) * | 2020-12-21 | 2021-04-23 | 中铁二院工程集团有限责任公司 | 一种基于storm的铁路地质灾害监测大数据预处理方法及*** |
CN112700622B (zh) * | 2020-12-21 | 2022-05-17 | 中铁二院工程集团有限责任公司 | 一种基于storm的铁路地质灾害监测大数据预处理方法及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110119311B (zh) | 一种基于fpga的分布式流计算***加速方法 | |
CN110908788B (zh) | 基于Spark Streaming的数据处理方法、装置、计算机设备及存储介质 | |
WO2020211579A1 (zh) | 一种基于分布式批量处理***的处理方法、装置及*** | |
US11789895B2 (en) | On-chip heterogeneous AI processor with distributed tasks queues allowing for parallel task execution | |
CN103812949B (zh) | 一种面向实时云平台的任务调度与资源分配方法及*** | |
CN105933408B (zh) | 一种Redis通用中间件的实现方法及装置 | |
WO2017181872A1 (zh) | 数据处理***以及方法 | |
CN107562541B (zh) | 一种负载均衡分布式的爬虫方法、爬虫*** | |
CN102637214A (zh) | 基于数据库服务间的通用数据同步方法及其*** | |
CN103136364A (zh) | 集群数据库***及其数据查询处理方法 | |
CN105071994B (zh) | 一种海量数据监控*** | |
CN103412786A (zh) | 一种高性能服务器架构***及数据处理方法 | |
CN106201443A (zh) | 一种基于Storm流式计算框架多并发写文件的方法及*** | |
CN110427270B (zh) | 一种面向rdma网络下分布式连接算子的动态负载均衡方法 | |
EP3172682B1 (en) | Distributing and processing streams over one or more networks for on-the-fly schema evolution | |
CN111913784B (zh) | 任务调度方法及装置、网元、存储介质 | |
CN109522004A (zh) | 一种etl流程在分布式架构运行的方法 | |
CN102510403A (zh) | 用于车辆数据接收和实时分析的集群分布式***及方法 | |
CN104410511A (zh) | 一种服务器管理方法及*** | |
CN104281636A (zh) | 海量报表数据并发分布式处理方法 | |
CN107169138B (zh) | 一种面向分布式内存数据库查询引擎的数据分发方法 | |
CN106502842A (zh) | 数据恢复方法及*** | |
CN116089079A (zh) | 一种基于大数据的计算机资源分配管理***及方法 | |
DE112019000666T5 (de) | Dynamische rekonfiguration einer softwarearchitektur für eine ccap (converged cable access platform) | |
CN104915246A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190326 |