数据仓库:数据仓库技术选型及方案设计

1. 大数据技术生态

1.1. 大数据技术生态体系图

数据仓库:数据仓库技术选型及方案设计_第1张图片
大数据技术生态体系.png

1.2. 数据流程图

数据仓库:数据仓库技术选型及方案设计_第2张图片
未命名文件 (1).png

1.3. 大数据框架

  • Apache
    -- 使用最广泛的框架;
    -- 需要专业的运维人员;
    -- 组件兼容性需要仔细调研(Hive v2.3+);
  • CDH
    -- 收费较贵;

1.4. 服务器

  • 物理机
    -- 品牌:戴尔;
    -- 内存:128G
    -- 内核:20 核 物理 CPU,40 线程(一般 1 核 CPU 对应 2 线程);
    -- 机械硬盘:8T HDD 机械硬盘;
    -- 固态硬盘:2T SSD 固态硬盘;
    -- 价格: 4W 左右;
    -- 寿命: 5 年左右;
  • 云主机
    -- 阿里云、腾讯云,5W / 年;

需要根据 业务场景、集群规模 综合考虑。

1.5. 数据存储

  • MySQL
    -- 存储业务数据;
    -- 存储数据分析的结果数据;
  • HDFS
    -- 与 Hive 配套,存储海量数据;
  • HBase
    -- 存储快速查表数据;
  • Redis
    -- 缓存;
  • MongoDB
    -- 爬虫数据存储;

1.6. 数据采集传输:

  • 用户行为数据:
    -- Flume,读取日志文件;
    -- Kafka,削峰;
    -- Logstash,Flume 替代品,专门处理日志(ELK);
  • 业务数据:
    -- Sqoop,处理 MySQL;
    -- DataX,Sqoop 的替代品,阿里出品的处理 MySQL 的工具;

1.7. 数据计算


离线计算:处理非实时问题,比如用于统计日活、周活、月活等;

  • Hive(SQL)
    -- 基于 MapReduce,做数据查询;
  • Mahaout
    -- 数据挖掘;
  • Tez
    -- 基于内存,计算速度快;
  • Spark Core
    -- 基于内存,计算速度快,掉电很麻烦;
  • Spark Mlib
    -- 数据挖掘
  • Spark R
    -- 数据分析
  • Spark SQL
    -- 数据查询

实时计算:处理实时数据,比如天猫双十一实时数据计算;

  • Spark Streaming
    -- 准实时 计算,实际采用批处理;
  • Flink
    -- TODO
  • Storm
    -- 实时计算,正在被抛弃;

1.8. 数据查询

  • Presto
    -- 快速查询
    -- 支持 Redis、Kafka、MySQL
    -- 与 Apache 框架配合使用,安装包使用较方便;
  • Druid
    -- 实时处理、批处理、流处理
  • Impala
    -- Presto 替代品,速度快叫 Presto 速度更快,但是多数据源支持范围较 Presto 更窄;
    -- 与 CDH 框架配合,CDH 默认集成 Impala;
    -- Apache 安装 Impala 极为困难
  • Kylin
    -- 多维度数据处理;

1.9. 数据可视化

  • Echarts
    -- 百度开发的平台,需要 JavaScript 支持;
  • Superset
    --

1.10. 任务调度

  • Azkaban,
  • Oozie

1.11. 集群监控

  • Zabbix

1.12. 元数据管理

  • Atlas

1.13. 数据质量监控

  • Griffin
  • Shell
  • Python

1.14. 数据平台和配置

  • ZooKeeper

2. 技术选型考虑因素

  • 数据量大小 \ 集群规模
    -- 万级 \ 十万级:MySQL;
    -- 百万级 \ 千万级:;
    -- 亿级 \ 十亿级 \ 百亿级:HDFS;
  • 数据类型
    -- 数据库(结构化数据)
    -- 文件日志(半结构化数据)
    -- 视频、文本、图片文件等(非结构化数据)
  • 业务需求
    -- 用户行为数据:日志文件;
    -- 业务数据:MySQL;
  • 行业内经验
    -- 同行业(竞争对手)参考;
  • 技术成熟度
    -- 尽可能使用较稳定版本的技术;
  • 开发维护成本
    -- 开发难度 & 维护难度,需要作出长远规划、做好动态平衡;
  • 预算
    -- 费用预算应结合业务实际需求,不盲目求新求大;

3. 集群规模参考值

日数据量:

  • 日活 100万,每人 100 条日志,共计 100万 X 100 = 1 亿条;

日存储量:

  • 每条日志 1K 大小,每天:1亿条 / 1024 / 1024 = 100G;

半年不扩容:

  • 100G/天 X 180天 = 18T;

保存 3 副本:

  • 18 t x 3 = 54T;

预留 Buff:

  • 预留 20% ~ 30% Buff = 54T / 0.7 = 77T;

服务器需求

  • 8T * 10 台标准服务器(20核 / 128G / 8T HDD / 2T SSD);

注意:此方案未考虑 数仓分层 和 数据压缩

5. 服务器规划注意事项

  • ResourceManager 和 NameNode 不能放在同一台服务器;
  • ResourceManager 需要做高可用;
  • ZooKeeper,安装台数为 奇数,最少 3 台;
  • Kafka,与 ZooKeeper 安装在一起,Kafka 与 ZooKeeper 有大量的数据通信;
  • Flume,与 Kafka 安装在一起,Flume 采集完的数据需要快速写入 Kafka;
    -- 如果有专门的额日志服务器,一般单独部署 Flume 到日志服务器;

你可能感兴趣的:(数据仓库:数据仓库技术选型及方案设计)