2.1 项目需求

  1. 用户行为数据采集平台搭建
  2. 业务数据采集平台搭建
  3. 数据仓库维度建模
  4. 主题分析
    1. 用户
    2. 流量
    3. 会员
    4. 商品
    5. 销售
    6. 地区
    7. 活动
    8. etc
  5. 数据即时分析
  6. 数据离线分析
  7. 集群性能监控
  8. 元数据管理
  9. 数据质量监控

2.2 数据选型

考虑因素:

  • 数据规模
    • MySQL
    • Hive
  • 业务需求
    • 读文件:Flume
    • 读业务库:Sqoop
  • 行业内经验
  • 技术成熟度
  • 开发维护成本
  • 预算

    2.2.1 数据采集传输:

    Flume,Kafka,Sqoop,Logstash、DataX
    Flume和Kafka都是日志系统。在此之外,Kafka是一个可持久化的分布式的消息队列,自带存储;Flume是管道模式的数据同步工具。所以业界一般采用Flume+Kafka的方式来进行大数据的日志同步,其中Flume用于数据传输,Kafka用于日志缓存,用于削峰。
    数据库同步主要是Sqoop和DataX,其中Sqool基于MapReduce实现,在分布式系统中性能较强,DataX在单机中性能较强。Sqool对于Apache框架如HDPS支持较好,DataX对阿里系平台如ODPS支持较好。

    2.2.2 数据存储

    MySQL,HDFS,HBase,Redis,MongoDB
    MySQL关系型数据库,响应快,数据量小,可拓展性差
    HDFS非关系型大数据数据库,响应较慢,基于分布式系统,可拓展性强
    HBase用于实时分析的数据存储
    Redis用于实时分析的缓存

    2.2.3 数据计算

    Hive,Tez,Spark,Flink,Storm
    Hive老框架,默认基于MapReduce的离线计算,稳定可靠,性能不如Spark
    Tez在MR的基础上进行了优化,一般用于替代Hive自带的计算引擎
    Spark基于RDD抽象化MR,同时基于内存计算,速度相对于MR快很多,可以达到近实时,由于除计算引擎外与Hive差别不大,业界通常使用Hive on Spark开发
    Flink,阿里收购,实时计算,速度非常快但是服务器负载高

    2.2.4 数据查询

    Presto,Druid,Impala,Kylin
    Presto即时查询工具,Impala为CDH的替代版
    Druid用于实时处理和查询
    Kylin多维查询

    2.2.5 数据可视化

    Echarts,DataV,SuperSet

    2.2.6 任务调度

    Azkaban,Oozie

    2.2.7 集群监控

    Zabbix

    2.2.8 元数据管理

    Atlas

    2.2.9 数据质量监控

    Griffin,Shell,Python

2.3 数据仓库架构

懒得搬了


2.4 集群规模


2.5 集群具体规划