数据仓库的概念

输入数据分类

  • 业务数据
    客户端交互,一般用关系数据库存储
  • 用户行为数据
    来自客户端,使用埋点的方式,存储为日志文件
    前端页面,点击network–>筛选log–>URL解析–>一个请求,向后端发送商品名称
    特点:点击多次,数量大;写入后台后,客户端不会查–>使用关系型数据库不划算
  • 爬虫数据
    来自其他平台,尽量少用

数据仓库总体介绍

数据仓库技术组件 数据仓库主要技术_数据


Hive数仓(数据的备份、清晰、聚合、统计):

  • ods层:Flume和DataX的数据直接存储到ODS层(原封不动的HIVE表数据):
    主要作用:备份
  • dw层:ods层数据执行sql语句进行聚合统计
  • dwd主要作用:数据清洗阶段,对数据的类型进行检验、敏感数据脱敏;
  • dws主要作用:进一步指标统计,多个表join得到结果,预先聚合——性能控制:例如两个大表多次被join得到不同的指标影响性能——改进:直接join两个表,得到中间表,从中间表取多个指标数据
  • ads层:统计最终的指标结果数仓的最终目的:

数据输出:

  • 统计数据可视化
  • 用户画像(通过共同特征:用户标签)、推荐系统(By用户标签等)
  • 方式:机器学习算法

项目需求分析

  • 采集平台需求,借助采集工具保存到实时和离线数仓
  • 用户行为数据采集——Flume
  • 业务数据——DataX
  • 离线数仓
  • 数仓的主题及各个主题的指标(33个)
  • 实时数仓
  • 数仓的主题及各个主题的指标(48个)

技术框架

技术选型

考虑因素:

  • 数据量大小
  • 业务需求:实时or离线
  • 行业内经验:例如实时数仓的选型——Spark / Flink
  • 技术成熟度
  • 开发维护成本
  • 总成本预算:开源 or 订购
  • Datax:全量同步——与Sqoop场景类似
  • Maxwell:增量同步
  • Logstash:数据量少适用,数据采集,同Flume
  • MongoDB:机器学习 or 爬虫
  • 离线主要用:Hive on Spark
  • Presto 、 ClickHouse:即席查询工具

数据流程设计

数据仓库技术组件 数据仓库主要技术_离线_02


Nginx:数据转发,防止数据倾斜。

什么是数据倾斜?计算节点处理的数据量不同,造成内存不足或者运行速度较慢。