返回
基础
分类

设计&设计主线    ,在营造实时ETL结构的数据商旅时

日期: 2020-04-22 07:26 浏览次数 : 126

Describe the architecture options for implementing real-time ETL.

最近的一些数据发展趋势推动了传统的批处理抽取 - 转换 - 加载架构发生了巨大的变化:数据平台要在整个企业范围内运行;数据源的类型变得更多;流数据得到了普遍性增长。

ETL系统能够:

简述在架构实时ETL时的可以选择的架构部件。

在 QCon 旧金山 2016 会议上,Neha Narkhede 做了“ETL 已死,而实时流长存”的演讲,并讨论了企业级数据处理领域所面临的挑战。该演讲的核心前提是开源的 Apache Kafka 流处理平台能够提供灵活且统一的框架,支持数据转换和处理的现代需求。

消除数据错误并纠正缺失数据;提供对于数据可信度的文档化衡量;为保护数据获取相互作用的数据流程;把多个源数据整合到一起;将数据进行结构化供最终用户使用。

答:在建立数据仓库时,ETL通常都采用批处理的方式,一般来说是每天的夜间进行跑批。

Narkhede 是 Confluent 的联合创始人和 CTO,在演讲中,他首先阐述了在过去的十年间,数据和数据系统的重要变化。该领域的传统功能包括提供联机事务处理(online transaction processing,OLTP)的操作性数据库以及提供在线分析处理(online analytical processing,OLAP)的关系型数据仓库。来自各种操作性数据库的数据会以批处理的方式加载到数据仓库的主模式中,批处理运行的周期可能是每天一次或两次。这种数据集成过程通常称为抽取

必赢手机登录网址 ,抽取转换加载==〉抽取,清洗,规格化,提交。

随着数据仓库技术的逐步成熟,企业对数据仓库的时间延迟有了更高的要求,也就出现了目前常说的实时ETL(Real-Time ETL)。实时ETL是数据仓库领域里比较新的一部分内容。

  • 转换 - 加载(extract-transform-load,ETL)。

创建ETL系统的时候,头脑里并存的两条主线:规划&设计主线 和 数据流主线

在构建实时ETL架构的数据仓库时,有几种技术可供选择。

最近的一些数据发展趋势推动传统的 ETL 架构发生了巨大的变化:

规划&设计主线     :需求和实现===〉架构===〉系统实施===〉测试和发布

1.微批处理(microbatch ETL,MB-ETL)

单服务器的数据库正在被各种分布式数据平台所取代,这种平台在整个公司范围内运行;

数据流主线     :抽取===〉清洗====〉规格化====〉提交

微批处理的方式和我们通常的ETL处理方式很相似,但是处理的时间间隔要短,例如间隔一个小时处理一次。

除了事务性数据之外,现在有了类型更多的数据源,比如日志、传感器、指标数据等;

 

2.企业应用集成(Enterprise Application Integration,EAI)

流数据得到了普遍性的增长,就业务需求而言,需要有一种比每日批处理更快的方案。

架构的时候,我们必须作出关于创建ETL系统创建方法的主要的决定,其中包括:1 手工编码还是使用ETL工具 2批处理还是流数据处理 3水平任务依赖还是垂直任务依赖4自动调度  5异常处理 6质量控制 7恢复和重启 8元数据9安全 

EAI也称为功能整合,通常由中间件来完成数据的交互。而通常的ETL称为数据整合。

这些趋势所造成的后果就是传统的数据集成方式最终看起来像一团乱麻,比如组合自定义的转换脚本、使用企业级中间件如企业服务总线和消息队列以及像 Hadoop 这样的批处理技术。

 

对实时性要求非常高的系统,可以考虑使用EAI作为ETL的一个工具,可以提供快捷的数据交互。不过在数据量大时采用EAI工具效率比较差,而且实现起来相对复杂。

必赢手机登录网址 1

数据仓库术语表:

3.CTF(Capture, Transform and Flow)

在探讨现代流处理技术如何缓解这些问题之前,Narkhede 简要回顾了一下数据集成的历史。在上世纪 90 年代的零售行业中,业务得到了一些新形式的数据,所以对购买者行为趋势进行分析的需求迫切增长。

操作型数据存储(ODS,Operational Data Store)

CTF是一类比较新的数据整合工具。它采用的是直接的数据库对数据库的连接方式,可以提供秒级的数据。CTF的缺点是只能进行轻量级的数据整合。通常的处理方式是建立数据准备区,采用CTF工具在源数据库和数据准备区的数据库之间相连接。数据进入数据准备区后再经过其他处理后迁移入数据仓库。

