乐趣区

关于大数据:轻量级大数据-ETL-开发框架

首先在进入主题之前咱们先来回顾下经典的大数据 ETL 架构有哪些?

  1. Lambda 架构

  1. Kappa 架构

  1. 混合架构

它们之间的区别如下:

七牛的大数据平台在搭建过程中也经验了下面几个架构的变迁,也就是从最早的 Lambda 架构,到尝试应用 Kappa 架构,再到前面的新型混合 ETL 架构,为了满足业务需要,开发人员在这几个架构中进行折中抉择,然而咱们发现下面几个架构对于大数据的开发人员要求较高,次要体现在上面几个方面:

  1. 波及到泛滥的框架,如流解决框架就有晚期的 Apache Storm,到前面的 Apache Spark Streaming, 再到 Apache Flink,学习门槛较高
  2. 不同计算框架对与数据源的定义不对立,造成输入输出较难治理
  3. 数据开发人员新开发一个业务指标,不同开发人员写出的代码格调不对立,开发效率低,很难进行工程化,前期保护也必将艰难

为了解决下面的几个问题,团队抉择基于 Apache Spark 开发了 QStreaming 这套简略轻量级 ETL 开发框架

QStreaming 个性

数据源反对

  1. Apache Kafka
  2. Apache Hbase
  3. Hadoop HDFS/S3
  4. Jdbc
  5. MongoDB
  6. Apache Hudi

次要个性

  1. DDL 定义输出源

这外面 stream 关键字代表定义了一个流表,并且是连贯到 kafka 消息中间件

  1. 流解决 watermark 的 DSL 反对

在 DSL 中增加 watermark,次要有 2 种形式:

  • 在 DDL 中指定,

  • 在 create view 语句中指定

  1. 动静 UDF

比方上面这个转换一个日期字符串为工夫戳格局

  1. 流解决的多输入

这个个性次要是通过 spark structed streaming 的 forEachBatch 实现的

  1. 变量渲染

变量渲染常常在一些定时调度批处理中十分有用,如下依据小时读取一个 HDFS 上的 parquet 文件

  1. 监控,如 kafka lag 监控

因为 Apache spark 生产 kafka 是应用的低阶 API,默认咱们没有方法晓得生产的 topic 有没有提早,咱们通过指定 group-id 属性,模仿 kafka consumer 的 subscribe 模式,这样就和一般的 kafka consumer 高级 API 一样了

  1. 数据品质

这个个性次要是用来对数据做单元测试的,比方校验咱们 ETL 后果表的准确性

QStreaming 残缺的语法个性参考这里

QStreaming 架构

 架构图

外围组件

从下面的架构图中能够看出 QStreaming 次要有以下几个组件组成

  1. Pipeline DSL

Pipeline DSL 是一个定义时的 Job 工作形容文件,相似于 SQL 语法,对 Spark SQL 齐全兼容,比方上面这个

  1. Pipeline DSL Parser

Pipeline DSL Parser 组件负责解析 Pipeline DSL 并且转换 ANTLR AST 为 Pipeline Domain Models

Pipeline Domain models

  1. Pipleine Translator

Pipeline Translator 进一步将 Pipeline domain model 转换为 spark transformations 和 actions

  1. Data Quality Checker

Data Quality Check 负责解析单元测试语句,应用 Amazon Deequ 库并且翻译为 Deequ 的 VerificationSuite

  1. Pipeline Runner

这个组件负责构建 Pipeline 启动上下文,协同 PipelineParser 和 Pipeline Translator 一起工作,依据配置启动流或者批处理 Application

QStreaming 应用场景

  • 场景一

在这一个场景中,QStreaming 次要通过生产 kafka, 而后进行预聚合,预聚合能够进行开窗口计算,比方 1 分钟的窗口,而后在把窗口聚合的后果写入上游数据存储中,这外面很重要的一个个性就是数据勘误性能,所以能够抉择的 ETL 架构如下:

  1. lambda 架构
  2. kappa 架构
  3. 混合架构
  • 场景二

在这个场景中,QStreaming 表演了一层很薄的角色,比方对数据进行加工,然而不对数据进行聚合,保留了显著,预聚合的性能交给了上游反对 OLAP 引擎,比方反对 RollUp 性能的 Apache Druid,Apache Doris,Clickhouse 等,另外 Apache Doris 还能够保留明细性能

  • 场景三

在这个场景中,QStreaming 次要是通过 Apache Airflow 进行调度的,ODS 对接 Apache Hive 数据仓库,而后能够做 DWS 或者是 DWD 操作,再把后果写入 Hive 数据仓库中,提供离线即席查问,或者是聚合的后果写入 RDS,NOSQL 等数据库,下层对其后果封装为 API,供用户应用

  • 场景四

这个场景次要是音讯驱动的,通过上游业务方发送音讯到消息中间件,而后生产音讯驱动 QStreaming ETL 工作

QStreaming 总结

整体上 QStreaming 能够从上面 3 个图简略详情:

  • 架构层面

可用于上面三种架构中,灵便切换

  • 开发层面

  • 运维层面

QStreaming RoadMap

QStreaming 还十分年老,前期还会有进一步的布局,布局的个性如下:

欠缺数据源反对(如 Delta lake,Apache Hudi 等 )

增加数据血统性能

机器学习 Pipeline

退出移动版