项目实施设计

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. 系统数据流程设计

Alt text

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
半年内不扩容服务器来算:100G
180天=约18T
保存3副本:18T3=54T
预留20%~30%Buf=54T/0.7=77T
算到这:约8T
10台服务器
如果考虑数仓分层?数据采用压缩?需要重新再计算
集群服务器规划:

机器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, 可以放到同一台机器上。

评论