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())
<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 を入力します:
Spark UI は WebUI を継承します:
WebUI クラスは defInitialize() メソッドを定義します
SparkUI のInitialize() 実装メソッド:
上記のコードの分析: ページへのタブ ページの追加
1.
1. ContextHandlerCollection を作成し、ハンドラーを ContextHandlerCollection に設定します:
2.
3. Jetty サーバーを作成してポート番号をバインドし、QueuedThreadPool を作成してサーバーに設定します。
4. Jetty サーバーを起動すると、例外がスローされます。
5.起動に失敗した場合は、startServiceOnPort の開始を数回再試行します。 ,会ハンドル情報东西存放ServerInfo中: