Spark CentOS单机部署指南:从环境配置到应用实践
2025.09.12 11:09浏览量:3简介:本文详细介绍在CentOS系统上部署Spark单机的完整流程,涵盖环境准备、安装配置、验证测试及常见问题解决,助力开发者快速搭建本地化Spark开发环境。
一、部署前环境准备与注意事项
1.1 系统版本与依赖要求
CentOS 7/8是当前主流选择,需确保系统为最小化安装以减少冲突。关键依赖包括:
- Java JDK 8/11(Spark 3.x推荐JDK 11)
- Python 3.6+(如需PySpark支持)
- SSH服务(用于远程管理)
- 网络防火墙配置(开放7077、8080等端口)
验证依赖是否就绪的命令:
# Java版本检查
java -version
# Python版本检查
python3 --version
# 防火墙状态检查
systemctl status firewalld
1.2 硬件资源规划
单机部署建议配置:
- 内存:≥8GB(生产环境建议16GB+)
- CPU:≥4核(现代处理器即可)
- 磁盘:≥50GB可用空间(用于数据缓存)
通过free -h
和lscpu
命令可查看当前资源情况。若资源紧张,需在spark-env.sh
中调整内存参数(如SPARK_WORKER_MEMORY=4g
)。
二、Spark安装与配置详解
2.1 下载与解压
从Apache官网获取稳定版Spark(推荐3.5.0 LTS版本):
wget https://dlcdn.apache.org/spark/spark-3.5.0/spark-3.5.0-bin-hadoop3.tgz
tar -xzvf spark-3.5.0-bin-hadoop3.tgz -C /opt/
ln -s /opt/spark-3.5.0-bin-hadoop3 /opt/spark # 创建软链接便于管理
2.2 核心配置文件修改
2.2.1 环境变量配置
编辑/etc/profile
或用户级.bashrc
:
export SPARK_HOME=/opt/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
export HADOOP_HOME=/opt/hadoop # 如需Hadoop支持
2.2.2 spark-env.sh配置
复制模板并修改关键参数:
cp $SPARK_HOME/conf/spark-env.sh.template $SPARK_HOME/conf/spark-env.sh
添加内容示例:
# 指定JVM内存
export SPARK_DAEMON_MEMORY=2g
export SPARK_WORKER_MEMORY=6g
# 启用历史服务器(可选)
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=5"
2.2.3 slaves文件配置
单机部署时$SPARK_HOME/conf/slaves
文件内容应为:
localhost
2.3 启动与验证
2.3.1 启动集群
# 启动Master和Worker
$SPARK_HOME/sbin/start-all.sh
# 检查进程
jps | grep -E "Master|Worker"
2.3.2 Web UI验证
访问http://<服务器IP>:8080
,应看到:
- Spark Master状态为ALIVE
- 1个Worker注册(localhost)
- 资源分配情况显示
2.3.3 运行测试任务
提交一个计算π的示例:
$SPARK_HOME/bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://localhost:7077 \
$SPARK_HOME/examples/jars/spark-examples_*.jar \
1000
预期输出应包含近似π值(如3.141592653)。
三、常见问题解决方案
3.1 端口冲突处理
若8080端口被占用,修改spark-defaults.conf
:
spark.master.ui.port 8081
spark.worker.ui.port 8082
3.2 内存不足错误
典型错误日志:
Container killed by YARN for exceeding memory limits. 3.5 GB of 3.5 GB physical memory used
解决方案:
- 调整
spark-env.sh
中的SPARK_WORKER_MEMORY
- 在代码中设置
spark.executor.memory
参数
3.3 版本兼容性问题
Hadoop 3.x与Spark 3.x需确保:
- 使用
spark-3.5.0-bin-hadoop3.tgz
版本 - 若使用本地HDFS,需配置
core-site.xml
和hdfs-site.xml
到Spark的conf
目录
四、优化建议与最佳实践
4.1 性能调优参数
spark.sql.shuffle.partitions=200
(根据数据量调整)spark.default.parallelism=12
(CPU核心数×2~3)spark.serializer=org.apache.spark.serializer.KryoSerializer
4.2 数据本地化策略
在spark-defaults.conf
中配置:
spark.locality.wait=30s
spark.locality.wait.process=60s
spark.locality.wait.node=120s
4.3 日志管理
配置log4j.properties
(位于$SPARK_HOME/conf/
):
# 设置为WARN减少日志量
log4j.rootCategory=WARN, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
五、扩展应用场景
5.1 本地开发模式
通过--master local[*]
参数运行:
spark-submit --master local[4] ... # 使用4个本地线程
5.2 与Jupyter集成
安装PySpark内核:
# 在Jupyter Notebook中
import os
os.environ["SPARK_HOME"] = "/opt/spark"
os.environ["PYSPARK_DRIVER_PYTHON"] = "jupyter"
os.environ["PYSPARK_DRIVER_PYTHON_OPTS"] = "notebook"
5.3 定时任务调度
结合Cron实现每日数据处理:
# 每天凌晨2点执行
0 2 * * * /opt/spark/bin/spark-submit --class com.example.DailyJob /path/to/job.jar
六、卸载与清理
完整卸载步骤:
# 停止服务
$SPARK_HOME/sbin/stop-all.sh
# 删除安装目录
rm -rf /opt/spark*
# 清理环境变量
sed -i '/SPARK_HOME/d' /etc/profile
# 清理临时文件
rm -rf /tmp/spark-*
通过以上步骤,开发者可在CentOS系统上快速构建稳定的Spark单机环境,既可用于学习测试,也能支撑中小规模的数据处理任务。实际部署时建议先在测试环境验证配置,再迁移到生产环境。
发表评论
登录后可评论,请前往 登录 或 注册