背景说明
在 Spark 部署过程中,其默认的工作目录 work/ 会存放大量的日志、临时任务缓存等文件。当该目录位于用户主目录或系统盘下,如:
/home/xx/module/spark-2.4.8/work
极易导致磁盘爆满、影响任务执行稳定性。
方法一:修改 spark-env.sh 指定新路径
步骤 1:停止 Spark(软链接方式)
cd $SPARK_HOME/sbin
./stop-all.sh
步骤 2:创建新的存储路径
mkdir -p /data3/xx/spark/work
步骤 3:编辑 spark-env.sh
复制模版文件(如果还没有):
cp conf/spark-env.sh.template conf/spark-env.sh
添加环境变量:
SPARK_WORK_DIR=/data3/xx/spark/work
保存后退出。
步骤 4:启动 Spark
./start-all.sh
此时 Spark 会使用新的 work 目录。
方法二:使用软链接(无需修改配置)
如果你不想更改 Spark 配置文件,可直接用软链接重定向工作路径:
步骤 1:停止 Spark
./stop-all.sh
步骤 2:迁移工作目录
mv /home/xx/module/spark-2.4.8/work /data3/xx/spark/work
步骤 3:创建软链接
ln -s /data3/xx/spark/work /home/xx/module/spark-2.4.8/work
Spark 启动时仍会认为它在访问 $SPARK_HOME/work,实际数据已写入 /data3。
两种方法对比
| 方式 | 需改配置 | 操作复杂度 | 安全性 | 适用场景 |
|---|---|---|---|---|
| 修改 spark-env.sh | 是 | 低 | 高 | 官方推荐方式,适合长期维护 |
| 软链接替换路径 | 否 | 中 | 中 | 无缝切换、保留原目录结构 |
注意事项
- 新路径所在磁盘(如
/data3)应为 大容量、独立挂载的数据盘 - 如果采用软链接方式,请确保原路径被彻底移动且无读写冲突
- 更改完毕后可用
ls /data3/xx/spark/work验证任务执行是否写入新路径
总结
合理规划 Spark 的 work 目录是提升稳定性的重要步骤。本文介绍了两种路径迁移方法,各具优势,可按部署场景灵活选择。
下一篇将继续整理 Spark 与 Hadoop/Zookeeper 配置下的高可用环境搭建,如需获取自动脚本化迁移方案,欢迎留言交流。