Spark Streaming揭秘 Day34 解析UI监听模式
Spark Streaming揭秘 Day34
解析UI监听模式
今天分享下SparkStreaming中的UI部分,和所有的UI系统一样,SparkStreaming中的UI系统使用的是监听器模式。监听器模式是指,首先注册事件源,当事件或者数据发生改变时,监听器就会接收到这个改变,并对这种改变做出响应,监听器模式可以简单的理解为一种MVC的模式。
SparkStreaming中的UI系统有两个非常的支持,就是处理时间process time和Batch等待时间Scheduler Delay。一般情况来说,我们有两个很重要的要求,这也是监控的重点:
- 我们的处理时间应该是要小于delay。
- delay不要一直增长,如果一直增长,表明系统无法处理输入,无法应对越来越多的batch,表明处理能力不足。
事件监听机制
在StreamingContext中,与监听相关最重要的就是监听器:

里面有很多回调方法,以onBatchCompleted为例,发现是构建了一个BatchUIData,记录运行时的一些数据。

再看在uiTab UI本身,其实现是StreamingTab展示流式作业的统计信息。

首先,把listener注册给streamingContext和sparkContext,说明也会接收sparkContext的事件。
其次,通过attach方法添加页面。从截图中,可以看到,在Tab里面添加了两个页面,同时将Tab添加在sc的页面中,显示在整个spark的web控制台上。attach是在Streaming启动的时候调用的。

具体页面的实现是在StreamingPage的render方法中。里面是格式化页面的内容,div + css 编程。


在attachPage的时候,会封装render方法注册给servlet调用。页面被渲染出来,背后要有一个循环器,这个循环器是被jetty提供的。

具体事件
我们找一个具体的事件,看下这个事件具体的过程。
我们看下作业完成时间:

我们注意到在JobScheduler发送消息时,里面包涵batchInfo。里面记录了处理开始结束的时间。

之后,通过监听器StreamingJobProgressListener,调用onBatchCompleted方法,会重新刷新一下数据。

在StreamingPage中,会读取listener中的数据,进行页面渲染。

最终,Jetty会根据数据,不断进行页面刷新。
欲知后事如何,且听下回分解!
DT大数据每天晚上20:00YY频道现场授课频道68917580
Spark Streaming揭秘 Day34 解析UI监听模式的更多相关文章
- Spark Streaming揭秘 Day35 Spark core思考
Spark Streaming揭秘 Day35 Spark core思考 Spark上的子框架,都是后来加上去的.都是在Spark core上完成的,所有框架一切的实现最终还是由Spark core来 ...
- Spark Streaming揭秘 Day31 集群模式下SparkStreaming日志分析(续)
Spark Streaming揭秘 Day31 集群模式下SparkStreaming日志分析(续) 今天延续昨天的内容,主要对为什么一个处理会分解成多个Job执行进行解析. 让我们跟踪下Job调用过 ...
- Spark Streaming揭秘 Day28 在集成开发环境中详解Spark Streaming的运行日志内幕
Spark Streaming揭秘 Day28 在集成开发环境中详解Spark Streaming的运行日志内幕 今天会逐行解析一下SparkStreaming运行的日志,运行的是WordCountO ...
- Spark Streaming揭秘 Day26 JobGenerator源码图解
Spark Streaming揭秘 Day26 JobGenerator源码图解 今天主要解析一下JobGenerator,它相当于一个转换器,和机器学习的pipeline比较类似,因为最终运行在Sp ...
- Spark Streaming揭秘 Day23 启动关闭源码图解
Spark Streaming揭秘 Day23 启动关闭源码图解 今天主要分析一下SparkStreaming的启动和关闭过程. 从Demo程序出发,主要聚焦在两段代码: 启动代码: 关闭代码: 启动 ...
- Spark Streaming揭秘 Day21 动态Batch size实现初探(下)
Spark Streaming揭秘 Day21 动态Batch size实现初探(下) 接昨天的描述,今天继续解析动态Batch size调整的实现. 算法 动态调整采用了Fix-point迭代算法, ...
- Spark Streaming揭秘 Day20 动态Batch size实现初探(上)
Spark Streaming揭秘 Day20 动态Batch size实现初探(上) 今天开始,主要是通过对动态Batch size调整的论文的解析,来进一步了解SparkStreaming的处理机 ...
- Spark Streaming揭秘 Day5 初步贯通源码
Spark Streaming揭秘 Day5 初步贯通源码 引子 今天,让我们从Spark Streaming最重要的三个环节出发,让我们通过走读,逐步贯通源码,还记得Day1提到的三个谜团么,让我们 ...
- Spark Streaming揭秘 Day33 checkpoint的使用
Spark Streaming揭秘 Day33 checkpoint的使用 今天谈下sparkstreaming中,另外一个至关重要的内容Checkpoint. 首先,我们会看下checkpoint的 ...
随机推荐
- start.s中的.balignl 16,0xdeadbeef
转载:http://blog.csdn.net/l_thread/article/details/6020036 开始看start.s中的代码,又一句.balignl 16,0xdeadbeef,不知 ...
- uva 784 Maze Exploration 染色 搜索水题 DFS
染色问题,其实就是看看图上某一点能扩散多少. 用DFS解决,因为BFS不是很熟 =-=...以后要多练. 提交后32ms,优化了一下,在递归前进行判定,优化到22ms,不是优化的很好... 代码: # ...
- php 发送邮件
php我们可以使用系统的mail函数去发送邮件 但是需要配置一下邮件环境 这里选择使用PHPMailer 这样比较方便 首先下载PHPMailer:https://github.com/Synchr ...
- java笔记00-目录
--2013年7月26日17:49:59 学习java已久,趁最近有空,写一个总结: java笔记01-反射:
- Java操作zip压缩和解压缩文件工具类
需要用到ant.jar(这里使用的是ant-1.6.5.jar) import java.io.File; import java.io.FileInputStream; import java.io ...
- IP地址,子网掩码、默认网关,DNS理论解释
在网上发现的这篇文章写的非常好,有理论有示例. (一) 问题解析 001. 问: IP地址,子网掩码,默认网关,DNS服务器,有什么区别呀?我知道没有IP地址就不能上网,我也知道没设DNS就不 ...
- hdu 4421 2-SAT问题
思路:我们需要判断是否有满足的a[n],其实也就是对每一个二进制位进行判断,看是否有满足的.那么我们每次取出一个二进制位,这样每一位只有0,1两种状态,就成了比较典型的2-SAT问题了. #inclu ...
- BZOJ 3505
3505: [Cqoi2014]数三角形 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1171 Solved: 703[Submit][Statu ...
- Jersey(1.19.1) - Hello World, Get started with a Web application
1. Maven Dependency <properties> <jersey.version>1.19.1</jersey.version> </prop ...
- C#中的 ref 传进出的到底是什么 解惑篇
今天在浏览博文时,看到这篇文章:C#中的ref 传进出的到底是什么 ? 在传对象时使用ref的疑问 另附言: 本文写于早上,就在想发布的那瞬间,靠,公司断网了,原来修改的部分丢失了. 网一断就是一天了 ...