spark内核揭秘-08-spark的Web监控页面

在SparkContext中可以看到初始化UI代码:

 

// Initialize the Spark UI
private[spark] val ui: Option[SparkUI] =
  if (conf.getBoolean("spark.ui.enabled", true)) {
    Some(SparkUI.createLiveUI(this, conf, listenerBus, jobProgressListener,
env.securityManager,appName))
  } else {
    // For tests, do not enable the UI
None
  }

// Bind the UI before starting the task scheduler to communicate
// the bound port to the cluster manager properly
ui.foreach(_.bind())

创建SparkUI对象:

def createLiveUI(
    sc: SparkContext,
conf: SparkConf,
listenerBus: SparkListenerBus,
jobProgressListener: JobProgressListener,
securityManager: SecurityManager,
appName: String): SparkUI =  {
  create(Some(sc), conf, listenerBus, securityManager, appName,
jobProgressListener = Some(jobProgressListener))
}

进入create方法:

进入SparkUI:

SparkUI 继承了WebUI:

而WebUI类定义了def initialize()方法

SparkUI的initialize()实现方法:

上面代码分析:增加页面的tab页面

1、JobsTab:

2、stagesTab:

3、StorageTab:

4、EnvironmentTab:

5、ExecutorsTab:

6、createStaticHandler:

7、createRedirectHandler:

当执行完initialize()方法后,我们回到SparkContext 的Initialize the spark UI:

bind  port:

从上面代码可以看出来,启动了端口号为4040的本地JettyServer

上面代码分析:

1、创建ContextHandlerCollection并将handlers设置到ContextHandlerCollection中

2、增加一个filter:

3、创建Jetty Server并绑定端口号并创建一个QueuedThreadPool,设置到Server中:

4、启动Jetty server,如果启动失败,就抛出异常:

5、试着重试几次启动startServiceOnPort,如果启动失败,就更换新端口号(规则是1+oldPort),重新启动:

 

最终启动成功后,会把信息东西存放在ServerInfo中:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值