1 基本流程图
2 基本介绍
数据仓库(Data Warehouse),简写为DW或DWH,为企业做决策提供系统数据支持的集合。例:仓库中一个指标为用户浏览网页次数(UV),如果用户多次浏览该网页,如果是电商系统,则可以认为该用户有购买该商品意向,可对该用户进行商品推荐,或者可作为报表提供给决策层进行一些决策
数据仓库的作用并不单单是存储,而是对数进行一些处理后,将处理后的数据,分门别类的存储,作为能够支撑业务或者分析的处理后数据源,使得对应的需求能够从对应的主题中直接提取所需要的数据,这些处理包括一些清洗、转义、分类、重组、合并、拆分、统计等等。
3 数仓层介绍
(1)分层介绍
ODS:原始数据层,存放原始数据直接加载原始日志、数据,保持数据原貌不做处理。
DWD(DWI):数据明细层,结构和粒度与ODS层保持一致,对ODS层数据进行数据清洗(去除空值,脏数据,不符合要求的数据)。
DWS:数据服务层,以DWD为基础,进行轻度汇总,一般为日粒度,如用户当日、设备当日、商品当日等,通常在该层会组成跨主题的宽表,如用户签到数、浏览商品数、退款数等多字段宽表(主题可理解为对指标进行的分类聚合)。
ADS(APP/DAL/DM):数据应用层,面向实际的数据需求,以DWD或者DWS层的数据为基础,组成各种统计报表,统计结果最终同步到RDS以供BI或应用系统查询使用。
注释:通常来说数仓包括这四层,但是在不同的公司根据不同的应用场景,层数可能会有所差别,名称也会不同,各层的功能,也可能会有区别。
(2)图示
4 数据来源
(1)埋点(实时采集埋点的用户行为数据)
行为数据,用户在使用产品过程中,与客户端产品交互过程中产生的数据,比如页面浏览、点击、停留、评论、点赞、收藏等,是数仓在计算时的数据源之一。
(2)业务数据(每天定时导入业务数据)
业务数据,业务流程中产生的登录、订单、用户、商品、支付等相关的数据,这类操作属于业务数据,同样也是数仓计算的数据来源之一,通常存储在DB中,包括Mysql、Oracle等
5 数仓系统整体架构图
6 数仓使用技术
数据采集传输:Flume,Kafka,Logstash,DataX,Sqoop
数据存储:Hive,MySql,HDFS,HBase,S3,ES
数据计算:Spark,Hive,Tez,Flink,Storm
数据查询:Presto,Impala,Kylin
7 数仓系统数据流程图
注释(按从上到下从左到右顺序注释):
(1)离线计算,可计算大量数据,但是速度较慢
(2)某些公司会将业务数据与日志数据全部存入mysql
(3)相当于路由器,负责将数据分发至不同的业务服务器,保证多台服务器的负载均衡
(4)Flume构成
- source→channel→sink
- channel:file channel(安全,数据落盘,不会轻易丢失,速度慢)、memory channel(不安全,数据存在内存中,容易丢失,速度快)、kafka channel(无sink,把kafka直接看做sink将数据传入)
- 拦截器:位于source与channel之间
- 监控器(ganglia):监控数据流通是否正常
- 内存:flume默认内存为1G,企业在使用时一般会调为4G
(5)实时计算,计算少量数据,速度快