一.三種方案
-
方案1. spark streaming 做實時數據分析,hive 做數據倉庫 ,spark sql 做離線數據分析
- 方案2. spark streaming 做數據同步,es做數據倉庫, spark sql 做離線數據分析
- 方案3:spark streaming 做數據同步,doris 做實時數據分析, spark sql 做離線數據分析
二. 方案優缺點對比
方案一 | 方案二 | 方案三 | |
時效性 | 分鐘級別 | 小時級別 | 分鐘級別 |
數據恢復難度 | 困難(單獨寫程序恢復) | 簡單(重跑數據) | 簡單(重跑數據) |
源數據更新 | 不支持 | 支持 | 支持 |
明細數據查詢 | 不支持 | 支持 | 支持 |
明細和彙總對比 | 沒有明細 | 存在時差 | doris 自帶原子性 |
java 接入複雜度 | 簡單,直接查mysql | 複雜,需要java熟悉es | 簡單,兼容mysql |
不同維度數據對比 | 需要開發者自己對比 | 需要開發者自己對比 |
物化視圖:只需要存儲最小維度數據,其他維度數據自動計算,且保持原子性
|
內存消耗 | 小 | 中 | 大: 完全依賴內存計算,可以通過數據切片減小內存消耗,複雜計算使用 spark |
三.方案三,具體說明
- 數據同步 flume 自定義source開發,可以接入不同數據源,日誌,mysql ,mongo,es
- doris 四層數據結構解釋:
- 原始數據: 保存從數據園過來的最原始的數據
- ETL層: 使用數據切片,每10分鐘從數據原始層切片一次到etl層
- 數據模型層: 根據不同業務需求建立數據模型(主要是不同的物化視圖)
- 大寬表: 數據模型層的數據彙總到大寬表,前端查詢統一查詢大寬表,防止數據對不上
- spark 離線分析:由於doris完全使用內存計算,只能使用於簡單的實時數據計算;當數據巨大,計算很複雜的時候,只能提供離線數據報表,使用spark 讀取 doris 數據,並寫入Doris的方案
參考資料:
doris官網: http://doris.apache.org/master/zh-CN/getting-started/basic-usage.html