You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在GCP Compute Engine虚拟机上访问Spark Web UI/History Server的方法

访问Spark Web UI/History Server及端口验证方案

一、解决Spark Web UI(4040端口)无法访问的问题

1. 确认Spark应用处于运行状态

4040是Spark Driver的临时UI端口,仅当有Spark应用(如spark-shell、pyspark或提交的作业)正在运行时才会启动监听。先在GCE实例中执行以下命令检查进程:

ps aux | grep spark

如果没有运行中的Spark应用,先启动spark-shell再尝试访问。

2. 修改Spark绑定地址

默认情况下Spark Driver仅绑定localhost,外部无法访问。可以通过两种方式修改:

  • 启动应用时临时指定:
    spark-shell --conf spark.driver.bindAddress=0.0.0.0 --conf spark.driver.host=<你的实例外部IP>
    
  • 永久修改配置文件:
    编辑conf/spark-defaults.conf,添加以下两行:
    spark.driver.bindAddress 0.0.0.0
    spark.driver.host <你的实例外部IP>
    

3. 配置防火墙规则

外部IP拒绝连接

GCE默认防火墙未开放4040端口,需在GCP控制台添加入站防火墙规则:

  • 方向:入站
  • 目标:选择你的实例对应的网络标签(或所有实例)
  • 端口/协议:TCP:4040
  • 来源:建议设为你的本地IP(更安全),测试阶段可设为0.0.0.0/0

内部IP响应超时

  • 若从本地访问内部IP:需确保你的本地网络与GCE实例在同一VPC,或通过VPN/Cloud Connect连接,否则本地无法直接访问GCE内部IP。
  • 若从同VPC的其他实例访问:检查实例内部防火墙(如iptables)是否放行4040端口:
    sudo iptables -L INPUT -n | grep 4040
    
    若无允许规则,执行以下命令添加:
    sudo iptables -A INPUT -p tcp --dport 4040 -j ACCEPT
    

二、访问Spark History Server

History Server用于查看已完成作业的UI,默认端口18080,需先配置启动:

1. 配置事件日志存储

编辑conf/spark-defaults.conf,添加以下配置(可选择HDFS或本地路径):

spark.eventLog.enabled true
spark.eventLog.dir file:///opt/spark/logs  # 本地路径示例,需确保路径存在
spark.history.fs.logDirectory file:///opt/spark/logs

若用本地路径,先创建目录并设置权限:

mkdir -p /opt/spark/logs && chown spark:spark /opt/spark/logs

2. 启动History Server

./sbin/start-history-server.sh

若需绑定所有地址(允许外部访问),启动时添加参数:

./sbin/start-history-server.sh --conf spark.history.bindAddress=0.0.0.0

3. 开放防火墙端口

在GCP控制台添加入站防火墙规则,开放TCP:18080端口,之后通过http://<实例外部IP>:18080访问。

三、验证Spark使用的端口

1. 检查进程监听的端口

使用ss或lsof命令查看Spark进程的监听端口:

# 查看所有Java进程(Spark基于Java)的监听端口
sudo ss -tulpn | grep java

# 直接检查指定端口(如4040)是否被监听
sudo lsof -i :4040

2. 查看Spark配置中的端口参数

  • 查看当前Spark的端口配置:
    ./bin/spark-shell --help | grep port
    
  • 常用端口参数说明:
    • spark.ui.port:Driver UI默认端口(4040,被占用时自动递增)
    • spark.history.ui.port:History Server默认端口(18080)
    • spark.driver.port:Driver通信端口(默认随机分配)

内容的提问来源于stack exchange,提问作者Matthew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 06:43:27