匯入es資料 有道精品課實時資料中臺建設實踐

2021-10-14 16:15:17 字數 3274 閱讀 7855

撰文/ 李榮謙

本期文章中,有道精品課技術團隊將和大家分享有道精品課資料中颱的架構演進過程以及 doris 作為乙個 mpp 分析型資料庫是如何為不斷增長的業務體量提供有效支撐並進行資料賦能的。

本文以我們在實時數倉選型的經驗為切入點,進一步著重分享使用 doris 過程中遇到的問題,以及我們針對這些問題所做出的調整和優化。

根據業務需求,目前有道精品課的資料層架構上可分為離線實時兩部分。

有道精品課資料中臺團隊依託於其實時計算能力在整個資料架構中主要承擔了實時資料處理的角色,同時為下游脫機數倉提供實時資料同步服務。

資料中臺主要服務的使用者角色和對應的資料需求如下:

運營/策略/負責人主要檢視學生的整體情況,查詢資料中颱的一些課程維度實時聚合資料;

輔導/銷售主要關注所服務學生的各種實時明細資料;

品控主要檢視課程/老師/輔導各維度整體資料,通過t+1的離線報表進行檢視;

資料分析師對資料中臺 t+1 同步到脫機數倉的資料進行互動式分析;

如上圖所示,在資料中颱1.0架構中我們的實時資料儲存主要依託於 elasticsearch,遇到了以下幾個問題:

聚合查詢效率不高

資料壓縮空間低

不支援多索引的 join,在業務設計上我們只能設定很多大寬表來解決問題

不支援標準 sql,查詢成本較高

基於上面的業務痛點,我們開始對實時數倉進行調研,調研了 doris、clickhouse、tidb+tiflash、druid、kylin,考慮到查詢效能、社群發展、運維成本等多種因素,我們最後選擇 doris 作為我們的實時數倉。

在完成了實時數倉的選型後,我們針對 doris 做了一些架構上的改變,以發揮它最大的作用,主要分為以下幾個方面:

>>>>flink雙寫

將所有 flink job 改寫,在寫入elasticsearch的時候旁路輸出乙份資料到 kafka,並對複雜巢狀資料建立下游任務進行轉化傳送到 kafka,doris 使用 routine load 匯入資料。

由於之前我們的實時數倉只有 es,所以在使用 doris 的初期,我們選擇了通過 doris 建立 es 外表的方式來完善我們的 doris 數倉底表,同時也降低了查詢成本,業務方可以無感知的使用數倉底表。

>>>>資料同步

原來我們使用 es 的時候,由於很多表沒有資料寫入時間,資料分析師需要每天掃全表匯出全量資料到 hive,這對我們的集群有很大壓力,並且也會導致資料延遲上公升,我們在引入了 doris 後,對所有數倉表都新增eventstamp, updatestamp, deleted這三個字段。

資料同步我們採用了多種方式,通過 hive 表名字尾來決定不同同步場景:

>>>>指標域劃分/資料分層

根據上面的指標域,我們基於星型模型開始構建實時數倉,在 doris 中構建了20餘張數倉底表以及10餘張維表,通過網易易數構建了完整的指標系統。

>>>>定時生成 dws/ads 層

基於 doris insert into select 的匯入方式,我們實現了一套定時根據 dwd 層資料生成 dws/ads 層資料的邏輯,延遲最低可以支援到分鐘級。

>>>資料血緣

我們基於 routine load 和 flink 實現了資料中臺完善的資料血緣,供資料開發/資料分析師進行查詢。

基於圍繞 doris 的系統架構調整,我們完成了資料中颱2.0架構:

資料中颱2.0架構的資料流轉如下圖所示:

我們對資料中臺整體架構進行梳理,整體結構如下圖所示:

1. 資料匯入方式簡單,我們針對不同業務場景使用了三種匯入方式:

2. 資料占用空間降低,由原來es中的1t左右降低到了200g左右。

3. 數倉使用成本降低:

doris 支援 mysql 協議,資料分析師可以直接進行自助取數,一些臨時分析需求不需要再將 elasticsearch 資料同步到 hive 供分析師進行查詢。

一些在 es 中的明細表我們通過 doris 外表的方式暴露查詢,大大降低了業務方的查詢成本。

同時,因為 doris 支援 join,原來一些需要查詢多個 index 再從記憶體中計算的邏輯可以直接下推到 doris 中,提公升了查詢服務的穩定性,加快了響應時間。

聚合計算速度通過物化檢視和列存優勢獲得了較大提公升。

同時,也形成了一套完善的開發體系使資料需求的日常迭代更加迅速。

doris 的引入推進了有道精品課資料分層的構建,加速了實時數倉的規範化程序,資料中臺團隊在此基礎上一方面向全平台各業務線提供統一的資料介面,並依託於 doris 生產實時資料看板,另一方面定時將實時數倉資料同步至下游脫機數倉供分析師進行自助分析,為實時和離線場景提供資料支撐。

對於後續工作的開展,我們做了如下規劃:

最後,感謝各業務方對資料中颱的支援,目前資料中颱還在迅速發展中,歡迎志同道合的朋友加入我們。

es匯入匯出

解壓 tar xvf node v0.10.22 linux x64.tar.gz 配置環境變數 在 etc profile檔案新增 export node home home node v0.10.0 linux x64 export path path node home bin export ...

大資料有多大?

本文計算人類產生資料的能力。那麼,大資料到底有多大?是不是像某些人想的那樣,可以趨近於無限大呢?在某些時候,我也會這麼想,可是不能把科幻寫成吹牛皮,明明4k的畫質就已經很清晰了,偏偏科幻出乙個4000k的畫質,這沒有意義。下文中,我們就具體計算一下,人類到底能夠產生多大的資料。計算過程 80億人 8...

疫情資料有感

疫情當頭,關於防空策略的選擇,其中重要的爭議點在於死亡率 重症率等資料,每種觀點的持有者都會選取有利於自己觀點的資料,總是難窺全貌,索性就自己抓取資料,做了一點簡單的分析。下面 中給出了包括英 美 德 歐等幾個國家或地區的統計資料,從 中資料不難得出 奧公尺克戎毒株最早報告於2021年11月,所以這...