数据预处理-系统监控-效果及总结|学习笔记

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 快速学习数据预处理-系统监控-效果及总结

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

课程地址:https://developer.aliyun.com/learning/course/672/detail/11677


数据预处理-系统监控-效果及总结


内容介绍:

一.效果

二.总结


一.效果

前面已经把所有的监控的代码都已经全部写完了,但是还没有看到效果,接下来就来看一下效果。找到数据预处理,

//10 系统监控功能(数据与处理的监控功能)

SparkStreamingMonitor.streamMonitor(sc,rdd,serverCount,redis)

这个是调用,爬虫将数据预处理程序跑起来,跑起来以后,在 Redis 中应该没有多数据,但是多了一些数据是之前爬虫残留的数据。右键执行,爬虫跑起来,数据预处理也在走着。目前无报错说明监控的代码也没有问题,验证方法为数据最终会被写入到 Redis 中,在 Redis 中有数据。刷新 Redis,数据数量变为95,很多 DP,DP 是在之前写数据时使用 CSANTI_MONITOR_DP 作为前缀,后面加了时间戳

image.png

这些就是整理出的数据,只要在 Redis 中看到 DP 数据以及结果,立刻到前端界面就有数据

image.png

实时流量转发,曲线图已有数据,系统当前运行情况也已有数据,各链路流量转发情况也有了。

image.png

这就看到实际的效果了,只要在 Redis 中能够看到 DP 数据,看得到数据的结果,就能够看前端界面系统监控功能,这些数据全部都有。实时流量转发曲线图,变颜色运行正常以及各链路流量柱状图全都有了。看到这个效果,监控界面以及监控功能模块就实现了。

将爬虫调节速度,现在是一秒钟填一次,将它停止,修改为500毫秒填一次

//请求jpg

spiderJpg();

Thread.sleep(millis:500);

500毫秒填一次速度是之前的两倍,前端界面的数据应该会有一个比较大的增长

image.png

2019-05-15 22:27:30处下来了是因为刚刚停了一下变为0了,然后长起来了是因为恰好大概是之前的两倍,现在是24。

再刷新出现几个波动,数据在不断增长。再调快,关闭调到300毫秒,再跑起来,速度更快了。在看前端界面,产生更高的值

image.png

这其中确实监控了该循环爬虫。再将速度调小,修改为1000毫秒,再查看效果,曲线图又下降与最开始一致,

看到该效果说明该程序确实监控爬虫数据,监控效果查看完成。


二.总结

关闭程序,回到笔记-任务监控功能,具体实现了如下模块,思路如下:

1.首先开启任务的监控,在 conf 中开启任务监控

代码:

. set(“spark.metrics.conf.executor.source.jvm.class”,“org.apache.spark.metrics.source.JvmSource”)//开启集群监控功能

2.开启之后,通过 http://localhost:4040/ metrics/json/ 路径获得数据,该数据为全部数据

image.png

代码:

val url =“http:// localhost:4040/metrics/json/”

val jsonData = SparkMetricsUtils.getMetricsJson(url)

3.全部数据获取之后,由于数据是 gauges 格式,所以先以 gauges 作为节点勾取出来获取值,也就是先获取 gauges节点的数据。

代码:

val gaugesJson = jsonData.getJSONObject(“gauges”)

4.拼接结束的时间

代码:

val endTimePath = appId +“.driver.”+ appName + “.StreamingMetrics.streaming.lastCompletedBath_processingEndTime”

5.拼接开始的时间

代码:

val startTimePath = appId +“.driver.”+ appName + “.StreamingMetrics.streaming.lastCompletedBath_processingStartTime”

6.单独获取时间(开始时间和结束时间)

代码:

val tmpStartTime = gaugesJson.getJSONObject(startTimePath)

//后去最终的开始时间戳

var startTime: Long = 0

if (tmpStartTime != null) {

startTime = tmpStartTime.getLong(“value”)

}

//获取出结束时间

val tmpEndTime = gaugesJson.getJSONObject(endTimePath)

//后去最终的开始时间戳

var endTime: Long = 0

if (tmpEndTime != null) {

endTime = tmpEndTime.getLong(“value”)

}

7.获取之后求差,也就是运行时间

代码:

val runTime = endTime - startTime

8.运行时间有了,还需要一个获取数据总量,数据总量除以时间就是速度

