1. 大数据技术生态
1.1. 大数据技术生态体系图
1.2. 数据流程图
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 到日志服务器;