在 Linux 环境下安装和优化 Spark,核心目标是稳定性、性能与可维护性。下面从安装、配置、性能调优、资源管理与常见问题几个方面系统性说明。
# 建议使用独立用户
useradd spark
mkdir -p /opt/spark
chown -R spark:spark /opt/spark
| 方式 | 适用场景 |
|---|---|
| 官方二进制包 | ✅ 最常用、推荐 |
| Hadoop+Spark | ✅ 与 HDFS/YARN 集成 |
| 源码编译 | ❌ 仅特殊需求 |
cd /opt/spark
wget https://downloads.apache.org/spark/spark-3.5.0/spark-3.5.0-bin-hadoop3.tgz
tar -zxvf spark-3.5.0-bin-hadoop3.tgz
ln -s spark-3.5.0-bin-hadoop3 spark
spark-env.shexport JAVA_HOME=/usr/lib/jvm/java-11
export SPARK_HOME=/opt/spark/spark
export SPARK_CONF_DIR=$SPARK_HOME/conf
# 单节点内存限制
export SPARK_WORKER_MEMORY=16g
export SPARK_WORKER_CORES=8
# 避免 OOM
export SPARK_DAEMON_MEMORY=2g
spark-defaults.conf(核心优化)spark.master spark://master:7077
spark.eventLog.enabled true
spark.eventLog.dir /opt/spark/eventlog
spark.executor.memory 8g
spark.executor.memoryOverhead 2g
spark.driver.memory 4g
spark.executor.cores 4
spark.default.parallelism 200
spark.shuffle.file.buffer 64k
spark.shuffle.spill.batchSize 20000
spark.reducer.maxSizeInFlight 96m
spark.serializer org.apache.spark.serializer.KryoSerializer
spark-shell --master local[*]
sbin/start-master.sh
sbin/start-worker.sh spark://master:7077
spark-submit \
--master yarn \
--deploy-mode cluster \
--executor-memory 8G \
--num-executors 10
ulimit -n
# 建议 >= 65535
修改:
vi /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
swapoff -a
vi /etc/sysctl.conf
net.core.somaxconn = 65535
vm.swappiness = 1
spark-submit \
--master yarn \
--deploy-mode cluster \
--num-executors 20 \
--executor-memory 8G \
--executor-cores 4 \
--driver-memory 4G \
--conf spark.sql.shuffle.partitions=400 \
--conf spark.sql.adaptive.enabled=true \
--conf spark.sql.adaptive.coalescePartitions.enabled=true \
app.jar
✅ 使用 YARN / K8s
✅ 开启 Kryo 序列化
✅ 启用 AQE(Spark 3.x)
✅ 合理设置 executor / memory / cores
✅ 日志 + 监控(History Server)
如果你愿意,我可以:
直接告诉我你的环境即可。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。