ETL/数据仓库技术的发展演进

一、概念

ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。
数据仓库 ,由数据仓库之父比尔·恩门(Bill Inmon)于1990年提出。数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策。
数据集市(Data Mart),也叫数据市场,就是满足特定的部门或者用户的需求,按照多维的方式进行存储,包括定义维度、需要计算的指标、维度的层次等,生成面向决策分析需求的数据立方体。

二、传统数据时代

数据仓库概念初期,主要为了报表和多维分析,当时方案是与OLTP的业务系统分离,减少对业务系统影响。


数据仓库架构

在建设过程中,发现为了支持应用使用,数据仓库内部也可以分成多个层次,便于里面数据计算结果的复用。逐渐形成了经典的数据仓库四层体系架构。


数据仓库典型架构

贴源层 (ODS, Operational Data Store)
数据准备区,也称为贴源层。数据仓库源头系统的数据表通常会原封不动的存储一份,这称为ODS层,是后续数据仓库加工数据的来源。
明细层(DWD: Data Warehouse Detail)
业务层与数据仓库的隔离层。主要对ODS数据层做一些数据清洗和规范化的操作。
数据服务层(DWS:Data Warehouse Service)
整合汇总成分析某一个主题域的服务数据层,例如汇总表,宽表。
应用服务层 (ADS:applicationData Service)
应用数据服务,该层主要是提供数据产品和数据分析使用的数据。
这一个时代,数据仓库存储代表产品有前期的Oracle、IBM DB2、Teradata,后期出现的Vertica、Greenplum等。ETL代表产品包括Informatica、Datastage、Kettle等。

三、大数据时代

随着数据的增长,原有的数据库产品,无论是存储能力还是性能都出现了瓶颈。大数据Hadoop体系的出现,突破了海量数据管理不足,并且这时出现了数据中台,数据湖等概念,大数据初期,数据仍然以批处理方式为主。


大数据架构

数据离线获取的技术包括sqoo命令和传统ETL产品的增强。

四、Lambda架构

Lambda架构是由Storm的作者Nathan Marz提出的一个实时大数据处理框架。Marz在Twitter工作期间开发了著名的实时大数据处理框架Storm,Lambda架构是其根据多年进行分布式大数据系统的经验总结提炼而成。Lambda架构的目标是设计出一个能满足实时大数据系统关键特性的架构,包括有:高容错、低延时和可扩展等。Lambda架构整合离线计算和实时计算,融合不可变性(Immunability),读写分离和复杂性隔离等一系列架构原则,可集成Hadoop,Kafka,Storm,Spark,Hbase等各类大数据组件。


架构图
Lambda架构简图

Lambda 架构总共由三层系统组成:批处理层(Batch Layer),速度处理层(Speed Layer),以及用于响应业务的服务层(Serving Layer)。
批处理层按照批次处理数据集,通常处理的数据量大;
速度处理层会实时处理,通常是实时的新数据;
服务层,保存批处理和速度层处理的结果,并通过返回预先计算的数据或从速度层处理构建好数据来响应查询。


Lamda使用实践

五、Kappa架构

Kappa 架构是由 LinkedIn 的前首席工程师杰伊·克雷普斯(Jay Kreps)提出的一种架构思想。克雷普斯是几个著名开源项目(包括 Apache Kafka 和 Apache Samza 这样的流处理系统)的作者之一。
Kappa架构的原理就是:在Lambda 的基础上进行了优化,删除了 Batch Layer 的架构,保留了速度层,并取名实时处理。

Kappa架构

在这个架构中数据层存储结果,包括历史数据和处理结果数据;实时处理层,对新数据实时计算,并通过服务层(API或数据视图)对外提供服务。
下面就以 Apache Kafka 为例来讲述整个全新架构的过程。数据存储在kafka队列中;作业调用队列中数据,实时计算。
kafka案例

实际应用举例:
Kappa使用实践

六、总结

Lambda优点
1、架构简单
2、很好的结合了离线批处理和实时流处理
4、稳定且实时计算成本可控
5、离线数据易于保存
不足:
1、实时、离线数据很难保持一致结果
2、需要维护两套系统
Kappa优点
1、只需要维护实时处理模块
2、可以通过消息重放处理历史数据
3、无需离线和实时数据合并
不足:
1、强依赖消息中间件缓存能力
2、数据批处理能力性能待确认。

你可能感兴趣的:(ETL/数据仓库技术的发展演进)