一.三种方案
-
方案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