文章目录
1.什么是大数据平台?
2.数仓和数据库的区别
项目 | Hive | RDBMS |
---|---|---|
查询语言 | HQL | SQL |
数据存储 | HDFS | 本地磁盘 |
索引 | 无 | 有 |
执行 | MapReduce | Executor |
执行延时 | 高 | 低 |
数据规模 | 大 | 小 |
- RBO 基于规则的优化器
- CBO 基于代价的优化器
hive使用动态CBO:在执行计划生成的过程中动态优化的方式
3.大数据技术栈
4.数仓的分层
5.离线数仓架构和实时数仓架构
离线数仓架构
数据源通过离线的方式导入到离线数仓中
数据分层架构:ODS、DWD、DM
下游应用根据业务需求选择直接读取DM
实时数仓架构
业务实时性要求不断提高,实时处理从次要部分变成主要部分
Lambda架构:在离线大数据架构基础上加了一个加速层,使用流处理技术完成实时性较高的计算
Kappa架构:一实时事件处理为核心,统一数据处理
对比
数仓类型 | 准确性 | 实时性 | 稳定性 |
---|---|---|---|
离线数仓 | 准确度高 | 时延一般在一天 | 稳定性好,方便重算 |
实时数仓 | 准确度低 | 分钟级延迟 | 稳定性差,需考虑数据回溯 |
6.数仓架构发展
Lambda架构
- 批处理层(Batch Layer):存储管理主数据集(不可变的数据集)和预先批处理计算好的视图
- 速度处理层(Apeed Layer):实时处理新来的数据,降低批处理层的处理延时
- 相应查询的服务层(Serving Layer): 返回预先计算的数据视图和速度层构建好数据视图的合并结果来响应查询
不足
- 同样的需求需要开发两套一样的代码
- 同样的逻辑计算两次,整体占用资源会增多
Kappa 架构
- 与Lambda架构不同的是,kappa结构去掉了批处理层这一体系结构
- 统一了数据处理方式,不再维护离线和实时两套代码逻辑
不足
- 需求修改或历史数据重新处理都通过上游重放完成
- 重新处理历史的吞吐能力会低于批处理
- 并不适用于批处理和流处理代码逻辑不一致的场景
处理方式
- 选择一个具有重放功能的、能够保存历史数据并支持多消费者的消息队列
- 当某个或者某些指标有重新处理的需求时,从上游消息队列的最开始重新消费
- 当新作业赶上进度后,切换业务数据源,删除老作业
7.实时数仓建设案例
8.实时数仓建设
整个架构中实时计算一般是Spark+Flink配合
消息队列Kafka一家独大,配合HBase、ES、Mysql进行数据落盘
OLAP领域Presto、Druid、Clickhouse、Greenplum等等层出不穷