大数据常见架构
经典离线数仓架构(业界主流)
ODS 数据准备区
DW 数据仓库层(DMI公共维度,DWD数据明细,DWS轻度数据汇聚)
ADS 应用层
分层原因:
1、简化问题
2、明细血缘
3、减少重复开发、计算
4、适应业务的快速变化
Lambda架构(当前业界主流)
batch Layer-----批处理层(离线) 处理全量数据+预计算
Speed Layer----加速处理层(实时) 仅增量,补充离线高延迟导致的数据空白
Serving Layer--合并层(将查询转换为 离线+实时)
架构分析:
1、Speed Layer数据上的各种错误不会保留,再batch Layer重计算的时候可以更新(优点),但同样会导致实时数据与批计算不一致问题(缺点)
2、Batch Layer和Speed Layer同一个业务逻辑两套代码(缺点),同一份数据计算过程要分别走流和批浪费资源(缺点)
3、批计算无法及时出数(缺点,但可以将天任务切换为小时任务缓解)
4、batch Layer可以采用经典离线数仓架构
Kappa架构
Speed Layer 消息传输层---原始数据全量存储
Serving Layer 流处理层-----处理全量数据
架构分析:
1、只有实时处理(优点简单、数据一致性)
2、Speed Layer保存一定期限内全量数据,可以起新实例重算(优点),重算复杂(缺点)
3、Serving Layer应对大规模数据重算不力,响应不及时(缺点),需要考虑实时计算丢数据的问题(缺点)
流批一体架构(业界认为未来主流)
Lambda 架构的升级版,最早被称为Unified Lambda 架构,使用统一API操作batch Layer和Speed Layer
目前该架构目标:
1)计算流批一体 处理逻辑上流批公用一套代码
2)存储流批一体 存储上流批使用同一套存储数据(避免存储浪费和数据不一致问题)
其他一些构架思想:
IOTA架构---去中心化,清洗计算在客户端完成,服务器端仅查询收集(不适应快速变化的业务需求;需要数据采集--查询全链路数据协同一致)
PS:我仅搭建过经典数仓架构和Lambda架构,对其他结构的认识源于学习和他人的分享,如有认识错误之处还请多多指正
参考文章: