百度、阿里、腾讯平台架构都熟悉,小米大数据平台架构OLAP架构演进是否了解(三)

简介: 百度、阿里、腾讯平台架构都熟悉,小米大数据平台架构OLAP架构演进是否了解(三)

三、小米整体架构模型演进



1、小米整体架构 – 离线架构1.0


离线架构的目标是设计出一个能满足离线数据分析的大数据架构,参考下图离线架构流程:


20210601001023985.png


首先业务数据(比如订单、店铺数据)或者埋点(手机 app 后台)数据从通过canal 或 flume采集(或使用 lua 脚本)到数据,通过负载均衡均匀分发到kafka服务器上;


每天定点跑 spark 微批次任务获取数据并进行复杂业务处理最终落地到 Hive 离线数据仓库分为四层(ODS层,  DWD层,DWS层,APP层)进行复杂的业务分析,或者 HBase 数据库进行明细数据的查询操作;        


Hive 离线数据仓库进行复杂的业务处理之后将数据保存到关系型数据库中,比如MySQL中,提供对外查询访问 的接口;        


最终将指标或者报表通过查询接口绑定前端界面或者 echarts 进行数据可视化。


2、Lambda 混合架构v2.0


Lambda 流批混合架构            


Lambda 架构的目标是设计出一个能满足实时大数据系统关键特性的架构,包括有:高容错、低延时和可扩展等 。Lambda架构整合离线计算和实时计算,融合不可变性( Immunability ),读写分离和复杂性隔离等一系列架构原则 。


Lambda 架构主要思想是将大数据系统架构分为多个层次,分别为批处理层,实时处理层,服务层等。


image.png


一般分为 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 架构能够保障离线计算的准确性,但是对于运维来说增大了工作量,需要维护两套流程和批处理和流 处理计算框架。


3、小米架构 – lambda 架构v2.0


小米大数据平台 lambda 架构v2.0


image.png


小米 lambda 架构流程如下图所示:


20210601001552771.png


数据采集


小米公司业务复杂,业务场景包括:广告、搜索推荐、用户画像、金融、信息流,OneData等场景;业务规模包括  1000+运行作业,20000+的CPU Core数,81+TB的内存数;业务数据(比如订单、店铺数据)或者埋点(手机 app  后台)数据从通过canal 或 flume采集(或使用 lua 脚本)到数据,通过负载均衡均匀分发到kafka服务器上;


数据分析和计算层


接着进行数据业务处理时,两条主线:


一条进行离线分析,spark从kafka中消费业务数据,基于业务口径进行数据的计算聚合并将数据落地到 HDFS 分布 式文件系统中,明细数据保存到 HBase中,用于即席查询;


对于传感器等物联网日志数据也会保存到 Crate.IO 分布式数据库中;


另外一条主线是 storm 实时分析 kafka 中的业务数据进行流计算,根据业务需求进行分析计算最终将结果保存到 HBase中;


同时对于时序有强相关性的数据单调递增的数据,比如根据订单时间、入库时间、采购时间、财务入账时间等业务 数据可以直接加载 kafka集群中的数据,实时聚合并将结果用于前端报表展现或者实时大屏看板的输出;


数据可视化平台


MPP数据库构建 OLAP服务的可视化平台,支持数据可视化,报表平台,如下图数鲸一站可视化平台中有某 汽车APP  用户城市占比分布饼图和热力图等展示。


image.png


4、小米架构 – kappa 流批一体架构v3.0


小米大数据平台 kappa 架构v3.0


20210601001922701.png


数据采集


小米内部各个业务系统每一天都会生成大量的业务数据,这些数据中有些是实时的用于计算的,有的日志数据需要先保存到文件系统后续再进行分析和处理的,当然大多数还是以关系型数据会写入到MySQL数据库中,那么如何高 效的实现业务数据向大数据分析平台的数据抽取或同步,小米内部定制了 AgentSource。


此 AgentSource平台中重要的数据采集方式,主要支持6种接入方式,分别是文件传输、HTTP传输,TailDir传输,scribe传输,Thrift传输和OceanDir传输等。


从以上6种数据源采集数据到 Talos(类似于 kafka)消息队列,我们在这里使用 kafka 作为我们的消息队列 中间件。


image.png


数据存储层


image.png


在小米公司的整个大数据生态中,数据存储层涉及到方方面面的技术栈,使用 HDFS 离线分布式存储会保存维度 数据,主要存储历史数据,使用redis内存数据库主要存储热数据,Kudu主要存储历史数据用于数据仓库的计算分析 ,Hive数据仓库主要用于离线数据仓库的历史数据存储,HBase主要用于存储即席数据的数据和细粒度数据明细。


数据分析和计算层    


计算层主要以 flink 流式计算框架对消息队列中的数据进行实时处理,实时部分会将数据保存到clickhouse数 据库或者 doris 数据库中,来保证数据的时效性;flink 还会将离线数据保存到 Hive 离线数据仓库中,计算,用 于与实时的数据的对数、补数等;除此之外部分业务也会基于 druid on kafka 对时间序列数据进行实时聚合操作落 地存储,为实时数据提供服务保障。


数据可视化平台层    


