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

如何在EC2上后台运行PySpark Standalone程序

PySpark Standalone模式后台/守护进程运行方案

快速临时后台运行(适合短周期测试任务)

直接使用nohup配合后台运行符提交任务,执行后立刻释放当前终端,断开SSH连接也不会终止任务:

nohup spark-submit /path/to/your_pyspark_code.py > spark_runtime.log 2>&1 &

参数说明:

  • nohup:忽略终端挂断(SIGHUP)信号,避免SSH断开时进程被系统杀死
  • > spark_runtime.log:将程序标准输出重定向到指定日志文件,避免输出刷屏
  • 2>&1:将错误输出合并到标准输出流,所有运行日志、报错信息统一写入日志文件
  • 末尾的&:将命令放入后台执行,执行后立即返回终端操作权限

配套操作命令:

  • 实时查看运行日志:tail -f spark_runtime.log
  • 查找运行中的Spark提交进程:ps aux | grep spark-submit
  • 手动终止任务:kill <上一步查到的进程PID>

配置为systemd守护进程(适合生产长稳运行任务)

如果需要任务异常自动重启、开机自启,可通过系统systemd托管为标准服务:

  1. 创建服务配置文件/etc/systemd/system/pyspark_standalone.service,写入以下内容(替换占位路径为你EC2上的实际路径):
[Unit]
Description=Standalone mode PySpark job
After=network.target

[Service]
User=ec2-user
WorkingDirectory=/home/ec2-user/spark_workspace
ExecStart=/opt/spark/bin/spark-submit /home/ec2-user/spark_workspace/your_job.py
Restart=on-failure
RestartSec=5
StandardOutput=append:/home/ec2-user/spark_workspace/job_runtime.log
StandardError=append:/home/ec2-user/spark_workspace/job_error.log

[Install]
WantedBy=multi-user.target
  1. 执行以下命令加载配置、启动服务并设置开机自启:
sudo systemctl daemon-reload
sudo systemctl start pyspark_standalone.service
sudo systemctl enable pyspark_standalone.service

配套服务管理命令:

  • 查看任务运行状态:systemctl status pyspark_standalone.service
  • 停止运行中的任务:systemctl stop pyspark_standalone.service
  • 重启任务:systemctl restart pyspark_standalone.service
  • 实时查看运行日志:journalctl -u pyspark_standalone.service -f

虚拟终端方案(适合需要随时切回交互查看输出的场景)

如果需要随时回到任务运行界面查看实时输出,可使用screen创建虚拟会话:

  • 执行screen -S pyspark_job创建命名虚拟会话
  • 在打开的会话窗口中正常执行spark-submit命令提交任务
  • 按下快捷键Ctrl+A后再按D,即可退出当前虚拟会话回到原终端,任务会在后台持续运行
  • 需要切回任务界面时,执行screen -r pyspark_job即可恢复会话

注意:未做上述处理直接关闭运行spark-submit的SSH终端时,系统会向所有前台进程发送终止信号,直接导致Spark任务异常退出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 23:27:35