如何访问 Spark Web UI?

sir*_*ine 6 apache-spark

我正在本地运行 4 个节点的 Spark 应用程序。当我运行我的应用程序时,它显示我的驱动程序具有这个地址 10.0.2.15:

INFO Utils: Successfully started service 'SparkUI' on port 4040.
INFO SparkUI: Bound SparkUI to 0.0.0.0, and started at http://10.0.2.15:4040
Run Code Online (Sandbox Code Playgroud)

在运行结束时显示:

INFO SparkUI: Stopped Spark web UI at http://10.0.2.15:4040
INFO MapOutputTrackerMasterEndpoint: MapOutputTrackerMasterEndpoint stopped!
INFO MemoryStore: MemoryStore cleared
INFO BlockManager: BlockManager stopped
INFO BlockManagerMaster: BlockManagerMaster stopped
INFO OutputCommitCoordinator$OutputCommitCoordinatorEndpoint: OutputCommitCoordinator stopped!
INFO SparkContext: Successfully stopped SparkContext
Run Code Online (Sandbox Code Playgroud)

我试图通过以下方式访问 Spark Web: 10.0.2.15:4040但该页面无法访问。尝试使用以下地址也没有帮助:

 http://localhost:18080
Run Code Online (Sandbox Code Playgroud)

使用ping 10.0.2.15结果是:

Send a request 'Ping' 10.0.2.15 with 32 bytes of data

Waiting time exceeded

Waiting time exceeded

Waiting time exceeded

Waiting time exceeded

Ping statistics for 10.0.2.15: Packages: sent = 4, received = 0, lost = 4 (100% loss)
Run Code Online (Sandbox Code Playgroud)

检查端口 4040 的可用性,netstat -a以验证哪些端口可用。结果如下:

   Active connexion:

    Active       local address        Remote address                      state

    TCP          127.0.0.1:4040      DESKTOP-FF4U.....:0                 Listening
Run Code Online (Sandbox Code Playgroud)

PS.:知道我的代码运行成功。可能是什么原因?

Jac*_*ski 12

INFO Utils: Successfully started service 'SparkUI' on port 4040.
INFO SparkUI: Bound SparkUI to 0.0.0.0, and started at http://10.0.2.15:4040
Run Code Online (Sandbox Code Playgroud)

这就是 Spark 报告 Web UI(在SparkUI内部称为)绑定到 port 的方式4040

只要 Spark 应用程序启动并运行,您就可以通过http://10.0.2.15:4040访问 Web UI 。

INFO SparkUI: Stopped Spark web UI at http://10.0.2.15:4040
...
INFO SparkContext: Successfully stopped SparkContext
Run Code Online (Sandbox Code Playgroud)

这是 Spark 应用程序完成的时间(它是否正确完成并不重要)。从现在开始,Web UI(位于http://10.0.2.15:4040)不再可用。

我试图通过以下方式访问 Spark Web:10.0.2.15:4040 但该页面无法访问。

这是 Spark 应用程序的预期行为。完成后,4040(这是 Web UI 的默认端口)不再可用。

尝试使用以下地址也没有帮助:http://localhost:18080

18080是 Spark History Server 的默认端口。它是一个单独的进程,无论运行的 Spark 应用程序是否可用,它都可能可用,也可能不可用。

Spark History Server 与 Spark 应用程序完全不同。引用官方 Spark 文档

仍然可以通过 Spark 的历史服务器构建应用程序的 UI,前提是应用程序的事件日志存在。您可以通过执行以下命令来启动历史服务器:

./sbin/start-history-server.sh
Run Code Online (Sandbox Code Playgroud)

默认情况下,这会在 http://:18080 处创建一个 Web 界面,列出未完成和已完成的应用程序和尝试。

如您所见,您必须自己启动 Spark History Server 才能18080使用。

此外,您必须使用spark.eventLog.enabledspark.eventLog.dir配置属性才能在 Spark 应用程序完成执行后查看其日志。引用Spark 官方文档

spark作业本身必须配置为记录事件,并将它们记录到同一个共享的、可写的目录中。例如,如果服务器配置的日志目录为hdfs://namenode/shared/spark-logs,则客户端选项将是:

spark.eventLog.enabled true
spark.eventLog.dir hdfs://namenode/shared/spark-logs
Run Code Online (Sandbox Code Playgroud)