项目整体介绍
1 数仓整体说明
1.1 技术选型
数据采集:FLUME
存储平台:HDFS
基础设施:HIVE
运算引擎:SPARKSQL
资源调度:YARN
任务调度:AZKABAN
元数据管理:ATLAS
1.2 分层设计:
分层的意义:数据管理更明晰!运算复用度更高!需求开发更快捷!便于解耦底层业务(数据)变化!
1.2.1 ODS层
ODS层:源数据层,分为流量域ODS层及业务域ODS层
流量域ODS层:数据来源于日志服务器(用户行为日志数据(APP端和WEB端)),日志服务器将数据生产到Kafka,然后使用Flume日志采集工具消费Kafka中的数据并将数据采集到Hdfs集群,在Hive中将数据加载到ODS层的Hive表中,这样就完成了原始数据的采集
业务域ODS层:数据来源于业务系统中的关系型数据库mysql,采用sqoop抽取工具将数据从mysql导入到Hdfs中,再在Hive中将数据加载到ODS层相应的表中
1.2.2 DWD层
DWD层:数据明细层,同样分为流量域DWD层及业务域DWD层
流量域DWD层:将数据在ODS层进行ETL操作(先对ODS层数据进行清洗,过滤(过滤掉缺失重要字段信息,重要字段信息为空或者json格式不正确的数据),降维等操作),再抽取到DWD层
业务域DWD层:抽取ODS层每天的增量数据,与DWD层每天的全量数据进行合并,得到DWD层当天的全量数据并写到DWD层,如:订单明细表,购物车明细表,优惠券明细表,红包明细表等
1.2.3 DWS层
DWS层:轻度聚合层,为ADS报表服务层提供便利做的聚合表
流量域DWS层:如流量主题概况表,用户分布分析主题表,新用户留存表,用户活跃度主题表,交互事件主题表,站外投放主题表,站内运营主题表,优惠券主题表,红包主题表等
业务域DWS层:订单金额主题表,订单数量,人数主题表,营销活动主题表,优惠券使用主题表等
1.2.4 ADS层
ADS层:应用服务层(报表层)
根据实际需求在DWS层的基础上进行各种分组,聚合即可得到报表
1.2.5 DIM层
DIM层:维表层,存放的都是一些维度信息相关的表格,如地理位置维度表等
2. ODS层详细设计
2.1 ODS层功能
ODS:操作数据层
主要作用:直接映射操作数据(原始数据),数据备份;
建模方法:与原始数据保持完全一致
存储周期:相对来说,存储周期较短;视数据规模,增长速度,以及业务的需求而定;对于埋点日志数据ODS层存储,通常可以选择3个月或者半年
2.2 数据规模
假如:公司用户规模1000万
平均日活400万平均
每个用户访问1.2次
每个用户平均每次访问时长
按经验,每个用户平均10分钟每 5~10 秒产生一条事件 则每次访问,将产生10分钟60秒/10 = 60条事件日志则,
每天产生的日志总条数: 400万1.260条 = 28800 万=2.88亿条日志 每条日志大小平均为0.5k,
则每日增量日志大小为:28800万0.5k = 288005M= 144G
每月累积增量为:144G*