存储在 OLTP 数据库中的操作性数据必须要进行抽取、转换为目标仓库模式,然后加载到中心数据仓库中。这项技术在过去二十年间不断成熟,但是数据仓库中的数据覆盖度依然相对非常低,这主要归因于 ETL 的如下缺点:

企业数据仓库 (EDW,Enterprise Data Warehouse)

4.EII(Enterprise Information Integration)

需要一个全局的模式;

集结区 (Staging Area)

EII是另一类比较新的数据整合软件,可以给企业提供实时报表。EII的处理方式和CTF很相似,但是它不将数据迁移入数据准备区或者数据仓库,而是在抽取转换后直接加载到报表中。

数据的清洗和管理需要手工操作并且易于出错;

展现区(Presentation area)

在实际建立实时ETL架构的数据仓库时,可以在MB-ETL, EAI, CTF, EII及通常的ETL中作出选择或者进行组合。

ETL 的操作成本很高:它通常很慢,并且是时间和资源密集型的;

 

ETL 所构建的范围非常有限,只关注于以批处理的方式连接数据库和数据仓库。

度数据模型是每个数据仓库成功的关键。

在实时 ETL 方面,早期采用的方式是企业应用集成(Enterprise application integration,EAI),并使用 ESB 和 MQ 实现数据集成。尽管这可以说是有效的实时处理,但这些技术通常很难广泛扩展。这给传统的数据集成带来了两难的选择:实时但不可扩展,或者可扩展但采用的是批处理方案。

数据评估是一个系统的检测过程,对ETL需要使用的数据源的质量,范围,和上下文进行检查。

必赢手机登录网址 2

数据集成采用规格化的维表和事实表。所谓规格化的维表就是指在分离的数据库中建立公共维度体系。这样使用这些实体能够构建横向钻取型的报表。

Narkhede 指出现代流处理对数据集成有了新的需求:

 

能够处理大量且多样性的数据;

数据的归档和数据线性化

平台必须要从底层就支持实时处理,这会促进向以事件为中心的根本转变;

我们推荐在每个主要的转换发生的时候集结数据,这个集结点发生在全部的4个步骤:抽取,清洗,转换,和提交。

必须使用向前兼容的数据架构,必须能够支持添加新的应用,这些新的应用可能会以不同的方式来处理相同的数据。

为什么要将集结进行归档(将数据写入磁盘)?

这些需求推动一个统一数据集成平台的出现,而不是一系列专门定制的工具。这个平台必须拥抱现代架构和基础设施的基本理念、能够容错、能够并行、支持多种投递语义、提供有效的运维和监控并且允许进行模式管理。Apache Kafka 是七年前由 LinkedIn 开发的,它就是这样的一个开源流平台,能够作为组织中数据的中枢神经系统来运行,方式如下:

除非明确规定不会恢复某个数据。同时每个集结归档都应该有与之对应的元数据,描述原始数据源和处理步骤。

作为应用的实时、可扩展消息总线,不需要 EAI;

 

为所有的消息处理目的地提供现实状况来源的管道;

早期架构选择中最终要的是确定使用供应商的etl还是 自己手工编码方式来实现系统。,几乎所有的设计ETL系统的细节都基于这样的选择

作为有状态流处理微服务的基础构建块。

一定要先进行数据评估,使用数据评估的结果去说服业务主管,安排现实的开发进度。

Apache Kafka 在 LinkedIn 目前每天处理 14 万亿条的消息,并且已经部署到了世界范围内成千上万的组织之中,包括财富 500 强的公司,如 Cisco、Netflix、PayPal 和 Verizon。Kafka 已经快速成为流数据的存储方案,并且为应用集成提供了一个可扩展的消息支撑,能够跨多个数据中心。

 

必赢手机登录网址 3

批处理式数据六还是流式数据

Kafka 的基础是 log 的理念,log 是只能往上追加,完全有序的数据结构。log 本身采用了发布 - 订阅(publish-subscribe,pubsub)的语义,发布者能够非常容易地以不可变的形式往 log 上追加数据,订阅者可以维护自己的指针,以便指示当前正在处理的消息。

ETL系统的标准架构是从数据源中周期性的以批处理的方式进行抽去数据,流经整个系统,最后以批处理的方式对最终用户表进行批量更新。本书也是主要基于此种架构方式。如果数据仓库的加载的实时性变得很急迫,批处理的方式就会被打破,替代的方法就是流式数据流,记录级数据从原系统不停的流向最终用户数据库和屏幕。

