Linux Spark单机环境快速搭建指南
2025.09.17 11:04浏览量:0简介:本文详细介绍Linux环境下Spark单机部署的全流程,涵盖环境准备、安装配置、运行验证及常见问题解决方案,适合开发测试与小规模数据处理场景。
一、Linux Spark单机部署概述
Apache Spark作为分布式计算框架,在大数据处理领域占据重要地位。单机部署模式通过单节点模拟集群环境,适用于开发测试、学习研究及小规模数据处理场景。相较于集群部署,单机模式具有配置简单、资源占用低、快速验证等优势,尤其适合初学者和资源有限的环境。
二、部署前环境准备
1. 系统要求
- 操作系统:推荐CentOS 7/8或Ubuntu 20.04 LTS,需64位架构
- 硬件配置:最低4GB内存(推荐8GB+),双核CPU,20GB可用磁盘空间
- 网络配置:确保网络连通性,关闭防火墙或开放必要端口(7077,8080,8081)
2. 依赖安装
Java环境配置
# 安装OpenJDK 11
sudo apt install openjdk-11-jdk # Ubuntu
sudo yum install java-11-openjdk-devel # CentOS
# 验证安装
java -version
# 应输出:openjdk version "11.0.xx"
Scala环境配置(可选)
Spark 3.x已内置Scala 2.12,如需独立安装:
# 下载Scala 2.12.x
wget https://downloads.lightbend.com/scala/2.12.15/scala-2.12.15.tgz
tar -xzvf scala-2.12.15.tgz
sudo mv scala-2.12.15 /usr/local/scala
# 配置环境变量
echo 'export SCALA_HOME=/usr/local/scala' >> ~/.bashrc
echo 'export PATH=$SCALA_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
3. SSH免密登录配置
# 生成密钥对
ssh-keygen -t rsa
# 配置免密登录
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
# 测试连接
ssh localhost
三、Spark安装与配置
1. 下载与解压
# 选择镜像站点下载(以清华镜像为例)
wget https://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-3.5.0/spark-3.5.0-bin-hadoop3.tgz
# 解压到指定目录
tar -xzvf spark-3.5.0-bin-hadoop3.tgz
sudo mv spark-3.5.0-bin-hadoop3 /usr/local/spark
2. 环境变量配置
echo 'export SPARK_HOME=/usr/local/spark' >> ~/.bashrc
echo 'export PATH=$SPARK_HOME/bin:$PATH' >> ~/.bashrc
echo 'export PYSPARK_PYTHON=/usr/bin/python3' >> ~/.bashrc # 如需使用PySpark
source ~/.bashrc
3. 核心配置文件修改
spark-env.sh配置
cp $SPARK_HOME/conf/spark-env.sh.template $SPARK_HOME/conf/spark-env.sh
vim $SPARK_HOME/conf/spark-env.sh
添加以下内容:
export SPARK_MASTER_HOST=localhost
export SPARK_WORKER_MEMORY=2g # 根据实际内存调整
export SPARK_DRIVER_MEMORY=1g
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 # 根据实际路径修改
slaves文件配置(单机模式可保留默认)
# 默认配置为localhost,无需修改
cat $SPARK_HOME/conf/slaves
# 输出应为:
# localhost
四、启动与验证
1. 启动Spark服务
# 启动Master节点
$SPARK_HOME/sbin/start-master.sh
# 启动Worker节点(单机模式)
$SPARK_HOME/sbin/start-worker.sh spark://localhost:7077
# 查看服务状态
jps
# 应看到Master和Worker进程
2. Web UI访问
- Master UI:
http://localhost:8080
- Worker UI:
http://localhost:8081
- 验证指标:
- Workers数量应为1
- 内存使用情况正常
- 核心数显示正确
3. 运行测试程序
Scala示例
$SPARK_HOME/bin/spark-shell
输入测试命令:
sc.parallelize(1 to 100).filter(_ % 2 == 0).count()
// 应返回50
PySpark示例
pyspark
输入测试命令:
rdd = sc.parallelize(range(1,101))
rdd.filter(lambda x: x % 2 == 0).count()
# 应返回50
五、常见问题解决方案
1. 端口冲突问题
现象:启动时报错”Address already in use”
解决方案:
# 修改配置文件中的端口
vim $SPARK_HOME/conf/spark-env.sh
# 添加或修改:
export SPARK_MASTER_WEBUI_PORT=8082 # 修改Master UI端口
export SPARK_WORKER_WEBUI_PORT=8083 # 修改Worker UI端口
2. 内存不足错误
现象:Worker启动失败,日志显示”Container killed by YARN for exceeding memory limits”
解决方案:
# 调整内存配置
vim $SPARK_HOME/conf/spark-env.sh
# 修改以下参数:
export SPARK_WORKER_MEMORY=4g # 不超过物理内存的70%
export SPARK_EXECUTOR_MEMORY=2g
3. Java版本不兼容
现象:启动时报错”Unsupported major.minor version”
解决方案:
# 确认Java版本
java -version
# 确保使用Java 8/11(Spark 3.x推荐Java 11)
# 必要时切换Java版本:
sudo update-alternatives --config java
六、优化建议
- 资源分配:根据物理内存合理设置
SPARK_WORKER_MEMORY
,建议保留20%内存给系统 - 日志管理:配置
log4j.properties
文件控制日志级别 - 数据本地化:在
spark-defaults.conf
中设置:spark.locality.wait=30s
spark.scheduler.maxRegisteredResourcesWaitingTime=120s
- 序列化优化:使用Kryo序列化提升性能:
spark.serializer=org.apache.spark.serializer.KryoSerializer
七、卸载与清理
# 停止服务
$SPARK_HOME/sbin/stop-worker.sh
$SPARK_HOME/sbin/stop-master.sh
# 删除安装目录
sudo rm -rf /usr/local/spark
# 清理环境变量
sed -i '/SPARK_HOME/d' ~/.bashrc
sed -i '/export PATH=.*spark/d' ~/.bashrc
source ~/.bashrc
通过以上步骤,您可以在Linux环境下完成Spark的单机部署。此模式特别适合开发测试、算法验证及小规模数据处理场景。对于生产环境,建议后续学习集群部署方案以获得更好的性能和可靠性。
发表评论
登录后可评论,请前往 登录 或 注册