项目实施设计
1. 项目需求及架构设计
1.1 项目需求分析
- 用户行为数据采集平台搭建
- 业务数据采集平台搭建
- 数据仓库维度建模
- 分析,用户、流量、会员、商品、销售、地区、活动等电商核心主题,统计的报表指标近100个。
- 采用即席查询工具,随时进行指标分析
- 对集群性能进行监控,发生异常需要报警。
- 元数据管理
- 质量监控
1.2 技术选型
技术选型主要考虑因素:数据量大小、业务需求、行业内经验、技术成熟度、开发维护成本、总成本预算
数据采集传输:Flume,Kafka,Sqoop,Logstash,DataX
数据存储:MySql,HDFS,HBase,Redis,MongoDB
数据计算:Hive,Tez, Spark, Flink,Storm
数据查询:Presto,Druid ,Impala,Kylin
数据可视化:Echarts、Superset、QuickBI、DataV
任务调度:Azkaban、Oozie
集群监控:Zabbix
元数据管理:Atlas
数据质量监控:Griffin、Shell、Python
2. 系统数据流程设计
3. 框架具体版本
产品 | 版本 |
---|---|
Hadoop | 2.7.2 |
Flume | 1.7.0 |
Kafka | 0.11.0.2 |
Hive | 2.3 |
Sqoop | 1.4.6 |
MySQL | 5.6.24 |
Azkaban | 2.5.0 |
Java | 1.8 |
Zookeeper | 3.4.10 |
Presto | 0.189 |
4. 服务器选型
4.1 物理机
以128G内存,20核物理CPU,40线程,8THDD和2TSSD硬盘,戴尔品牌单台报价4W出头。一般物理机寿命5年左右。需要有专业的运维人员,平均一个月1万。电费也是不少的开销。
4.2 云主机
以阿里云为例,差不多相同配置,每年5W。
很多运维工作都由阿里云完成,运维相对较轻松。
企业选择:
金融有钱公司和阿里没有直接冲突的公司选择阿里云。
中小公司、为了融资上市,选择阿里云,拉倒融资后买物理机。
有长期打算,资金比较足,选择物理机。
5. 集群资源规划设计
如何确认集群规模?(假设:每台服务器8T磁盘,128G内存)
每天日活跃用户100万,每人一天平均100条:100万100条=1亿条
每条日志1K左右,每天1亿条:100000000 / 1024 / 1024 = 约100G
半年内不扩容服务器来算:100G180天=约18T
保存3副本:18T3=54T
预留20%~30%Buf=54T/0.7=77T
算到这:约8T10台服务器
如果考虑数仓分层?数据采用压缩?需要重新再计算
集群服务器规划:
机器1 | 机器2 | 机器3 | 机器4 | 机器5 | 机器6 | 机器7 | 机器8 | 机器9 | 机器10 | 机器11 |
---|---|---|---|---|---|---|---|---|---|---|
nm | nm | dn | dn | dn | dn | dn | dn | dn | dn | |
rn | rn | nm | nm | nm | nm | nm | nm | |||
nm | nm | |||||||||
zk | zk | zk | ||||||||
kafka | kafka | kafka | ||||||||
Flume | Flume | Flume | ||||||||
hbase | hbase | hbase | ||||||||
hive | hive | |||||||||
mysql | mysql | |||||||||
spark | spark | |||||||||
ES | ES | |||||||||
Superset | ||||||||||
Azkaban | ||||||||||
Kylin |
其中Kafka要用到zk, flume的数据要提供给kafka,减少网络通信,可以放到同一台机器上,同样的hive需要mysql, 而sparksql需要用到hive, 可以放到同一台机器上。