Spark实践——基于SparkStreaming的实时⽇志分析系统
本⽂基于《Spark 最佳实践》第6章 Spark 流式计算。
我们知道⽹站⽤户访问流量是不间断的,基于⽹站的访问⽇志,即 Web log 分析是典型的流式实时计算应⽤场景。⽐如百度统计,它可以做流量分析、来源分析、⽹站分析、转化分析。另外还有特定场景分析,⽐如安全分析,⽤来识别 CC 攻击、 SQL 注⼊分析、脱库等。这⾥我们简单实现⼀个类似于百度分析的系统。
1.模拟⽣成 web log 记录
在⽇志中,每⾏代表⼀条访问记录,典型格式如下:
分别代表:访问 ip,时间戳,访问页⾯,响应状态,搜索引擎索引,访问 Agent。
简单模拟⼀下数据收集和发送的环节,⽤⼀个 Python 脚本随机⽣成 Nginx 访问⽇志,为了⽅便起见,不使⽤ HDFS,使⽤单机⽂件系统。
⾸先,新建⽂件夹⽤于存放⽇志⽂件
然后,使⽤ Python 脚本随机⽣成 Nginx 访问⽇志,并为脚本设置执⾏权限, 代码见
设置可执⾏权限的⽅法如下
scala python
之后,编写 bash 脚本,⾃动⽣成⽇志记录,并赋予可执⾏权限,代码见
赋予权限
执⾏ genLog.sh 查看效果,输⼊ ctrl+c 终⽌。
2.流式分析
创建 Scala 脚本,代码见
3.执⾏
同时开启两个终端,分别执⾏ genLog.sh ⽣成⽇志⽂件和执⾏ WebLogAnalyse.scala 脚本进⾏流式分析。执⾏ genLog.sh
执⾏ WebLogAnalyse.scala, 使⽤ spark-shell 执⾏ scala 脚本
效果如下,左边是 WebLogAnalyse.scala,右边是 genLog.sh