在 Linux 上安装/部署 Spark 时,“内存怎么设”通常分 三种场景,下面按最常见用法说明,并给出示例。
如果你只是:
./bin/spark-shell
# 或
./bin/spark-submit --master local[*] ...
通过环境变量或提交参数控制:
export SPARK_DRIVER_MEMORY=2g
或在提交时:
spark-submit \
--driver-memory 2g \
--executor-memory 2g \
your_app.py
⚠️ local 模式没有真正 executor,只有一个 JVM
所以主要看:
--driver-memory修改:
conf/spark-env.sh
SPARK_WORKER_MEMORY=8g
SPARK_WORKER_CORES=4
表示这个 Worker 节点最多给 Spark 8G 内存
spark-submit \
--master spark://master:7077 \
--executor-memory 4g \
--driver-memory 2g \
--total-executor-cores 4 \
app.py
内存受 yarn-site.xml 限制:
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>16384</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>8192</value>
</property>
spark-submit \
--master yarn \
--deploy-mode cluster \
--driver-memory 2g \
--executor-memory 4g \
--num-executors 3 \
app.py
Executor 内存不是全给计算:
Executor Memory
├── Execution(shuffle、join)
├── Storage(cache、broadcast)
└── Overhead(JVM、堆外)
推荐设置:
--conf spark.memory.fraction=0.6
--conf spark.memory.storageFraction=0.5
❌ 设太大导致 OOM
✅ 留 10–20% 给系统
❌ 混用 driver/executor
✅ YARN cluster 模式 driver 在 NodeManager 上
❌ 小内存跑大 shuffle
✅ 增加 executor 数而不是单 executor 内存
spark-submit \
--master local[2] \
--driver-memory 2g \
app.py
如果你能告诉我:
我可以直接帮你给一套可抄的配置。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。