1、小米整体架构 – 离线架构1.0
离线架构的目标是设计出一个能满足离线数据分析的大数据架构,参考下图离线架构流程:
2.Lambda 流批混合架构
Lambda 架构的目标是设计出一个能满足实时大数据系统关键特性的架构,包括有:高容错、低延时和可扩展等 。Lambda架构整合离线计算和实时计算,融合不可变性( Immunability ),读写分离和复杂性隔离等一系列架构原则 。
Lambda 架构主要思想是将大数据系统架构分为多个层次,分别为批处理层,实时处理层,服务层等。
首先业务数据(比如订单、店铺数据)或者埋点(手机 app 后台)数据从通过canal 或 flume采集(或使用 lua 脚本)到数据,通过负载均衡均匀分发到kafka服务器上;
每天定点跑 spark 微批次任务获取数据并进行复杂业务处理最终落地到 Hive 离线数据仓库分为四层(ODS层, DWD层,DWS层,APP层)进行复杂的业务分析,或者 HBase 数据库进行明细数据的查询操作;
Hive 离线数据仓库进行复杂的业务处理之后将数据保存到关系型数据库中,比如MySQL中,提供对外查询访问 的接口;
最终将指标或者报表通过查询接口绑定前端界面或者 echarts 进行数据可视化。
一般分为 BatchLayer 和 SpeedLayer,BatchLayer处理的是离线的全量数据,SpeedLayer处理是实时的增量 数据,BatchLayer 根据全体离线数据得到BatchView,BatchLayer处理的是全体数据集,SpeedLayer处理的数据是最近的增量数据流,SpeedLayer是增量而非重新计算,从而 SpeedLayer 是 BatchLayer 在实时性上的一个补充。
Lambda 架构的 servingLayer 用于相应用户的查询请求,合并生成的 BatchLayer和SpeedLayer的数据集到最终的数据集。
Lambda 架构的批处理部分存储一般使用 Hadoop 的 HDFS, 计算使用MapReduce离线计算;Hbase用于查询大 量的历史结果数据; 流处理部分采用增量数据处理 Structure Streaming 或 Flink Streaming 处理,存储增量 的结果一般会放到消息队列 kafka 中,内存数据库 redis 或者 分布式Mpp 数据库 clickhouse doris等。
Lambda 架构能够保障离线计算的准确性,但是对于运维来说增大了工作量,需要维护两套流程和批处理和流 处理计算框架。
敬请期待下一教程
https://www.kkidc.com/about/article/id/24/
离线架构的目标是设计出一个能满足离线数据分析的大数据架构,参考下图离线架构流程:
2.Lambda 流批混合架构
Lambda 架构的目标是设计出一个能满足实时大数据系统关键特性的架构,包括有:高容错、低延时和可扩展等 。Lambda架构整合离线计算和实时计算,融合不可变性( Immunability ),读写分离和复杂性隔离等一系列架构原则 。
Lambda 架构主要思想是将大数据系统架构分为多个层次,分别为批处理层,实时处理层,服务层等。
首先业务数据(比如订单、店铺数据)或者埋点(手机 app 后台)数据从通过canal 或 flume采集(或使用 lua 脚本)到数据,通过负载均衡均匀分发到kafka服务器上;
每天定点跑 spark 微批次任务获取数据并进行复杂业务处理最终落地到 Hive 离线数据仓库分为四层(ODS层, DWD层,DWS层,APP层)进行复杂的业务分析,或者 HBase 数据库进行明细数据的查询操作;
Hive 离线数据仓库进行复杂的业务处理之后将数据保存到关系型数据库中,比如MySQL中,提供对外查询访问 的接口;
最终将指标或者报表通过查询接口绑定前端界面或者 echarts 进行数据可视化。
一般分为 BatchLayer 和 SpeedLayer,BatchLayer处理的是离线的全量数据,SpeedLayer处理是实时的增量 数据,BatchLayer 根据全体离线数据得到BatchView,BatchLayer处理的是全体数据集,SpeedLayer处理的数据是最近的增量数据流,SpeedLayer是增量而非重新计算,从而 SpeedLayer 是 BatchLayer 在实时性上的一个补充。
Lambda 架构的 servingLayer 用于相应用户的查询请求,合并生成的 BatchLayer和SpeedLayer的数据集到最终的数据集。
Lambda 架构的批处理部分存储一般使用 Hadoop 的 HDFS, 计算使用MapReduce离线计算;Hbase用于查询大 量的历史结果数据; 流处理部分采用增量数据处理 Structure Streaming 或 Flink Streaming 处理,存储增量 的结果一般会放到消息队列 kafka 中,内存数据库 redis 或者 分布式Mpp 数据库 clickhouse doris等。
Lambda 架构能够保障离线计算的准确性,但是对于运维来说增大了工作量,需要维护两套流程和批处理和流 处理计算框架。
敬请期待下一教程
https://www.kkidc.com/about/article/id/24/