技术选型
技术选型主要考虑因素:数据量大小、业务需求、行业内经验、技术成熟度、开发维护成本、总成本预算
- 数据采集传输:Flume、Kafka、Sqoop、Logstash、DataX
- 数据存储:MySQL、HDFS、HBase、Redis、MongoDB
- 数据计算:Hive,Tez, Spark, Flink,Storm
- 数据查询:Presto,Kylin ,Impala,Druid
- 数据可视化:Echarts、Superset、QuickBI、DataV
- 任务调度:Azkaban、Oozie
- 集群监控:Zabbix
- 元数据管理:Atlas
系统数据流程设计
-
数据分为两天数据流:业务数据流 和 埋点日志数据流
-
埋点日志数据由前端埋点和启动日志组成,通过 Nginx 负载均衡发往 SpringBoot 日志服务器产生 LogFile
-
由Flume监听日志生成目录下的LogFile文件进行读取文件并将读取到的数据通过Flume API 将启动日志和事件日志做一个分流发往kafka
-
再编写 Flume 消费者从kafka中拉取数据,并将数据发送到HDFS
-
业务数据保存在MDB中,通过Sqoop 直接将数据导入到HDFS中
-
当所有数据到HDFS上后,通过Hive对数据做一个分层处理
-
最终将结果数据写入到MDB,然后通过Superset进行可视化
版本选择
版本选择尽量不要选择最新的框架版本,选择最新框架半年前左右的稳定版本,且这边直接选择的是Apache
- Hadoop === 3.1.3
- Zookeeper === 3.5.7
- MySQL === 5.7.16
- Hive === 3.1.2
- Flume === 1.9.0
- Kafka === _2.11-2.4.1
- Kafka Eagle === 1.4.5
- Azkaban === 3.84.4
- Spark === 3.0.0
- HBase === 2.0.5
- Phoenix === 5.0.0
- Sqoop === 1.4.6
- Presto === 0.189
- Kylin === 3.0.1
- Atlas === 2.0.0
- Rangeer === 2.0.0
- Solr === 7.7.0
服务器规划
- 资源均衡
- 有依赖的服务需要在同一个节点,例如Azkaban的Excutor调度Hive或者Sqoop,需要在一个节点