Spark Streaming揭秘 Day34

解析UI监听模式

今天分享下SparkStreaming中的UI部分,和所有的UI系统一样,SparkStreaming中的UI系统使用的是监听器模式。监听器模式是指,首先注册事件源,当事件或者数据发生改变时,监听器就会接收到这个改变,并对这种改变做出响应,监听器模式可以简单的理解为一种MVC的模式。

SparkStreaming中的UI系统有两个非常的支持,就是处理时间process time和Batch等待时间Scheduler Delay。一般情况来说,我们有两个很重要的要求,这也是监控的重点:

  1. 我们的处理时间应该是要小于delay。
  2. 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监听模式的更多相关文章

  1. Spark Streaming揭秘 Day35 Spark core思考

    Spark Streaming揭秘 Day35 Spark core思考 Spark上的子框架,都是后来加上去的.都是在Spark core上完成的,所有框架一切的实现最终还是由Spark core来 ...

  2. Spark Streaming揭秘 Day31 集群模式下SparkStreaming日志分析(续)

    Spark Streaming揭秘 Day31 集群模式下SparkStreaming日志分析(续) 今天延续昨天的内容,主要对为什么一个处理会分解成多个Job执行进行解析. 让我们跟踪下Job调用过 ...

  3. Spark Streaming揭秘 Day28 在集成开发环境中详解Spark Streaming的运行日志内幕

    Spark Streaming揭秘 Day28 在集成开发环境中详解Spark Streaming的运行日志内幕 今天会逐行解析一下SparkStreaming运行的日志,运行的是WordCountO ...

  4. Spark Streaming揭秘 Day26 JobGenerator源码图解

    Spark Streaming揭秘 Day26 JobGenerator源码图解 今天主要解析一下JobGenerator,它相当于一个转换器,和机器学习的pipeline比较类似,因为最终运行在Sp ...

  5. Spark Streaming揭秘 Day23 启动关闭源码图解

    Spark Streaming揭秘 Day23 启动关闭源码图解 今天主要分析一下SparkStreaming的启动和关闭过程. 从Demo程序出发,主要聚焦在两段代码: 启动代码: 关闭代码: 启动 ...

  6. Spark Streaming揭秘 Day21 动态Batch size实现初探(下)

    Spark Streaming揭秘 Day21 动态Batch size实现初探(下) 接昨天的描述,今天继续解析动态Batch size调整的实现. 算法 动态调整采用了Fix-point迭代算法, ...

  7. Spark Streaming揭秘 Day20 动态Batch size实现初探(上)

    Spark Streaming揭秘 Day20 动态Batch size实现初探(上) 今天开始,主要是通过对动态Batch size调整的论文的解析,来进一步了解SparkStreaming的处理机 ...

  8. Spark Streaming揭秘 Day5 初步贯通源码

    Spark Streaming揭秘 Day5 初步贯通源码 引子 今天,让我们从Spark Streaming最重要的三个环节出发,让我们通过走读,逐步贯通源码,还记得Day1提到的三个谜团么,让我们 ...

  9. Spark Streaming揭秘 Day33 checkpoint的使用

    Spark Streaming揭秘 Day33 checkpoint的使用 今天谈下sparkstreaming中,另外一个至关重要的内容Checkpoint. 首先,我们会看下checkpoint的 ...

随机推荐

  1. Linux下的lds链接脚本简介

    转载:http://hubingforever.blog.163.com/blog/static/171040579201192472552886/   一. 概论 每一个链接过程都由链接脚本(lin ...

  2. java中文件操作

    例一:从一个文件读入数据,然后写入另外一个文件 package lipika; import java.io.FileInputStream; import java.io.FileNotFoundE ...

  3. 关于 VS2012 创建 MVC4 Empty 项目的一个小问题

    今天下午发现一个新建的项目工作异常,主要表现为应该返回JSON的Action没有返回JSON字符串,而是返回了JsonResult的对象名,即字符串“System.Web.Mvc.JsonResult ...

  4. const 指针与指向const的指针

    最近在复习C++,指针这块真的是重难点,很久了也没有去理会,今晚好好总结一下const指针,好久没有写过博客了,记录一下~ const指针的定义: const指针是指针变量的值一经初始化,就不可以改变 ...

  5. Codeforces Round #191 (Div. 2)

    在div 188中,幸运的达成了这学期的一个目标:CF1800+,所以这次可以打星去做div2,有点爽. A.Flipping Game 直接枚举 B. Hungry Sequence 由于素数的分布 ...

  6. windows 端搭建nfs 服务器

    因为最近虚拟机桥连模式总是用不了会出问题,所以今天花了半个小时研究了一下在Windows主机下搭建一个nfs服务器进行文件传输. 其实步骤很简单,如下: 1. 下载NFS Windows服务器软件,我 ...

  7. live(),bind(),delegate()等事件绑定方法的区别及应用解析

    1 首先bind()方法是最直观的,但是也是弊端最大的. $('a').bind('click',function(){alert('that tickles!')}) 这和事件冒泡有直接关系,当我们 ...

  8. ActiveMQ(5.10.0) - 删除闲置的队列或主题

    方法一 通过 ActiveMQ Web 控制台删除. 方法二 通过 Java 代码删除. ActiveMQConnection.destroyDestination(ActiveMQDestinati ...

  9. Git CMD - init: Create an empty Git repository or reinitialize an existing one

    命令格式 git init [-q | --quiet] [--bare] [--template=<template_directory>] [--separate-git-dir &l ...

  10. Ubuntu系统应用程序创建快捷方式的方法

    大家安装了最新版的Ubuntu 14.0系统之后可能觉得很不习惯,因为Ubuntu的桌面干干净净没有任何快捷方式,任务栏的图标拖不下来,右键点击程序图标也没有创建快捷方式的菜单选项: 那如何把自己经常 ...