开发者学堂课程【大数据实战项目 - 反爬虫系统(Lua+Spark+Redis+Hadoop 框架搭建)第六阶段:爬虫识别-爬虫识别效率监控】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/674/detail/11735
爬虫识别-爬虫识别效率监控
内容介绍:
一、数据预处理阶段
二、数据做预处理功能
三、爬虫识别的效率监控
一、数据预处理阶段
1、回到流程里面,我们前面的3-1、3-2是预处理。而在预处理阶段链路统计、数据清洗、数据脱敏等等,数据预处理阶段到最后有一个系统监控。
(1)他监控的就是整个过程当中一个实际的情况,也就是近二十分中的一个曲线情况。
(2)然后是一个系统功能运行是否正常
(3)还有就是当前各链入情况时多少
这个就是预处理阶段。
2、爬虫识别也需要做一个监控,就是爬虫识别的效率,这个效率就是我们这个功能模块。
(1)实际上这个功能模块代码,把他打开引入进来。
这是在前面预处理写的代码叫SparkStreamingMonitor
,现在我们需要加一个叫queryMonitor
的代码,也就是查询这个数据识别过程当中的效率监控。
(2)然后后面代码为什么会报红,因为遍历数据的时候叫message,所以要改成message 就可以了。
添加一个爬虫识别的效率监控,这个代码的顺序和思路,和我们前面做系统数据预处理系统监控的思路是一模一样的,而代码只有一小小部分是不一样的,所以就用不写了。所以只要会写前面的就可以了。
二、数据做预处理的功能
1、回顾数据预处理怎么做:
(1)首先要计算效率,效率是用数据量除以速度
(2)数据在哪,这边有个rdd , rdd.count就是拿到了rdd里面数据的总量。
(3)接下来就计算数据的时间,时间这里没有直接的时间,需要从日志监控模块当中,把我的时间截取出来。
(4)通过4040端口这个路径,可以拿到jsonData数据
(5)比如说要拿到结束时间和开始时间的时间出
(6)时间出拿到以后,用结束时间减去开始时间就是运行时间
(7)先拿到这个大的jsonData,也就是这里面Ctrl+A里面所有的jsonData
(8)然后再通过这个节点
(9)获取到这个节点下面的数据
(10)而下面的数据包含了开始时间和结束时间,通过APPID拼接driver拼接AppName,在拼接这个值就拿到了结束的时间的path和开始时间的path。
(11)然后我在根据我的开始时间去获取这个path对应的值,然后对应的值如果不是空的,那么再去获取里面的getlong。然后再通过value来获取你的开始时间。
(12)同样的方法获取到结束的时间
(13)在用结束时间减去开始时间,就是系统运行时间
(14)既然系统运行时间有了,数据总量也有了,就用数据总量除以运行时间,就是速度。
(15)还有一步就是结束时间出,我要的是年月日时分秒,所以格式化一下,这样数据就准备完成了。
(16)准备完成之后看一下前段业务用什么数据,用运行时间runTime,serverCount总数,appId 、appname、速度runspeed和结束时间endTimes,和总数datacount。
(17)然后准备写入到Redis需要的key,准备时间,然后key有了时间有了,数据有了,写入就OK了。
这就是数据做预处理的功能。
三、爬虫识别的效率监控
1、首先第一步
(1)message 一个 RDD ,这个数据当中.count 当中有多少条数据
(2)拿到之后,然后再去调
(3)这个里面的数据,稍微有变动的就是前面是4040,这里是4041,因为我们有一个数据预处理的任务和爬虫识别任务,而这两个任务第一个用4040,第二个用4041,因为前面已经被占用了,所以往后飘一下,拿到这个端口,端口的uil 。
(4)在获取到下面这份大的jsonobj
(5)josnObj拿到之后,在获取到
(6)下面的数据,同样用ID拼接driver拼接appName,在拼接后面的.streamingMetrics.streaming.lastcompletedBatch_processingEndTime
拿到path,path拿到以后获取对应的值,getlong然后是value
(7)Value 后面拿到的就是结束时间和开始时间
(8)开始时间和结束时间有了,然后用结束时间减去开始时间就是系统运行时间。
(9)又把运行时间赋值到并一个变量
(10)这个变量就是用数据的总数除以时间就是速度
(11)速度有了之后,将前面的结束时间 endTime、appName、applicationId、 sourceCount、时间 costTime、速度 countPerMillis 封装到一个变量里面
(12)然后依然是组装前端的数据,然后通过用上面的变量点出数据,这里有一点不一样。
(13)格式化数据,将数据的时间转化为年月日时分秒的格式
(14)在然后准备 jedis ,准备 key ,运行时间直接读过来了,读过来之后用DefaultFormats 默认的转化为 fieldMap 写入到数据库里面。
这个就是爬虫的效率识别监控。
(15)做好之后看效果,先把爬虫识别预处理先跑起来,右键执行,然后把爬虫执行起来,再然后把爬虫识别的代码跑起来,会发现运行值后4040变成4041,
只要持续在运行,不报错,那就可以了。
(16)这个写完以后,可以看一下前缀,前缀是query
(17)看一下Redis有么有query开头的,右键刷新一下
(18)如上图上部分是query就是爬虫识别监控的key,下部分是value
只要在value里能看到这些数据持续的写进去,然后去起前端界面点击性能监控,就可以看到爬虫的实时监控,数据为0.006,只要看到这个数据就说明爬虫的性能监控也就是实时计算过程就有了,连续刷新一直是0.006, 性能稳定,这里的数据是假的所以数值比较小,指针也看不出来动,如果是真实数据,数据量非常大,速度上来,指针也就能看到在来回变化,只要看到有数值了、发生变化了、那就说明这个爬虫的识别监控句做完了。代码没问题,逻辑是通的,而且也已经把数据返回到了前端界面,看到下图识别的效率就做完了。