1.1技术选型
数据采集:实时:flume-->kafka,DSG->kafka,离线:sqoop
存储平台:底层存储HDFS,
基础设施:hive(数据仓库基础设施)
运算引擎: spark
任务调度:azkaban/oozie、informatica
元数据管理:atlas(或自研系统)
OLAP引擎:即席查询kylin/impala
前端界面:superset(或自研javaweb系统)
产出存储(hbase,elastic search,click house,kylin,mysql)
集群资源规划设计
在企业中通常会搭建一套生产集群和一套测试集群。生产集群运行生产任务,测试集群用于上线前代码编写和测试。
1)生产集群
(1)消耗内存的分开
(2)数据传输数据比较紧密的放在一起(Kafka 、Zookeeper),减少网络IO
(3)客户端尽量放在一到两台服务器上,方便外部访问,防止误操作kill进程
(4)有依赖关系的尽量放到同一台服务器(例如:Hive和Azkaban Executor)
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
nn | nn | dn | dn | dn | dn | dn | dn | dn | dn |
rm | rm | nm | nm | nm | nm | nm | nm | ||
nm | nm | ||||||||
zk | zk | zk | |||||||
kafka | kafka | kafka | |||||||
Flume | Flume | flume | |||||||
Hbase | Hbase | Hbase | |||||||
hive | hive | ||||||||
mysql | mysql | ||||||||
spark | spark | ||||||||
Azkaban | Azkaban | ES | ES |
1,数据采集汇聚
行为域数据
1,日志前端埋点,生成日志数据
2,日志服务器存储为日志文件
3,Flume采集落地hdfs
5,日志预处理
6,落hive数仓ODS层
业务域数据
1,业务系统增删改数据库,形成业务数据
2,Sqoop/DataX/ Kettle数据抽取
注: Kettle是一些传统企业比较熟悉的ETL(extract-transfer-load)工具
3,落hive数仓ODS层
4,增量合并处理
2,数据仓库&用户画像
模型设计
数仓分层运算
各类数据的产出
3,数据服务& OLAP分析平台
- 下游业务系统需求,sqoop导入oracle
- 需要查询的明细数据,入库hbase(或者elastic search)(用户画像标签明细,用户行为序列明细)然后开发数据访问接口服务(restful服务)给应用系统
- 固定报表查询,需要查询的固定报表数据,入库mysql/HBASE(日新、日活、pv、留存、核心业务转化、关键路径转化、关键事件报表,gmv日报周报月报等)
- 规范模型自助多维分析,机器学习和算法分析,利用kylin来提供多维分析服务,sas分析
- 用户行为自助分析服务 BI分析报表,由presto提供即席查询支撑(或clickhouse 或impala)
5.3管理辅助系统
Azkaban/Oozie/informatica任务调度系统
Atlas元数据和血缘管理(数据治理)
分层设计
ADS层: 应用服务层,主要是一些结果报表!
DWS层:数仓服务(service/summary)层(轻度聚合)
DWD层:数仓明细层,一般是对ODS层的表按主题进行加工和划分;本层中表记录的还是明细数据;
DIM层:存储维表
ODS层:操作数据(最原始的数据)层 – 贴源层
分层详解,模型设计
ODS层
数据内容:存放flume采集过来的原始日志
存储格式:以json格式文本文件存储
存储周期:3个月
原始日志数据 ODS.ACTION_WEB_LOG
建表时,一般采用外部表;
表的数据文件格式:跟原始日志文件一致
分区:按天分区(视数据量和计算频度而定,如数据量大且需每小时计算一次,则可按小时粒度分区)
DWD层
数据内容:对ODS层数据做ETL处理后的扁平化明细数据
存储格式:以orc / parquet文件格式存储
存储周期:6个月
不完全星型模型,事实表中,不是所有维度都按维度主键信息存储(维度退化)
地域维度信息:年月日周等时间维度信息,这些维度信息,基本不会发生任何改变,并且在大部分主题分析场景中,都需要使用,直接在事实表中存储维度值
页面信息:页面类别信息,频道信息,业务活动信息,会员等级信息等,可能发生缓慢变化的维度信息,事实表中遵循经典理论存储维度主键,具体维度值则在主题分析计算时临时关联
DWS层
数据内容:根据主题分析需求,从DWD中轻度聚合后的数据
存储格式:以ORC/PARQUET文件格式存储
存储周期:1年
- 维度建模,主题建模
- 最主要思路:按照分析主题,"汇总"各类数据成大宽表 也有一些做法是,将DWS层的表设计成“轻度聚合表”
事实表:记录事实的表;比如,订单表,注册表,购物车,退货表,浏览日志表
维度表:对维度的详细描述信息;比如,地域维表,产品维表,品类维表,栏目维表,时间维表;
ADS层
数据内容:根据业务人员需求,从DWS计算出来的报表
存储格式:以ORC/PARQUET文件格式存储
存储周期:3年
DIM层
存储各种维表
主题域
1交易域
订单GMV分析(维度:渠道,地域,品类,产品,)
当日/本周/本月 GMV总额
当日/本周/本月 订单支付总额
当日/本周/本月 下单人数
当日/本周/本月 客单价分析
当日/本周/本月 取消订单数
当日/本周/本月 取消订单用户数
当日/本周/本月 退货次数
当日/本周/本月 退货用户数
GMV近30日变化趋势
GMV各端贡献情况(平台类型,GMV,订单量,下单人数,客单价,笔单价)
下单金额分布(1000以下,1000-2000,2000-3000,3000-4000,4000+)
当日/本周/本月 商品销售情况(商品名称,品类,店铺,购买次数、人数,销售额)
当日/本周/本月 各品类商品销量趋势(品类,日期,购买次数、人数,销售额)
当日/本周/本月 各店铺商品销量占比(店铺,购买、购买人数,销售额)、
复购分析(维度:品类,人群,终端,地域)
当日/本周/本月 各端复购率
当日/本周/本月 购买频次分析(1次,2-3次,3-4次,4-5次)
订单实时分析
订单量分钟级
订单量小时级
订单用户趋势分析
4客户域(用户画像)
当日/本周/本月 消费情况
当日/本周/本月 充值情况
当日/本周/本月 会员等级分布
当日/本周/本月 活跃分布
当日/本周/本月 退换货分布
当日/本周/本月 商品评价分析统计