代码:

val dataCount = rdd.count()

val runSpeed = dataCount.toFloat / runTime.toFloat

9.封装前端数据所需要使用的展现需要的数据

代码:

val Maps = Map(

“costTime”-> runTime.toString,

“serversCountMap”-> serverCount,

“applicationId”-> appId.toString,

“countPerMillis”-> runSpeed.toString,

“applicationUniqueName”-> appName.toString,

“endTime”-> endTimeS,

“sourceCount”-> dataCount.toString

)

10.将数据写入 redis

代码:

val key = PropertiesUtil.getStringByKey(“cluster.key.monitor.dataProcess”,

“jedisConfig.properties”) + System.currentTimeMillis().toString

val time = PropertiesUtil.get.getStringByKey(“cluster.exptime.monitor”,

“jedisConfig.properties”)toInt

redis.setex(key, time, Json(DefaultFormats).write(Maps))

这就是数据预处理的性能监控,也就是任务监控的实现。

随着监控功能的实现完成,代码工作彻底结束了,找到该流程

image.png

监控功能已完成,预处理代码功能模块彻底结束了。现在数据已展现在前端,曲线图有了,系统功能运行情况也变为正常颜色,柱状图也有了,数据写入redis 中怎么到前端界面,这三个模块的展现过程从后端到前端的展现不需要写代码。功能上总体流程已完成,还需要看一个前端展现的代码,这个代码查看以后所有功能结束。

相关实践学习
基于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
相关文章
|
机器学习/深度学习 监控 Kubernetes
使用 Seldon Alibi 进行模型监控
虽然 Seldon 使在生产中部署和服务模型变得容易,但一旦部署,我们如何知道该模型是否在做正确的事情? 训练期间的良好表现并不一定意味着在生产运行几个月后表现良好。 现实世界中发生的事情是我们无法解释的,例如:输入数据逐渐偏离训练数据,以及异常值和偏差。
|
分布式计算 运维 JavaScript
大数据预处理工具的综合使用
大数据预处理工具的综合使用
|
监控 数据可视化
kuma可视化监控
kuma可视化监控
12839 4
|
机器学习/深度学习 存储 JSON
什么是模型监控?(Valohai)
型监控是指密切跟踪机器学习模型在生产中的性能的过程。 它使您的 AI 团队能够识别和消除各种问题,包括糟糕的质量预测和糟糕的技术性能。 因此,您的机器学习模型可提供最佳性能。 有效地监控模型对于使您的机器学习服务获得成功非常重要。 它使您能够在现实世界中产生重大影响。 但是在监控模型时应该跟踪什么? 在这篇文章中,您将找到所有详细信息。
|
机器学习/深度学习 数据采集 自然语言处理
全自动化数据洞察!数据分布对比可视化!⛵
本文介绍如何使用 Pandas Profiling 的比较报告功能,分析两个数据集的分布差异,完成数据探索分析 (EDA) 的完整流程,为后续分析做准备。
246 0
全自动化数据洞察!数据分布对比可视化!⛵
|
数据采集 消息中间件 JSON
数据预处理-系统监控-本地监控介绍|学习笔记
快速学习数据预处理-系统监控-本地监控介绍
181 0
数据预处理-系统监控-本地监控介绍|学习笔记
|
数据采集 存储 JSON
数据预处理-系统监控-监控代码下|学习笔记
快速学习数据预处理-系统监控-监控代码下
69 0
数据预处理-系统监控-监控代码下|学习笔记
|
数据采集 消息中间件 JSON
数据预处理-系统监控-创建计算方法及监控实现思路|学习笔记
快速学习数据预处理-系统监控-创建计算方法及监控实现思路
131 0
数据预处理-系统监控-创建计算方法及监控实现思路|学习笔记
|
数据采集 JSON 监控
数据预处理-系统监控web界面-路径梳理|学习笔记
快速学习数据预处理-系统监控web界面-路径梳理
122 0
数据预处理-系统监控web界面-路径梳理|学习笔记
|
数据采集 存储 JSON
数据预处理-系统监控web界面-系统运行情况数据来源|学习笔记
快速学习数据预处理-系统监控web界面-系统运行情况数据来源
199 0
数据预处理-系统监控web界面-系统运行情况数据来源|学习笔记