
SparkUI内实现了数据通讯接口,Web界面查看,spark app内的数据结构进度通过界面可以查看,通过跟踪SparkUI的实现,可以比较清除的看到spark内部的数据结构,因为当数据发送变化时,onPost事件传递给WebUI。

SparkUI继承了WebUI,WebUI使用了eclispe的jetty servlet容器;封装在JettyUtils._内调用启动server.

ps:通过IDEA 双击shift键,可以输入类名或方法调用名称,快速找到类或方法的实现代码。
先看一下WebUI的结构:

WebUI内有多个WebUITab,如
;WebUITab内有多个WebUIPage,通过prefix设定uri路径;
;WebUITab内有多个WebUIPage,通过prefix设定uri路径;
回过来看SparkUI 的构建;

重要的是这个SparkListenerBus,注册了多个Listener,通过创建LiveListenerBus,通过
AsynchronousListenerBus的post(event)方法发送事件消息。


于是我们知道了所有页面上的信息,系统在不同状态下会触发执行发送post事件通知界面变更数据结构;

顺藤摸瓜--》先看看SparkContext的SparkListenerApplicationStart 事件;
ps: IDEA 按住ctrl+点击方法,可查看该方法被调用的代码位置
org.apache.spark.scheduler包内的SparkListener.scala内定义的大量的事件消息体case 类

SparkContext传递消息如下:

在启动了分布式系统的SchedulerBackend TaskScheduler DagScheduler后

得到了

最后调用了刚才的postApplicationStart()发送消息。

至此你可以很快的了解整个消息结构什么时候推送的,再进一步看消息的源头是什么,如何产生的请关注后续的源码分析Spark --分布式调度篇。
没有评论:
发表评论