数据预处理-链路统计-效果与总结|学习笔记

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 快速学习数据预处理-链路统计-效果与总结

开发者学堂课程【大数据实战项目:反爬虫系统(Lua+Spark+Redis+Hadoop框架搭建):数据预处理-链路统计-效果与总结】学习笔记与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/670/detail/11635


数据预处理-链路统计-效果与总结

 

内容介绍:

一、设想运行结果

二、数据运行效果

三、总结

 

一、设想运行结果

Key 是一个前缀加时间戳,

前缀是 cluster.key.monitor. linkprocess=csanti_Monitor_LP,后面加一个当前系统的时间戳,

即 system.current.timeMillis,时间看不到,Value 就是以 serversCountMap 为一个值和以activeNumMap 为key一个值,就是说 redis 里面会有一个 KEY 是前缀加时间戳,而里面的值,按照 serversCountMap 和 Activenum Map这个格式来写进数据,这是预想的结果。

 

二、数据运行效果

LinkCount 做了一个引用,直接执行 DataProcessLauncher,把程序跑起来,这时发现redis里面还是没有数据,因为没有数据流进来,这时候把爬虫跑起来,跑一个单程就足够,右键进行执行,但是在 dataprocessLauncher 里面没有看到数据写入,是因为没有做输出。此时看一下数据有没有写入redis里面。

只要把链路统计的功能写入redis里面,然后跑起来不报错,把爬虫也运行起来,这时候就可以看到redis里面有数据流入进来,都是lp加了一个时间戳,每一个文件里面都有一部分数据,数据都是按照 server count map 和 activeNumMap 格式发过来的数据,

如下所示

{

" serverscountMap":{

“192.168.18.16e"10(当前被访问了10次)

activeNumMap":

“192.168.180.16e" : "21"(当前活跃连接数)

}

}

在redis里面看到了以上数据,马上去看一下爬虫监控平台数据管理的数据采集,进行刷新。

发现刷新没有数据,是因为在前面 resource 里面的 conflig.properties 配置文件里面只配置了 mysql 的路径

jdbc_ur1=jdbc:mysq1://192.168.100.160:3306Vgciantispider?useUnicode=true&characterEncokjdbc_username=root

jdbc_password=123456

并没有对 redis 进行配置

#rediscluster 实例地址

#servers = 192.1$8.30.56:6379,192.168.30.56:6380,192.168.30.56:8379,192.168.30.57:6379

#servers = 10.108.151.91:7380,10.108.151.91:8380

#192.168.2.134

servers = 192.168.2.141;7001,192.168.2.141:7002,192.168.2.141:7003(目前的集群,这是不对的,redis里面是160.7001)

#servers = 192.168.2.128:7001,192.168.p.128:7002,192.168.2.128:7000

所以需要修改IP为

servers = 192.168.100.160:7001,192.168.2.141:7002,192.168.2.141:7003(把集群换成100.160)

爬虫监控平台的 web 界面是在 Resources 里面的 Config.properties 进行读操作。

上面是配置 mysal,下面就可以配置 redis 的实例地址,配置好集群即可。配置完成以后重启服务,这时候,在 web 界面进行刷新,就会出现相应的数据,会出现部署服务器和当前活跃连接数以及最近三天采集数据量。

每一次刷新数据,都会进行更新,这就是链路统计的实际效果。这个做完之后就实现了从数据一步一步进行计算,从 reducebykey 到 server_ip n,到时间戳,时间戳打到了 redis 里面,但是数据里面并没有时间戳,当前活跃连接数也打进了redis,只要写到了 redis 里面,前端界面的效果自动就会出现,剩下的操作都是由前端工程师进行操作的。

 

三、总结

*目标:企业需要实时了解每个链路的运行情况、数据采集量、活跃链接数等信息。需在数据在采集时实时展现相关的信息在前台界面(管理界面)*

1、统计每个批次每台服务器访问的总量

获取到—条数据,使用#CS#""对数据进行切割,获取切分后的第十个数据(角标是9),将第十个数据和1,进行输出。

调用reducebykey (下划线+下划线)求去除这个批次每台服务器的放总量

//1遍历rdd获取到每条数据

val serverCount=rdd.map(message=>{

//2抽取出服务器的IP

var ip=""

if (message.split( regex = "#CS#" , limit =-1).length>9){

ip=message.split( regex = "#CS#" ,limit = -1)(9)

}

//3 将ip和1返回

(ip,1)

})//4调用 reducebykey 计算出 ip 和总数

