第二章 项目需求及架构设计

2.1 项目需求分析

1.用户行为数据采集平台搭建(前端埋点)

2.业务数据采集平台搭建

3.数据仓库维度建模

4.分析,用户、流量、会员、商品、销售、地区、活动的核心主题

5.采用即席查询工具,随时进行指标分析

6.对集群性能进行监控,异常报警

7.元数据管理

8.质量监控

2.2 项目框架

2.2.1技术选型

主要考虑:数据量、业务需求、行业内经验、维护成本、总预算

数据采集传输:Flume(日志手机系统),Kafka(分布式日志系统),Sqoop(在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递)

数据存储:Mysql、HDFS(Hadoop分布式文件系统)

数据计算:Hive(基于Hadoop的的一个数据仓库工具)、Tez、Spark(大规模数据处理而设计的快速通用的计算引擎)

数据查询:Presto(内存计算型的引擎)、Druid

数据可视化:Superset(轻量级可视化平台)

任务调度:Azkaban(批量工作流任务调度器)

集群监控:Zabbix

元数据管理:

数据质量监控:


2.2.2 系统数据流程设计


Nginx主要用于反向代理(Reverse Proxy)方式,该是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。简单来说就是真实的服务器不能直接被外部网络访问,所以需要一台代理服务器,而代理服务器能被外部网络访问的同时又跟真实服务器在同一个网络环境,当然也可能是同一台服务器,端口不同而已。

sqoop主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

kafka主要基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务。

Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。

2.2.3 框架版本选型

Apache、CDH、HDP

Apache版本选择:

       

2.2.4服务器选型

选择物理机或是云主机

2.2.5 集群资源规划设计

集群规模如何计算?(假设每台服务器有8T磁盘,128G内存)

日活用户100万,每人一天平均100条数据则有:100*100=1亿

每条日志1kb,则有100000000/1024/1024=100G

半年内不扩容服务器有:100G*180=18T

保存3副本:18T*3=54T

预留20%~30%Buf=54T/0.7=77T

则大约需要10台服务器。

若考虑数仓分层问题则需要更多地服务器,若数据可以压缩,则服务器数量则可以相应减少。

你可能感兴趣的:(第二章 项目需求及架构设计)