您的位置:首页 > 产品设计 > UI/UE

Spark Streaming揭秘 Day34 解析UI监听模式

2016-07-13 22:06 821 查看

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: