2015年10月26日星期一

Spark代码研读系列 -- SparkUI

 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路径;

回过来看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 --分布式调度篇。

没有评论:

发表评论