当实时数据计算之后就需要对数据进行一站式可视化的展示,基于 echarts 和 BI 报表工具对数据进行实时展 现,当然也可能是 AB测试,为某些业务用户行为分析提供数据源等。小米的基于统一OLAP服务的可视化平台统称为 数鲸平台,提供一站式服务,BI工具、可视化、用户增长分析、移动应用统计、千亿级在线分析等可视化。


image.png


下图为小米公司架构数据流程逻辑图:


image.png


首先业务数据(比如订单、店铺数据)或者埋点(手机 app 后台)数据从通过 canal 或 flume采集(或使用 lua 脚本)到数据,通过负载均衡均匀分发到 kafka 服务器上;    


DWD层:Flink 集群读取 kafka(小米自研的 talos 的消息队列)集群中的业务流数据,将明细数据打成大宽表 ,分别将数据保存到离线数据仓库 hive 中,实时的 clickhouse 数据库中,前者主要作为备份和数据质量保证(对 数、补数等),后者主要作为查询与分析的核心分析操作,维度数据保存在 redis 内存数据库中;    


DWS层:数据汇总层,部分指标会通过Flink进行实时计算汇总至HBase中或Redis内存数据库中,提供对外接口供 大屏展现使用;其他的业务指标或者报表通过 clickhouse 物化视图等机制周期性汇总,最终生成折线图、柱状图、热力图等报表。同时明细数据也可以保存在 clickhouse 或 hbase 中,方便高级 BI 人员通过 zeppelin 等可视化工 具对订单、店铺、手机访问的日志的进行漏斗、留存、用户行为分析等灵活地 ad-hoc 查询,这个也是 clickhouse  远超于其他 OLAP引擎的强大的地方;


对于流数据还会将数据保存到 HBase 数据库中,phoenix on hbase 通过查询业务逻辑,对最终的结果数据进行落地保存;    


同时保留了 druid on kafka,基于对时间序列强相关的数据进行实时的加载汇总处理;    


最终使用 springcloud 提供最终的数据服务接口,结合echarts 或 fineReport报表平台工具用于展示最终的数据。


四、环境准备


1、软件清单


image.png


2、环境搭建


文章篇幅有限,此处略过,后续项目篇会详细每个软件的安装步骤


相关实践学习
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
目录
相关文章
|
9月前
|
存储 SQL 监控
数据中台架构解析:湖仓一体的实战设计
在数据量激增的数字化时代,企业面临数据分散、使用效率低等问题。数据中台作为统一管理与应用数据的核心平台,结合湖仓一体架构,打通数据壁垒,实现高效流转与分析。本文详解湖仓一体的设计与落地实践,助力企业构建统一、灵活的数据底座,驱动业务决策与创新。
|
7月前
|
存储 分布式计算 资源调度
【赵渝强老师】阿里云大数据MaxCompute的体系架构
阿里云MaxCompute是快速、全托管的EB级数据仓库解决方案,适用于离线计算场景。它由计算与存储层、逻辑层、接入层和客户端四部分组成,支持多种计算任务的统一调度与管理。
625 1
|
9月前
|
消息中间件 分布式计算 大数据
“一上来就搞大数据架构?等等,你真想清楚了吗?”
“一上来就搞大数据架构?等等,你真想清楚了吗?”
171 1
|
9月前
|
SQL DataWorks 关系型数据库
DataWorks+Hologres:打造企业级实时数仓与高效OLAP分析平台
本方案基于阿里云DataWorks与实时数仓Hologres,实现数据库RDS数据实时同步至Hologres,并通过Hologres高性能OLAP分析能力,完成一站式实时数据分析。DataWorks提供全链路数据集成与治理,Hologres支持实时写入与极速查询,二者深度融合构建离在线一体化数仓,助力企业加速数字化升级。
|
8月前
|
SQL 存储 监控
流处理 or 批处理?大数据架构还需要流批一体吗?
简介:流处理与批处理曾是实时监控与深度分析的两大支柱,但二者在数据、代码与资源上的割裂,导致维护成本高、效率低。随着业务对数据实时性与深度分析的双重需求提升,传统架构难以为继,流批一体应运而生。它旨在通过逻辑、存储与资源的统一,实现一套系统、一套代码同时支持实时与离线处理,提升效率与一致性,成为未来大数据架构的发展方向。
|
10月前
|
架构师 Oracle 大数据
从大数据时代变迁到数据架构师的精通之路
无论从事何种职业,自学能力都显得尤为重要。为了不断提升自己,我们可以尝试建立一套个性化的知识目录或索引,通过它来发现自身的不足,并有针对性地进行学习。对于数据架构师而言,他们需要掌握的知识领域广泛而深入,不仅包括硬件、网络、安全等基础技术,还要了解应用层面,并熟练掌握至少一门编程语言。同时,深入理解数据库技术、具备大数据实操经验以及精通数据仓库建模和ELT技术也是必不可少的。只有这样,数据架构师才能具备足够的深度和广度,应对复杂的业务和技术挑战。 构建个人知识体系是数据架构师在学习和工作中的一项重要任务。通过系统化、不断深化的知识积累,数据架构师能够有效应对快速变化的商业环境和技术革新,进一
|
6月前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
448 3
下一篇
开通oss服务