SparkUI¶
SparkUI is a WebUI of Spark applications.

Creating Instance¶
SparkUI takes the following to be created:
- AppStatusStore
- SparkContext
- SparkConf
-
SecurityManager - Application Name
- Base Path
- Start Time
- Spark Version
While being created, SparkUI initializes itself.
SparkUI is created using create utility.
UI Port¶
getUIPort requests the SparkConf for the value of spark.ui.port configuration property.
getUIPort is used when:
SparkUIis created
Creating SparkUI¶
create(
sc: Option[SparkContext],
store: AppStatusStore,
conf: SparkConf,
securityManager: SecurityManager,
appName: String,
basePath: String,
startTime: Long,
appSparkVersion: String): SparkUI
create creates a new SparkUI with appSparkVersion being the current Spark version.
create is used when:
SparkContextis created (with the spark.ui.enabled configuration property turned on)FsHistoryProvider(Spark History Server) is requested for the web UI of a Spark application
Initializing¶
initialize is part of the WebUI abstraction.
initialize creates and attaches the following tabs:
initialize attaches itself as the UIRoot.
initialize attaches the PrometheusResource for executor metrics based on spark.ui.prometheus.enabled configuration property.
UIRoot¶
SparkUI is an UIRoot
Review Me¶
SparkUI is <
-
SparkContext is created (for a live Spark application with spark-webui-properties.md#spark.ui.enabled[spark.ui.enabled] configuration property enabled)
-
FsHistoryProvideris requested for the spark-history-server:FsHistoryProvider.md#getAppUI[application UI] (for a live or completed Spark application)
.Creating SparkUI for Live Spark Application image::spark-webui-SparkUI.png[align="center"]
When <SparkContext is created for a live Spark application), SparkUI gets the following:
-
Live AppStatusStore (with a ElementTrackingStore using an core:InMemoryStore.md[] and a AppStatusListener for a live Spark application)
-
Name of the Spark application that is exactly the value of SparkConf.md#spark.app.name[spark.app.name] configuration property
-
Empty base path
When started, SparkUI binds to <SPARK_PUBLIC_DNS environment variable or spark-driver.md#spark_driver_host[spark.driver.host] Spark property.
NOTE: With spark-webui-properties.md#spark.ui.killEnabled[spark.ui.killEnabled] configuration property turned on, SparkUI <SecurityManager.checkModifyPermissions permissions).
SparkUI gets an <
-
<
>, i.e. JobsTab.md#creating-instance[JobsTab], spark-webui-StagesTab.md#creating-instance[StagesTab], spark-webui-StorageTab.md#creating-instance[StorageTab], spark-webui-EnvironmentTab.md#creating-instance[EnvironmentTab] -
AbstractApplicationResourceis requested for spark-api-AbstractApplicationResource.md#jobsList[jobsList], spark-api-AbstractApplicationResource.md#oneJob[oneJob], spark-api-AbstractApplicationResource.md#executorList[executorList], spark-api-AbstractApplicationResource.md#allExecutorList[allExecutorList], spark-api-AbstractApplicationResource.md#rddList[rddList], spark-api-AbstractApplicationResource.md#rddData[rddData], spark-api-AbstractApplicationResource.md#environmentInfo[environmentInfo] -
StagesResourceis requested for spark-api-StagesResource.md#stageList[stageList], spark-api-StagesResource.md#stageData[stageData], spark-api-StagesResource.md#oneAttemptData[oneAttemptData], spark-api-StagesResource.md#taskSummary[taskSummary], spark-api-StagesResource.md#taskList[taskList] -
SparkUI is requested for the current <
> -
Creating Spark SQL's
SQLTab(whenSQLHistoryServerPluginis requested tosetupUI) -
Spark Streaming's
BatchPageis created
[[internal-registries]] .SparkUI's Internal Properties (e.g. Registries, Counters and Flags) [cols="1,2",options="header",width="100%"] |=== | Name | Description
| appId | [[appId]] |===
[TIP]¶
Enable INFO logging level for org.apache.spark.ui.SparkUI logger to see what happens inside.
Add the following line to conf/log4j.properties:
Refer to spark-logging.md[Logging].¶
== [[setAppId]] Assigning Unique Identifier of Spark Application -- setAppId Method
[source, scala]¶
setAppId(id: String): Unit¶
setAppId sets the internal <
setAppId is used when SparkContext is created.
== [[stop]] Stopping SparkUI -- stop Method
[source, scala]¶
stop(): Unit¶
stop stops the HTTP server and prints the following INFO message to the logs:
NOTE: appUIAddress in the above INFO message is the result of <
== [[appUIAddress]] appUIAddress Method
[source, scala]¶
appUIAddress: String¶
appUIAddress returns the entire URL of a Spark application's web UI, including http:// scheme.
Internally, appUIAddress uses <
== [[createLiveUI]] createLiveUI Method
[source, scala]¶
createLiveUI( sc: SparkContext, conf: SparkConf, listenerBus: SparkListenerBus, jobProgressListener: JobProgressListener, securityManager: SecurityManager, appName: String, startTime: Long): SparkUI
createLiveUI creates a SparkUI for a live running Spark application.
Internally, createLiveUI simply forwards the call to <
createLiveUI is used when SparkContext is created.
== [[createHistoryUI]] createHistoryUI Method
CAUTION: FIXME
== [[appUIHostPort]] appUIHostPort Method
[source, scala]¶
appUIHostPort: String¶
appUIHostPort returns the Spark application's web UI which is the public hostname and port, excluding the scheme.
NOTE: <appUIHostPort and adds http:// scheme.
== [[getAppName]] getAppName Method
[source, scala]¶
getAppName: String¶
getAppName returns the name of the Spark application (of a SparkUI instance).
NOTE: getAppName is used when...FIXME
== [[create]] Creating SparkUI Instance -- create Factory Method
[source, scala]¶
create( sc: Option[SparkContext], store: AppStatusStore, conf: SparkConf, securityManager: SecurityManager, appName: String, basePath: String = "", startTime: Long, appSparkVersion: String = org.apache.spark.SPARK_VERSION): SparkUI
create creates a SparkUI backed by a core:AppStatusStore.md[].
Internally, create simply creates a new <
create is used when:
- SparkContext is created
FsHistoryProvideris requested to spark-history-server:FsHistoryProvider.md#getAppUI[getAppUI] (for a Spark application that already finished)
Creating Instance¶
SparkUI takes the following when created:
- [[store]] core:AppStatusStore.md[]
- [[sc]] SparkContext.md[]
- [[conf]] SparkConf.md[SparkConf]
- [[securityManager]]
SecurityManager - [[appName]] Application name
- [[basePath]]
basePath - [[startTime]] Start time
- [[appSparkVersion]]
appSparkVersion
SparkUI initializes the <
== [[initialize]] Attaching Tabs and Context Handlers -- initialize Method
[source, scala]¶
initialize(): Unit¶
NOTE: initialize is part of spark-webui-WebUI.md#initialize[WebUI Contract] to initialize web components.
initialize creates and <
. spark-webui-StagesTab.md[StagesTab] . spark-webui-StorageTab.md[StorageTab] . spark-webui-EnvironmentTab.md[EnvironmentTab] . spark-webui-ExecutorsTab.md[ExecutorsTab]
In the end, initialize creates and spark-webui-WebUI.md#attachHandler[attaches] the following ServletContextHandlers:
. spark-webui-JettyUtils.md#createStaticHandler[Creates a static handler] for serving files from a static directory, i.e. /static to serve static files from org/apache/spark/ui/static directory (on CLASSPATH)
. spark-api-ApiRootResource.md#getServletHandler[Creates the /api/* context handler] for the spark-api.md[Status REST API]
. spark-webui-JettyUtils.md#createRedirectHandler[Creates a redirect handler] to redirect /jobs/job/kill to /jobs/ and request the JobsTab to execute handleKillRequest before redirection
. spark-webui-JettyUtils.md#createRedirectHandler[Creates a redirect handler] to redirect /stages/stage/kill to /stages/ and request the StagesTab to execute spark-webui-StagesTab.md#handleKillRequest[handleKillRequest] before redirection