温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Linux环境Spark安装优化方法

发布时间:2026-07-01 10:56:43 来源:亿速云 阅读:100 作者:小樊 栏目:系统运维

在 Linux 环境下安装和优化 Spark,核心目标是稳定性、性能与可维护性。下面从安装、配置、性能调优、资源管理与常见问题几个方面系统性说明。


一、安装前准备(很重要)

1. 系统与环境建议

  • OS:CentOS 7/8、Rocky、Ubuntu 20.04+(服务器版)
  • JDK
    ✅ 推荐 JDK 8 / JDK 11(Spark 3.x 常用)
    ❌ 不推荐 JDK 17(兼容性需确认)
  • 内存
    • 单节点建议 ≥ 8GB
    • 生产环境一般 32GB / 64GB 起
  • 磁盘
    • 本地磁盘(SSD 更佳)
    • 避免 NFS 作为 shuffle / tmp 目录

2. 用户与目录规划

# 建议使用独立用户
useradd spark
mkdir -p /opt/spark
chown -R spark:spark /opt/spark

二、Spark 安装方式对比

方式 适用场景
官方二进制包 ✅ 最常用、推荐
Hadoop+Spark ✅ 与 HDFS/YARN 集成
源码编译 ❌ 仅特殊需求

推荐安装步骤(Standalone / 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

三、关键配置文件优化

1. spark-env.sh

export 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

2. 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

Shuffle 优化

spark.shuffle.file.buffer         64k
spark.shuffle.spill.batchSize     20000
spark.reducer.maxSizeInFlight     96m

序列化(性能提升明显)

spark.serializer                  org.apache.spark.serializer.KryoSerializer

四、运行模式选择建议

1. Local(仅测试)

spark-shell --master local[*]

2. Standalone(中小规模)

sbin/start-master.sh
sbin/start-worker.sh spark://master:7077

3. YARN(生产推荐 ✅)

spark-submit \
--master yarn \
--deploy-mode cluster \
--executor-memory 8G \
--num-executors 10

五、Linux 系统级优化(常被忽略)

1. 文件句柄数

ulimit -n
# 建议 >= 65535

修改:

vi /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535

2. 关闭 Swap(提升稳定性)

swapoff -a

3. 内核参数优化

vi /etc/sysctl.conf
net.core.somaxconn = 65535
vm.swappiness = 1

六、Spark 提交任务优化模板

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

七、常见性能问题排查

1. OOM

  • executor memory 过小
  • shuffle 分区数不合理
  • 数据倾斜

2. 任务慢

  • 并行度过低
  • 未开启 AQE
  • 小文件过多

3. CPU 打满

  • executor cores 过多
  • 与系统其他进程冲突

八、推荐生产配置总结(速查)

✅ 使用 YARN / K8s
✅ 开启 Kryo 序列化
✅ 启用 AQE(Spark 3.x)
✅ 合理设置 executor / memory / cores
✅ 日志 + 监控(History Server)


如果你愿意,我可以:

  • ✅ 根据你的 集群规模(几台机器) 定制完整配置
  • ✅ 给你一份 spark-defaults.conf 生产模板
  • ✅ 分析你当前的 Spark 报错或慢任务

直接告诉我你的环境即可。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI