Skip to content

项目实施设计

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. 框架具体版本

产品版本
Hadoop2.7.2
Flume1.7.0
Kafka0.11.0.2
Hive2.3
Sqoop1.4.6
MySQL5.6.24
Azkaban2.5.0
Java1.8
Zookeeper3.4.10
Presto0.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
nmnmdndndndndndndndn
rnrnnmnmnmnmnmnm
nmnm
zkzkzk
kafkakafkakafka
FlumeFlumeFlume
hbasehbasehbase
hivehive
mysqlmysql
sparkspark
ESES
Superset
Azkaban
Kylin

其中Kafka要用到zk, flume的数据要提供给kafka,减少网络通信,可以放到同一台机器上,同样的hive需要mysql, 而sparksql需要用到hive, 可以放到同一台机器上。