Apache Hudi結合Flink的億級數(shù)據入湖實踐解析
本次分享分為5個部分介紹Apache Hudi的應用與實踐
1. 實時數(shù)據落地需求演進
實時平臺上線后,主要需求是開發(fā)實時報表,即抽取各類數(shù)據源做實時etl后,吐出實時指標到oracle庫中供展示查詢。
隨著實時平臺的穩(wěn)定及推廣開放,各種使用人員有了更廣發(fā)的需求:
- 對實時開發(fā)來說,需要將實時sql數(shù)據落地做一些etl調試,數(shù)據取樣等過程檢查;
- 數(shù)據分析、業(yè)務等希望能結合數(shù)倉已有數(shù)據體系,對實時數(shù)據進行分析和洞察,比如用戶行為實時埋點數(shù)據結合數(shù)倉已有一些模型進行分析,而不是僅僅看一些高度聚合化的報表;
- 業(yè)務希望將實時數(shù)據作為業(yè)務過程的一環(huán)進行業(yè)務驅動,實現(xiàn)業(yè)務閉環(huán);
- 針對部分需求,需要將實時數(shù)據落地后,結合其他數(shù)倉數(shù)據,T - 1離線跑批出報表;
>
除了上述列舉的主要的需求,還有一些零碎的需求。
總的來說,實時平臺輸出高度聚合后的數(shù)據給用戶,已經滿足不了需求,用戶渴求更細致,更原始,更自主,更多可能的數(shù)據
而這需要平臺能將實時數(shù)據落地至離線數(shù)倉體系中,因此,基于這些需求演進,實時平臺開始了實時數(shù)據落地的探索實踐
2. 基于Spark+Hudi的實時數(shù)據落地應用實踐
最早開始選型的是比較流行的Spark + Hudi體系,整體落地架構如下:
這套主要基于以下考慮:
- 數(shù)倉開發(fā)不需寫Scala/Java打Jar包做任務開發(fā)
- ETL邏輯能夠嵌入落數(shù)據任務中
- 開發(fā)入口統(tǒng)一
我們當時做了通用的落數(shù)據通道,通道由Spark任務Jar包和Shell腳本組成,數(shù)倉開發(fā)入口為統(tǒng)一調度平臺,將落數(shù)據的需求轉化為對應的Shell參數(shù),啟動腳本后完成數(shù)據的落地。
3. 基于Flink自定義實時數(shù)據落地實踐
由于我們當時實時平臺是基于Flink,同時Spark+Hudi對于大流量任務的支持有一些問題,比如落埋點數(shù)據時,延遲升高,任務經常OOM等,因此決定探索Flink落數(shù)據的路徑。
當時Flink+Hudi社區(qū)還沒有實現(xiàn),我們參考Flink+ORC的落數(shù)據的過程,做了實時數(shù)據落地的實現(xiàn),主要是做了落數(shù)據Schema的參數(shù)化定義,使數(shù)據開發(fā)同事能shell化實現(xiàn)數(shù)據落地。
4. 基于Flink + Hudi的落地數(shù)據實踐
Hudi整合Flink版本出來后,實時平臺就著手準備做兼容,把Hudi納入了實時平臺開發(fā)內容。
先看下接入后整體架構
實時平臺對各類數(shù)據源及Sink端都以各類插件接入,我們參考了HudiFlinkTable的Sink流程,將Hudi接入了我們的實時開發(fā)平臺。
為了提高可用性,我們主要做了以下輔助功能;
- Hive表元數(shù)據自動同步、更新;
- Hudi schema自動拼接;
- 任務監(jiān)控、Metrics數(shù)據接入等
實際使用過程如下
整套體系上線后,各業(yè)務線報表開發(fā),實時在線分析等方面都有使用,比較好的賦能了業(yè)務,上線鏈路共26條,單日數(shù)據落入約3億條左右
5. 后續(xù)應用規(guī)劃及展望
后續(xù)主要圍繞如下幾個方面做探索
5.1 取代離線報表,提高報表實時性及穩(wěn)定性
離線報表特點是 T - 1,凌晨跑數(shù),以及報表整體依賴鏈路長。兩個特點導致時效性不高是一個方面,另一個方面是,數(shù)據依賴鏈路長的情況下,中間數(shù)據出問題容易導致后續(xù)整體依賴延時,而很多異常需要等到報表任務實際跑的時候,才能暴露出來。并且跑批問題凌晨暴露,解決的時效與資源協(xié)調都是要降低一個等級的,這對穩(wěn)定性準時性要求的報表是不可接受的,特別是金融公司來說,通過把報表遷移至實時平臺,不僅僅是提升了報表的時效性,由于抽數(shù)及報表etl是一直再實時跑的,報表數(shù)據給出的穩(wěn)定性能有一個較大的提升。這是我們Hudi實時落數(shù)據要應用的規(guī)劃之一
5.2 完善監(jiān)控體系,提升落數(shù)據任務穩(wěn)定性
目前僅僅做到落數(shù)據任務的監(jiān)控,即任務是否正常運行,有沒有拋異常等等。但實際使用者更關心數(shù)據由上游到Hive整條鏈路的監(jiān)控情況。比如數(shù)據是否有延遲,是否有背壓,數(shù)據源消費情況,落數(shù)據是否有丟失,各個task是否有瓶頸等情況,總的來說,用戶希望能更全面細致的了解到任務的運行情況,這也是后面的監(jiān)控需要完善的目標
5.3 落數(shù)據中間過程可視化探索
這個是和上面的監(jiān)控有類似的地方,用戶希望確定,一條數(shù)據從數(shù)據源接進來,經過各個算子的處理,它的一些詳細情況。比如這個數(shù)據是否應該被過濾,處于哪個窗口,各個算子的處理時間等等,否則對于用戶,整個數(shù)據SQL處理流程是一個黑盒。
以上就是Apache Hudi結合Flink的億級數(shù)據入湖實踐解析的詳細內容,更多關于Apache Hudi結合Flink的億級數(shù)據的資料請關注腳本之家其它相關文章!
相關文章
ubuntu服務器部署gitlab docker并配置nginx反向代理https訪問的過程解析
這篇文章主要介紹了ubuntu服務器部署gitlab docker并配置nginx反向代理https訪問的過程,本文給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧2024-02-02iis、apache、nginx使用X-Frame-Options防止網頁被Frame的解決方法
X-Frame-Options HTTP響應頭是用來確認是否瀏覽器可以在frame或iframe標簽中渲染一個頁面,網站可以用這個頭來保證他們的內容不會被嵌入到其它網站中,以來避免點擊劫持2017-03-03如何在Ubuntu上通過Docker部署OpenVPN服務器
本文我們將探討如何在Ubuntu服務器上通過Docker容器化技術來部署OpenVPN服務器,下面是逐步進行的指南,適用于初學者和中級用戶,感興趣的朋友一起看看吧2023-10-10雙至強cpu 32g內存服務器 做了陣列1更換一個壞的硬盤后,沒做陣列
更換掉壞硬盤后,系統(tǒng)重新認出primary后,原來的主盤即失效,如果此時再將更換掉的舊盤插入系統(tǒng)就會造成,混亂,導致進不入系統(tǒng),撥掉也無用2013-06-06