2.统计每个批次每台服务器当前活跃链接数的量

获取到—条数据,使用“#CS#"对数据进行切割,

获取切分后的第十二个数据(角标是11)和第十个数据(角标是9) ,将第十个数据和第十二个数据,进行输出

调用 reducebykey ((k,v)=>v) 求去每个服务器多个数据中的最后一个数据

//1获取到一条数据,使用“#CS#”对数据进行切割

val activeusercount= rdd .map(message=>{

var ip="""

var activeUserCount=""

//切分数据

if (message.split(""#CS#"").length>11){

//2获取切分后的第十二个数据(角标是11)和第十个数据(角标是9)

//截取当前活跃连接数

activeusercount=message.split(""#CS#"")(11)

//截取IP

ip=message.sp1it("#CS#"")(9)}

//3将第十个数据和第十二个数据,进行输(ip ,activeusercount)

}).reduceByKey((k, v)=>v)//4调用reducebykey ((k,v)=>v)求去每个服务器多个数据中的最后一

3.将两批数据写入 redis

在两个数据不为空的前提下,将两个数据转换成两个小的 map

if ( ! servercount.isEmpty)&& ! activeUsercount.isEmpty()){

//将两个数据转换成两个小的 map

val serverCountMap=servercount.co1lectAsMap()

val activeUserCountMap=activeUserCount.collectAsMap()

封装最终要写入redis的数据(将两个小的 MAP 封装成一个大的 MAP)

val Maps=Map(

"serverscountMap" ->serverCountMap ,"activeNumMap"->activeUsercountMap)

在配置文件中读取出数据key的前缀,+时间戳(redis 中对数据的 key)

va1

key=PropertiesUtil.getstringByKey("cluster .key.monitor .linkProcess" , "jedisConfig.properties ")+System.currentTimeMi1lis().tostring

在配置文件中读取出数据的有效存储时间

val

time=Propertiesutil.getStringByKey("cluster . exptime.monitor" , "jedisconfig . properties").

toInt

将数据写入 redis

redis.setex(key ,time , 3son(DefaultFormats). write(Maps))

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
7月前
|
数据可视化
R语言KNN模型分类信贷用户信用等级数据参数调优和预测可视化|数据分享
R语言KNN模型分类信贷用户信用等级数据参数调优和预测可视化|数据分享
|
7月前
|
负载均衡 网络虚拟化
链路聚合实验
链路聚合实验
|
7月前
|
数据可视化 数据挖掘
R语言分段回归数据数据分析案例报告
R语言分段回归数据数据分析案例报告
|
数据采集 数据可视化 数据挖掘
数据抽样技术全面概述
抽样是研究和数据收集中不可或缺的方法,能够从更大数据中获得有意义的见解并做出明智的决定的子集。
482 2
|
数据采集 数据可视化 大数据
数据清洗_剪除反常数据_统计分布|学习笔记
快速学习数据清洗_剪除反常数据_统计分布
124 0
数据清洗_剪除反常数据_统计分布|学习笔记
|
数据采集 消息中间件 分布式计算
数据预处理-链路统计-serverCoverCount计算|学习笔记
快速学习数据预处理-链路统计-serverCoverCount计算
数据预处理-链路统计-serverCoverCount计算|学习笔记
|
机器学习/深度学习 数据挖掘
数据分析:5个数据相关性指标
相似性度量是许多数据分析和机器学习任务中的重要工具,使我们能够比较和评估不同数据片段之间的相似性。有许多不同的指标可用,每个指标各有利弊,适用于不同的数据类型和任务。
282 0
|
数据采集 消息中间件 监控
数据预处理-链路统计实现思路|学习笔记
快速学习数据预处理-链路统计实现思路
数据预处理-链路统计实现思路|学习笔记
|
数据采集 消息中间件 JSON
数据预处理-系统监控-创建计算方法及监控实现思路|学习笔记
快速学习数据预处理-系统监控-创建计算方法及监控实现思路
165 0
数据预处理-系统监控-创建计算方法及监控实现思路|学习笔记
|
SQL 数据采集 移动开发
网站流量日志分析--统计分析--漏斗模型转化分析实现|学习笔记
快速学习网站流量日志分析--统计分析--漏斗模型转化分析实现
234 0
网站流量日志分析--统计分析--漏斗模型转化分析实现|学习笔记
下一篇
无影云桌面