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 到日志服务器;










