大数据系统大体可以分成以下四个部分:
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 等数据库里。
四、数据应用层
数据应用层就是将现有的数据结合各种业务使用场景,做成各种数据产品。比如阿里目前对商户开放的生意参谋(商家可以通过它找到目前淘宝平台里各品类商品销售情况的数据,商家可以基于这些数据及时调整店铺的产品,通过数据给店铺赋能)
数据仓库,英文名称Data Warehouse,简写为DW。数据仓库顾名思义,是一个很大的数据存储集合,出于企业的分析性报告和决策支持目的而创建,对多样的业务数据进行筛选与整合。它为企业提供一定的BI(商业智能)能力,指导业务流程改进、监视时间、成本、质量以及控制。
数据仓库的输入方是各种各样的数据源,最终的输出用于企业的数据分析、数据挖掘、数据报表等方向。
那么,数据仓库都有什么特点呢?
1.主题性
不同于传统数据库对应于某一个或多个项目,数据仓库根据使用者实际需求,将不同数据源的数据在一个较高的抽象层次上做整合,所有数据都围绕某一主题来组织。
这里的主题怎么来理解呢?比如对于滴滴出行,“司机行为分析”就是一个主题,对于链家网,“成交分析”就是一个主题。
2.集成性
数据仓库中存储的数据是来源于多个数据源的集成,原始数据来自不同的数据源,存储方式各不相同。要整合成为最终的数据集合,需要从数据源经过一系列抽取、清洗、转换的过程。
3.稳定性
数据仓库中保存的数据是一系列历史快照,不允许被修改。用户只能通过分析工具进行查询和分析。
4.时变性
数据仓库会定期接收新的集成数据,反应出最新的数据变化。这和特点并不矛盾。
数据仓库的数据要通过ETL来产生,详细请见
ETL(Extraction-Transformation-Loading)
ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。 ETL是BI项目重要的一个环节。 通常情况下,在BI项目中ETL会花掉整个项目至少1/3的时间,ETL设计的好坏直接关接到BI项目的成败。
1、数据的当前性
ODS包括的是当前或接近当前的数据,ODS反映的是当前业务条件的状态,ODS的设计与用户或业务的需要是有关联的,而DW则是更多的反映业务条件的历史数据。
数据仓库存储是一个面向主题的,反映历史变化数据,用于支撑管理决策。
ODS存储的是当前的数据情况,给使用者提供当前的状态,提供即时性的、操作性的、集成的全体信息的需求。
ODS作为数据库到数据仓库的一种过渡形式,与数据仓库在物理结构上不同,能提供高性能的响应时间,ODS设计采用混合设计方式。
ODS中的数据是"实时值",而数据仓库的数据却是"历史值",一般ODS中储存的数据不超过一个月,而数据仓库为10年或更多.
2、数据的更新或加载
ODS中的数据是可以进行修改的,而DW中的数据一般是不进行更新的。ODS的更新是根据业务的需要进行操作的,而没有必要立即更新,因此它需要一种实时或近实时的更新机制。另外,DW中的数据是按照正常的或预先指定的时间进行数据的收集和加载的。
3、数据的汇总性
ODS主要是包括一些细节数据,但是由于性能的需要,可能还包括一些汇总数据,如果包括汇总数据,可能很难保证数据的当前性和准确性。ODS中的汇总数据生命周期比较短,所以可称作为动态汇总数据,如果细节数据经过了修改,则汇总数据同样需要修改。而DW中的数据可称为静态的汇总数据。
4、数据建模
ODS是站在记录层面访问的角度而设计的,DW或DM则是站在结果集层面访问的角度而设计的。ODS支持快速的数据更新,DW作为一个整体是面向查询的。
5、查询的事务
ODS中的事务操作比较多,可能一天中会不断的执行相同的事务,而DW中事务的到达是可以预测的。
6、用途
ODS用于每一天的操作型决策,是一种短期的;DW可以获取一种长期的合作广泛的决策。ODS是策略型的,DW是战略型的。
7、用户
ODS主要用于策略型的用户,比如保险公司每天与客户交流的客服;而DW主要用于战略型的用户,比如公司的高层管理人员。
8、数据量(主要区别之一)
ODS只是包括当前数据,而DW存储的是每一个主题的历史快照;