Kafka 能够通过 Kafka Connect API 实现流数据管道的构建,也就是 ETL 中的 E 和 L。Connect API 利用了 Kafka 的可扩展性,基于 Kafka 的容错模型进行构建并且提供了一种统一的方式监控所有的连接器。流处理和转换可以通过 Kafka Streams API 来实现,这提供了 ETL 中的 T。使用 Kafka 作为流处理平台能够消除为每个目标 sink、数据存储或系统创建定制化抽取、转换和加载组件的需求。来自 source 的数据经过抽取后可以作为结构化的事件放到平台中,然后可以通过流处理进行任意的转换。

批处理方式会改变所有的一切,尽管必须也有抽取,清晰,转换和提交步骤,但是这些步骤必须经过修改,以便适应实时性记录处理需求,尤其是对于快速流方式而言,很多关于数据到达甚至参照完整性方面的常规假设都必须进行修改。

必赢手机登录网址 4

 

在演讲的最后一部分,Narkhede 详细讨论了流处理的概念,也就是流数据的转换,并且提出了两个相互对立的愿景:实时的 MapReduce 和事件驱动的微服务。实时的 MapReduce 适用于分析用例并且需要中心化的集群和自定义的打包、部署和监控。Apache Storm、Spark Streaming 和 Apache Flink 实现了这种模式。Narkhede 认为事件驱动微服务的方式(通过 Kafka Streams API 来实现)让任何用例都能访问流处理,这只需添加一个嵌入式库到 Java 应用中并搭建一个 Kafka 集群即可。

水平方式还是垂直方式任务依赖

Kafka Streams API 提供了一个便利的 fluent DSL,具有像 join、map、filter 和 window 这样的操作符。

水平方式组织任务流是指每个最终的数据库加载相互独立运行,因此,如果有订货和配送两项任务,这两项数据库加载任务会相互独立运行,这通常意味着抽取,清晰,转换和提交的步骤在两个工作流之间是非同步的。

必赢手机登录网址 5

垂直方式任务流会对多个离散的作业进行同步,这样最终得数据库加载会同步进行。尤其是多个系统使用共同的维表的时候,比如客户或者供应商等,之前的步骤一定要同步,这样,如果之前的步骤没有完全执行完,后面的步骤,比如转换或者提交就不会往下进行。

这是真正的每次一个事件(event-at-a-time)的流处理,没有任何微小的批处理,它使用数据流风格的窗口方式,基于事件的时间来处理后续到达的数据。Kafka Streams 内置了对本地状态的支持,并且支持快速的状态化和容错处理。它还支持流的重新处理,在更新应用、迁移数据或执行 A/B 测试的时候,这是非常有用的。

调度自动化

Narkhede 总结说,log 统一了批处理和流处理,log 可以通过批处理的窗口方式进行消费,也能在每个元素抵达的时候进行检查以实现实时处理,Apache Kafka 能够提供“ETL 的崭新未来”。

异常处理

欢迎工作一到五年的Java工程师朋友们加入Java程序员开发: 854393687

质量控制

群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

恢复与重启:非正

元数据

安全性

下面为引用别的文章,不是本书 内容:

1) 数据集市是设计用来满足部门需求的,各部门的目标可能差别很大,这也是为什么 企业内各部门拥有结构和特征都不同的数据集市的原因。数据仓库则是设计用来满足企 业综合需求的。一个设计方案可以是对一个特定部门最优的,也可以是对一个企业最优的 ,但不可能对两者均是最优方案。针对企业的设计目标和针对部门的差别很大。 2) 数据集市与数据仓库中数据的详细程度也完全不同。数据集市中包含有许多概要 和累计数据,而数据仓库中则包含有大量的详细数据。显然,你可以从详细数据中计算出 概要和累加数据,但反之则不行。对业务分析而言,详细数据在很多场合都非常重要。 综上所述,我们可以归纳出以下要点: ·数据集市和数据仓库中的数据模型不同,前者一般采用星形连接结构,后者则用第 三范式为主; ·数据集市中的历史数据信息量比数据仓库少很多; ·数据集市中的主题和数据仓库中的主题关联并不很多; ·数据集市中的关系与数据仓库中的关系不同; ·数据集市中的查询类型与数据仓库中的查询类型差别很大; ·数据集市中的用户类型 (较低层次)和数据仓库中的用户类型 (较高层次)差别很 大; ·数据集市的主要结构与数据仓库的主要结构具有显著的区别。

 

数据集市:本书中,我们将其统一定义为:基于企业的原子级粒度的数据,面向业务流程的数据集合,只依赖于数据度量事件的本身,而非预期的用户问题。、

它基于流程,原子级数据基础,基于数据度量

 

企业级数据仓库(EDW(也称之为CIF)(corporate information factory))和DW是不同的,架构什么的都不同

 

数据仓库:数据仓库是一个将源系统数据抽取,清洗,规格化,提交到维度数据存储的系统,为决策的制定提供查询和分析功能的支持与实现。