系统数据流程设计.jpg
数据仓库概念
数据的传入
一、日志采集系统 记录用户行为(搜索、悬停、点击事件、按钮、输入,请求异常采集等) PC端、App端(Ios,安卓),前端收集埋点数据
二、业务系统数据库 JavaEE后台把数据存储到mysql中,用来完成交易的业务数据
三、爬虫
数据的处理
将数据收集到Data warehouse中,进行ETL清洗。做分层处理,便于分析和扩展指标。 作用:为企业提供战略决策支持,改进业务流程、控制成本、提高产品质量等。 准备工作:清洗、转义、分类、重组、合并、拆分、统计等。
数据结果呈现
1.报表系统 -- 各类图表 2.用户画像 -- 各类标签 3.推荐系统 -- 根据标签,进行推荐 4.机器学习 -- 科学分析,强化推荐 5.风控系统 -- 响应各类异常
项目需求分析
1.用户行为数据采集平台搭建 2.业务数据采集平台搭建 3.数据仓库维度建模 * 4.分析指标:用户、流量、会员、商品、销售、地区、活动等电商核心主题,统计报表指标个数。 5.采用即席查询工具,随时进行指标分析 6.对集群性能进行监控,发生异常需要报警 * 7.元数据管理 * 8.质量监控 *
思考
1.项目技术如何选型? 2.框架版本如何选型(Apache、CDH、HDP等) 3.服务器使用物理机还是云主机? 4.如何确认集群规模?(假设每台服务器8T硬盘)
技术选型主要考虑因素:数据量大小、业务需求、行业内经验(框架的使用)、技术成熟度、开发维护成本、总成本预算等。
具体使用的框架和技术
数据采集传输:
Flume(进) Kafka(缓冲池) Sqoop(出) Logstash -- ELK Data X -- 阿里
数据存储:
MySQL -- 模拟java后台的数据 HDFS -- Hive HBase -- kylin,实时的kv格式数据 Redis -- 缓存 MongoDB -- 前端
数据计算:
Hive -- 底层是mr Tez -- 基于内存 Spark -- 计算引擎(多表) Flink -- 支持实时的单条数据处理与批处理(多表,被阿里收购,取名Blink,添加了很多新特性) Strom -- 实时处理(old)
数据查询:
Presto -- 基于内存(快速查询,Apache) Druid -- 德鲁伊(只支持单表、宽表查询) Impala -- 基于内存(快速查询,CDH) Kylin -- 预计算,预聚合,多维度(国人开发的Apache顶级项目)
数据可视化:
Echarts -- 百度开源,需要绘图,使用难度高 Superset -- 免费开源,适合中小型企业使用,简单轻量 QuickBI -- 收费 Data D -- 收费、酷炫
任务调度:
Azkaban Oozie -- CDH内部集成,web页面安装即可
集群监控:
Zabbix -- 报警(通过邮件、钉钉、甚至电话通知,属于专业运维使用)
元数据管理
Atlas -- 可以用来管理hive的元数据,形成血缘依赖关系
数据质量监控
Griffin -- 监工,查看指标运行是否正确正常