> 웹 프론트엔드 > HTML 튜토리얼 > spark内核揭秘-08-spark的Web监控页面_html/css_WEB-ITnose

spark内核揭秘-08-spark的Web监控页面_html/css_WEB-ITnose

WBOY
풀어 주다: 2016-06-24 11:50:29
원래의
1164명이 탐색했습니다.

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

// Initialize the Spark UI<strong>private</strong>[spark] <strong>val </strong>ui: Option[SparkUI] =  <strong>if </strong>(conf.getBoolean("spark.ui.enabled", <strong>true</strong>)) {    Some(SparkUI.createLiveUI(<strong>this</strong>, conf, listenerBus, jobProgressListener,      env.securityManager,appName))  } <strong>else </strong>{    // 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 properlyui.foreach(_.bind())
로그인 후 복사
创建SparkUI对象:
<strong>def </strong>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中:



원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