QStreaming-轻量级大数据ETL开发框架

QStreaming背景

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

1. Lambda架构


2. Kappa架构


3. 混合架构


它们之间的区别如下:

七牛的大数据平台在搭建过程中也经历了上面几个架构的变迁,也就是从最早的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消息中间件

2. 流处理watermark的DSL支持

在DSL中添加watermark,主要有2种方式:

- 在DDL中指定,

- 在create view 语句中指定

3. 动态UDF

比如下面这个转换一个日期字符串为时间戳格式

4. 流处理的多输出

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

5. 变量渲染

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


6. 监控,如kafka lag监控

由于Apache spark消费kafka是使用的低阶API,默认我们没有办法知道消费的topic有没有延迟, 我们通过指定group-id属性,模拟kafka consumer的subscribe模式,这样就和普通的kafka consumer 高级API一样了


7. 数据质量

这个特性主要是用来对数据做单元测试的,比如校验我们ETL结果表的准确性

QStreaming完整的语法特性参考[这里](https://github.com/qiniu/QStreaming/blob/master/stream-core/src/main/antlr4/com/qiniu/stream/core/parser/Sql.g4)

QStreaming架构

 架构图


核心组件

从上面的架构图中可以看出QStreaming主要有以下几个组件组成

1. Pipeline DSL

Pipeline DSL是一个定义时的Job任务描述文件,类似于SQL语法,对Spark SQL完全兼容,比如下面这个

2. Pipeline DSL Parser

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


Pipeline Domain models


3. Pipleine Translator

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

4. Data Quality Checker

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

5. 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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,198评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,663评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,985评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,673评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,994评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,399评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,717评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,407评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,112评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,371评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,891评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,255评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,881评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,010评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,764评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,412评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,299评论 2 260