大数据系统大体可以分成以下四个部分:
1,数据采集层
2,数据计算层
3,数据服务层
4,数据应用层
下图是阿里巴巴大数据系统架构图:
一、数据采集层
数据采集主要分成以下三块数据:
1,Web 端日志
2,App 端日志
3,第三方数据(比如 mysql 增量数据同步)
Web 端和 App 端的日志数据都需要制定各个场景下的埋点规范,用来满足各种通用业务场景下(比如浏览、点击等)的数据分析。
Web 端和 App 端数据采集一般都有各自的埋点 SDK 和对应的埋点管理平台,用来确保埋点数据的规范和准确,第三方数据同步通常会使用一些通用的数据同步工具(如 DataX、Scoop)
数据采集后为了解耦下游各系统(比如批处理计算平台、流处理计算平台等)的耦合,需要架设消息中间件(比如:Kafka、RocketMQ 等)
二、数据计算层
数据计算层包括两大体系:
1,数据存储及计算
2,数据整合及管理
1,数据存储及计算
数据存储这块,如果是公司自己搭集群,基本都是使用 hdfs,如果是用的第三方服务会有很多种(比如 aws 的 s3)
数据计算这块分成批处理和流处理。批处理这块常用的计算组件有:spark 和 hive 等,流处理的计算组件有:spark streaming,flink 等。
在计算这块,为了合理调度上下游任务,一般会使用一些调度组件来解决任务之间的依赖问题(比如 airflow、oozie、azkaban 等)
2,数据整合及管理
数据的整合和管理时为了避免数据的冗余和重复建设,规避数据烟囱和不一致性。
数据的加工链路分成四层:操作数据层( Operational Data Store, ODS)、明细数据层( Data Warehouse Detail , DWD )、汇总数据层( Data Warehouse Summary, DWS )、应用数据层( Application Data Store, ADS )
三、数据服务层
当数据计算好之后,需要提供给前端各种数据应用使用,也就有了数据服务层,该层主要是通过 API 的方式对外提供服务(比如对外提供画像数据查询服务)
该层的数据大部分存储在 Mysql、HBase、ClickHouse 等数据库里。
四、数据应用层
数据应用层就是将现有的数据结合各种业务使用场景,做成各种数据产品。比如阿里目前对商户开放的生意参谋(商家可以通过它找到目前淘宝平台里各品类商品销售情况的数据,商家可以基于这些数据及时调整店铺的产品,通过数据给店铺赋能)