# gmall **Repository Path**: shellyan/gmall ## Basic Information - **Project Name**: gmall - **Description**: 实时数仓 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2020-09-02 - **Last Updated**: 2020-12-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 一、需求概述 做每一步都要知道目的是什么,在做什么 - 离线需求:时效性不敏感,根据前一日的数据生成报表等数据。统计指标、报表繁多。 - 实时需求:注重时效性,当日数据实时监控 以前8-2,现在一般5-5,逐渐会过渡到完全实时数仓 ## 1. 离线处理架构 ### 日志 用tomcat日志采集系统(web服务器)接收用户手机(客户端)手机的用户日志数据,nginx根据Tomcat的负载情况,实现负载均衡。 ![image-20200902093004178](https://img-1258293749.cos.ap-chengdu.myqcloud.com/20200902093004.png) kafka削峰。离线可能不用kafka,实时一定要用。kafka吞吐量很高。所以flume会对接kafka。从kafka到hdfs中间还得加一个flume。 为了前端显示,会将ads层数据放入mysql,以方便web服务器调用。 **本次项目要做的部分:** 1. 生成数据 2. tomcat 3. nginx 不用熟练掌握,知道原理,跟着写即可。 ### 业务 业务mysql不能直接用来做分析,这是用来OLP的。直接在上面作分析,有可能会影响业务的正常进行。 因此要先放到hdfs上,再做分析。 ## 2. 实时处理架构 ![image-20200902100253558](https://img-1258293749.cos.ap-chengdu.myqcloud.com/20200902100253.png) ### 日志 (全部都讲,除了tomcat) 比如日活,用sparkstreaming流处理,使用redis去重,只保留第一次启动的明细,redis不适合存聚合数据。主要存hbase--mysql或es,phenix存hbase。这次项目用hbase搭配es。 ### 业务 写入mysql后,需要查询数据,写入kafka。sqoop适合离线,每天导入昨天的。现在需要几秒查一次,用sqoop的话,频繁全表查询对业务mysql压力太大。 选择canal(阿里开发,外国maxmell),只监控实时变化,只把变化导入kafka。 ## 3. 需求 ### 需求1: 当日活跃用户及分时趋势图,昨日对比图(主讲)--3天 启动日志 当日登录过的用户就可以认为是活跃用户. 这个可以从日志记录来获取到哪些用户登录了. ### ~~需求2: 当日新增用户数及分时趋势图,昨日对比图~~ ### 需求3: 当日交易额及分时趋势图,昨日对比图(主讲)--主要讲canal 1天 ### ~~需求4: 当日订单数及分时趋势图,昨日对比图~~ ### 需求5: 购物券功能风险预警--动作日志 ### 需求6: 用户购买明细灵活分析功能--2天(最难,两个流进行join)