2.1 项目需求
- 用户行为数据采集平台搭建
- 业务数据采集平台搭建
- 数据仓库维度建模
- 主题分析
- 用户
- 流量
- 会员
- 商品
- 销售
- 地区
- 活动
- etc
- 数据即时分析
- 数据离线分析
- 集群性能监控
- 元数据管理
- 数据质量监控
2.2 数据选型
考虑因素:
- 数据规模
- MySQL
- Hive
- 业务需求
- 读文件:Flume
- 读业务库:Sqoop
- 行业内经验
- 技术成熟度
- 开发维护成本
- 预算
2.2.1 数据采集传输:
Flume,Kafka,Sqoop,Logstash、DataX
Flume和Kafka都是日志系统。在此之外,Kafka是一个可持久化的分布式的消息队列,自带存储;Flume是管道模式的数据同步工具。所以业界一般采用Flume+Kafka的方式来进行大数据的日志同步,其中Flume用于数据传输,Kafka用于日志缓存,用于削峰。
数据库同步主要是Sqoop和DataX,其中Sqool基于MapReduce实现,在分布式系统中性能较强,DataX在单机中性能较强。Sqool对于Apache框架如HDPS支持较好,DataX对阿里系平台如ODPS支持较好。2.2.2 数据存储
MySQL,HDFS,HBase,Redis,MongoDB
MySQL关系型数据库,响应快,数据量小,可拓展性差
HDFS非关系型大数据数据库,响应较慢,基于分布式系统,可拓展性强
HBase用于实时分析的数据存储
Redis用于实时分析的缓存2.2.3 数据计算
Hive,Tez,Spark,Flink,Storm
Hive老框架,默认基于MapReduce的离线计算,稳定可靠,性能不如Spark
Tez在MR的基础上进行了优化,一般用于替代Hive自带的计算引擎
Spark基于RDD抽象化MR,同时基于内存计算,速度相对于MR快很多,可以达到近实时,由于除计算引擎外与Hive差别不大,业界通常使用Hive on Spark开发
Flink,阿里收购,实时计算,速度非常快但是服务器负载高2.2.4 数据查询
Presto,Druid,Impala,Kylin
Presto即时查询工具,Impala为CDH的替代版
Druid用于实时处理和查询
Kylin多维查询2.2.5 数据可视化
Echarts,DataV,SuperSet2.2.6 任务调度
Azkaban,Oozie2.2.7 集群监控
Zabbix2.2.8 元数据管理
Atlas2.2.9 数据质量监控
Griffin,Shell,Python
2.3 数据仓库架构
懒得搬了