QStreaming-輕量級大數(shù)據(jù)ETL開發(fā)框架

QStreaming背景

首先在進入主題之前我們先來回顧下經(jīng)典的大數(shù)據(jù)ETL架構(gòu)有哪些滚婉?

1. Lambda架構(gòu)


2. Kappa架構(gòu)


3. 混合架構(gòu)


它們之間的區(qū)別如下:

七牛的大數(shù)據(jù)平臺在搭建過程中也經(jīng)歷了上面幾個架構(gòu)的變遷挠铲,也就是從最早的Lambda架構(gòu)戴差,到嘗試使用Kappa架構(gòu),再到后面的新型混合ETL架構(gòu)竭钝,為了滿足業(yè)務(wù)需求慕的,開發(fā)人員在這幾個架構(gòu)中進行折中選擇堕伪,但是我們發(fā)現(xiàn)上面幾個架構(gòu)對于大數(shù)據(jù)的開發(fā)人員要求較高,主要體現(xiàn)在下面幾個方面:

1. 涉及到眾多的框架诈皿,如流處理框架就有早期的Apache Storm林束,到后面的Apache Spark Streaming,再到Apache Flink像棘,學(xué)習(xí)門檻較高

2. 不同計算框架對與數(shù)據(jù)源的定義不統(tǒng)一,造成輸入輸出較難管理

3. 數(shù)據(jù)開發(fā)人員新開發(fā)一個業(yè)務(wù)指標壶冒,不同開發(fā)人員寫出的代碼風格不統(tǒng)一缕题,開發(fā)效率低,很難進行工程化胖腾,后期維護也必將困難

為了解決上面的幾個問題烟零,團隊選擇基于Apache Spark開發(fā)了QStreaming這套簡單輕量級ETL開發(fā)框架

QStreaming特性

數(shù)據(jù)源支持

1. Apache Kafka

2. Apache Hbase

3. Hadoop HDFS/S3

4. Jdbc

5. MongoDB

6. Apache Hudi

主要特性

1. DDL定義輸入源

這里面stream關(guān)鍵字代表定義了一個流表,并且是連接到kafka消息中間件

2. 流處理watermark的DSL支持

在DSL中添加watermark咸作,主要有2種方式:

- 在DDL中指定锨阿,

- 在create view 語句中指定

3. 動態(tài)UDF

比如下面這個轉(zhuǎn)換一個日期字符串為時間戳格式

4. 流處理的多輸出

這個特性主要是通過spark structed streaming的forEachBatch實現(xiàn)的

5. 變量渲染

變量渲染經(jīng)常在一些定時調(diào)度批處理中非常有用,如下根據(jù)小時讀取一個HDFS上的parquet文件


6. 監(jiān)控性宏,如kafka lag監(jiān)控

由于Apache spark消費kafka是使用的低階API群井,默認我們沒有辦法知道消費的topic有沒有延遲, 我們通過指定group-id屬性毫胜,模擬kafka consumer的subscribe模式书斜,這樣就和普通的kafka consumer 高級API一樣了


7. 數(shù)據(jù)質(zhì)量

這個特性主要是用來對數(shù)據(jù)做單元測試的,比如校驗我們ETL結(jié)果表的準確性

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

QStreaming架構(gòu)

?架構(gòu)圖


核心組件

從上面的架構(gòu)圖中可以看出QStreaming主要有以下幾個組件組成

1. Pipeline DSL

Pipeline DSL是一個定義時的Job任務(wù)描述文件酵使,類似于SQL語法荐吉,對Spark SQL完全兼容,比如下面這個

2. Pipeline DSL Parser

Pipeline DSL Parser組件負責解析Pipeline DSL并且轉(zhuǎn)換ANTLR AST為Pipeline Domain Models


Pipeline Domain models


3. Pipleine Translator

Pipeline Translator進一步將Pipeline domain model轉(zhuǎn)換為spark transformations和actions

4. Data Quality Checker

Data Quality Check負責解析單元測試語句口渔,使用Amazon Deequ庫并且翻譯為Deequ的VerificationSuite

5. Pipeline Runner

