目录
一.技术选型
技术选型主要考虑因素: 数据量大小,业务需求,行业内经验,技术成熟度,开发维护成本,总成本预算
离线实时公用 离线 实时 不采用
- 数据采集传输: Flume,Kafka,DataX,Maxwell,Sqoop,Logstash
- 数据存储: MySql,HDFS,HBase,Redis,MongoDB
- 数据计算: Hive,Spark,Flink,Strom,Tez
- 数据查询: Presto,Kylin,Impala,Druid,ClickHouse,Doris
- 数据可视化: Superset,Echarts,Sugar,QuickBI,DataV
- 任务调度: DolphinScheduler,Azkaban,Oozie,Airflow
- 集群监控: Zabbix,Prometheus
- 元数据管理: Atlas
- 权限管理: Ranger,Sentry
二.系统数据流程设计
三.框架版本选型
-
如何选择Apache/CDH/HDP版本?
- Apache: 运维麻烦,组件间兼容性需要自己调研 (一般大厂使用,技术实力雄厚,有专业的运维人员) (建议使用)
- CDH: 国内使用最多的版本,但CM不开源,6.3.2版本已经收费,1个节点1万美金/年(收费之后,Apache使用量超过了CDH)
- HDP: 开源,可以进行二次开发,但是没有CDH稳定,国内使用较少
-
云服务选择
- 阿里云的EMR,MaxCompute,DataWorks
- 亚马逊云EMR
- 腾讯云EMR
- 华为云EMR
四. 服务器选型
服务器选择物理机还是云主机?
-
物理机:
- 以128G内存,20核物理CPU,40线程,8T机械磁盘(HDD)和2T固态磁盘(SSD),报价单台约4W-5W,一般物理机寿命5年左右
- 需要有专业的运维人员,平均1万/月,也有电费开销
-
云主机:
- 云主机: 以阿里云为例,差不多相同配置,5W/年
- 很多运维工作都由阿里云完成,运维相对轻松
-
企业选择
- 金融有钱公司和阿里没有直接冲突的选择阿里云
- 中小公司为了融资上市,选择阿里云,拿到融资后买物理机
- 有长期打算,资金比价充足,选择物理机
五. 集群规模
1.如何确认集群规模
假设每台服务器8T磁盘,128G内存
每天日活跃用户100万,每人每天平均100条: 100万 x 100条 = 1亿条
每条日志1K左右,每天1亿条: 1亿 / 1024 / 1024 = 约100G
计算带宽 100G数据传输白天8小时 得出传输平均速度4M每秒,峰值升百倍,三台服务器够抗
半年内不扩容服务器来算: 100G x 180天 = 约18T
原始数据保存副本3份(不算中间业务表,也没计算压缩,只看原始数据): 18T * 3 = 54T
预留20% ~ 30%的空间: 54T / 0.7 = 约77T
算到这里: 约 8T * 10台服务器
2.数仓分层 数据压缩
如果数仓分四层 原始层-清洗层-预聚合层-指标层
考虑数仓分层,每多一层数据量也会增加,清洗层与原始层数据接近1:1,预聚合层与原始层的比例比较小,一般看业务聚合指标,通常指标根据业务扩展增加,指标层占用磁盘大小不稳定,一般业务规模不大的不会超过原始层的数据量,这里用清洗层与原始层数据的比例为3:1,指标层的数据量相对于原始层可以忽略不计,采用数据压缩snappy压缩约3倍,如果只压缩原始数据和清洗层的数据,重新计算结果为
(原始54T * 压缩0.3) + (清洗层54T * 压缩0.3) + 54T * 0.3 * 预聚合层0.33 = 约38T
预留20% ~ 30%的空间: 38T / 0.7 = 约54T
算到这里: 约8T * 7台服务器