该系统使用Flume将用户的实时搜索日志数据采集到Kafka,再使用Flume拉取Kafka将采集的源数据存储到HDFS,同时使用Spark Streaming消费Kafka进行计算分析,对于离线数据使用Spark SQL分析计算,以及使用机器学习等手段挖掘将计算结果存储MySQL,使用django进行web系统开发,使用Echarts对计算结果进行可视化展示。
├─flume-conf // Flume配置文件
├─simulate // 日志模拟文件
├─ml-job // 机器学习代码
├─spark-job // spark 实时计算代码和离线分析代码
├─sql // 数据库结构及数据sql文件
└─webapp // web服务
需求配置项 | 配置信息 |
---|---|
系统 | Ubuntu 16.04 |
Hadoop | 2.7.3 |
Spark | 2.3.3 |
Flume | 1.8.0 |
Kafka | 2.4.0 |
Zookeeper | 3.6.1 |
Redis | 5.0.1 |
MySQL | 8.0.21 |
注:详细流程请见系统操作说明书及演示视频
实时数据:python模拟抽取写入
离线数据:来源于搜狗实验室SogouQ完整数据集,该数据集包含200806一个月的数据,两千多万行数据
模拟日志文件:log_sogon_random.py
注:需要将搜狗精简版放在同一个文件夹下。
1、启动Hadoop start-all.sh
2、启动zookeeper ./zkServer.sh start
3、启动Kafka ./bin/kafka-server-start.sh config/server.properties
需要自己创建两个topic weblog-spark-topic;weblog-sink-topic
kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic weblog-spark-topic
kafka-topics.sg --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic weblog-sink-topic
查看kafka topic
:
4、启动Flume :分别启动A1和A3 ,A1负责监控文件,A3负责拉取kafka上传HDFS备份
flume-ng agent --name a1 --conf $FLUME_HOME/conf --conf-file $FLUME_HOME/conf/file-kafka.conf -Dflume.root.logger=INFO, console
flume-ng agent --name a3 --conf $FLUME_HOME/conf --conf-file $FLUME_HOME/conf/kafka-hdfs.conf -Dflume.root.logger=INFO, console
5、启动Redis
windows:redis-server.exe redis.windows.conf
1、启动spark streaming :IDEA打开StreamJob
需要修改kafka的地址和端口
2、打包jar使用 spark-submit
提交Job
1、离线分析计算结果已经计算完成,导入sql
打开系统即可查看
2、如需自己运行
:
Spark SQL指标分析代码:MyJob
里面也包含了sparksql清洗导出csv的代码,导出后需要整理到一个文件夹
机器学习代码:
LDA主题聚类代码:lda_job.py
需要修改文件路径
TextRank:keywords_jieba.py
需要修改文件路径
1、导入mysql
数据库 ,sql文件在目录中,数据库名为dingke
2、pycharm 打开 webapp
使用 python manager.py runserver
启动项目