這個組件負責構(gòu)建Pipeline啟動上下文样屠,協(xié)同PipelineParser和Pipeline Translator一起工作,根據(jù)配置啟動流或者批處理Application

QStreaming使用場景

- 場景一


在這一個場景中缺脉,QStreaming主要通過消費kafka,然后進行預(yù)聚合痪欲,預(yù)聚合可以進行開窗口計算,比如1分鐘的窗口攻礼,然后在把窗口聚合的結(jié)果寫入下游數(shù)據(jù)存儲中业踢,這里面很重要的一個特性就是數(shù)據(jù)訂正功能,所以可以選擇的ETL架構(gòu)如下:

1. lambda架構(gòu)

2. kappa架構(gòu)

3. 混合架構(gòu)

- 場景二

在這個場景中礁扮,QStreaming扮演了一層很薄的角色知举,比如對數(shù)據(jù)進行加工,但是不對數(shù)據(jù)進行聚合太伊,保留了明顯雇锡,預(yù)聚合的功能交給了下游支持OLAP引擎,比如支持RollUp功能的Apache Druid,Apache Doris,Clickhouse等僚焦,另外Apache Doris還可以保留明細功能

- 場景三

在這個場景中锰提,QStreaming主要是通過Apache Airflow進行調(diào)度的,ODS對接Apache Hive數(shù)據(jù)倉庫,然后可以做DWS或者是DWD操作欲账,再把結(jié)果寫入Hive數(shù)據(jù)倉庫中屡江,提供離線即席查詢,或者是聚合的結(jié)果寫入RDS,NOSQL等數(shù)據(jù)庫赛不,上層對其結(jié)果封裝為API惩嘉,供用戶使用

- 場景四


這個場景主要是消息驅(qū)動的,通過上游業(yè)務(wù)方發(fā)送消息到消息中間件踢故,然后消費消息驅(qū)動QStreaming ETL任務(wù)

QStreaming總結(jié)

整體上QStreaming可以從下面3個圖簡單概況:

- 架構(gòu)層面

可用于下面三種架構(gòu)中文黎,靈活切換


- 開發(fā)層面


- 運維層面


QStreaming RoadMap

QStreaming還非常年輕,后期還會有進一步的規(guī)劃殿较,規(guī)劃的特性如下:

完善數(shù)據(jù)源支持(如Delta lake,Apache Hudi等)

添加數(shù)據(jù)血緣功能

機器學(xué)習(xí)Pipeline

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末耸峭,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子淋纲,更是在濱河造成了極大的恐慌劳闹,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件洽瞬,死亡現(xiàn)場離奇詭異本涕,居然都是意外死亡,警方通過查閱死者的電腦和手機伙窃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門菩颖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人为障,你說我怎么就攤上這事晦闰。” “怎么了鳍怨?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵呻右,是天一觀的道長。 經(jīng)常有香客問我鞋喇,道長窿冯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任确徙,我火速辦了婚禮,結(jié)果婚禮上执桌,老公的妹妹穿的比我還像新娘鄙皇。我一直安慰自己,他們只是感情好仰挣,可當我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布伴逸。 她就那樣靜靜地躺著,像睡著了一般膘壶。 火紅的嫁衣襯著肌膚如雪错蝴。 梳的紋絲不亂的頭發(fā)上洲愤,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天,我揣著相機與錄音顷锰,去河邊找鬼柬赐。 笑死,一個胖子當著我的面吹牛官紫,可吹牛的內(nèi)容都是我干的肛宋。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼束世,長吁一口氣:“原來是場噩夢啊……” “哼酝陈!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起毁涉,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤沉帮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后贫堰,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體穆壕,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年严嗜,在試婚紗的時候發(fā)現(xiàn)自己被綠了粱檀。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡漫玄,死狀恐怖茄蚯,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情睦优,我是刑警寧澤渗常,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站汗盘,受9級特大地震影響皱碘,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜隐孽,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一癌椿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧菱阵,春花似錦踢俄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春琳钉,著一層夾襖步出監(jiān)牢的瞬間势木,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工歌懒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留啦桌,地道東北人。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓歼培,卻偏偏與公主長得像震蒋,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子躲庄,可洞房花燭夜當晚...
    茶點故事閱讀 44,947評論 2 355