logo

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环境配置

  1. # 安装OpenJDK 11
  2. sudo apt install openjdk-11-jdk # Ubuntu
  3. sudo yum install java-11-openjdk-devel # CentOS
  4. # 验证安装
  5. java -version
  6. # 应输出:openjdk version "11.0.xx"

Scala环境配置(可选)

Spark 3.x已内置Scala 2.12,如需独立安装:

  1. # 下载Scala 2.12.x
  2. wget https://downloads.lightbend.com/scala/2.12.15/scala-2.12.15.tgz
  3. tar -xzvf scala-2.12.15.tgz
  4. sudo mv scala-2.12.15 /usr/local/scala
  5. # 配置环境变量
  6. echo 'export SCALA_HOME=/usr/local/scala' >> ~/.bashrc
  7. echo 'export PATH=$SCALA_HOME/bin:$PATH' >> ~/.bashrc
  8. source ~/.bashrc

3. SSH免密登录配置

  1. # 生成密钥对
  2. ssh-keygen -t rsa
  3. # 配置免密登录
  4. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  5. chmod 600 ~/.ssh/authorized_keys
  6. # 测试连接
  7. ssh localhost

三、Spark安装与配置

1. 下载与解压

  1. # 选择镜像站点下载(以清华镜像为例)
  2. wget https://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-3.5.0/spark-3.5.0-bin-hadoop3.tgz
  3. # 解压到指定目录
  4. tar -xzvf spark-3.5.0-bin-hadoop3.tgz
  5. sudo mv spark-3.5.0-bin-hadoop3 /usr/local/spark

2. 环境变量配置

  1. echo 'export SPARK_HOME=/usr/local/spark' >> ~/.bashrc
  2. echo 'export PATH=$SPARK_HOME/bin:$PATH' >> ~/.bashrc
  3. echo 'export PYSPARK_PYTHON=/usr/bin/python3' >> ~/.bashrc # 如需使用PySpark
  4. source ~/.bashrc

3. 核心配置文件修改

spark-env.sh配置

  1. cp $SPARK_HOME/conf/spark-env.sh.template $SPARK_HOME/conf/spark-env.sh
  2. vim $SPARK_HOME/conf/spark-env.sh

添加以下内容:

  1. export SPARK_MASTER_HOST=localhost
  2. export SPARK_WORKER_MEMORY=2g # 根据实际内存调整
  3. export SPARK_DRIVER_MEMORY=1g
  4. export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 # 根据实际路径修改

slaves文件配置(单机模式可保留默认)

  1. # 默认配置为localhost,无需修改
  2. cat $SPARK_HOME/conf/slaves
  3. # 输出应为:
  4. # localhost

四、启动与验证

1. 启动Spark服务

  1. # 启动Master节点
  2. $SPARK_HOME/sbin/start-master.sh
  3. # 启动Worker节点(单机模式)
  4. $SPARK_HOME/sbin/start-worker.sh spark://localhost:7077
  5. # 查看服务状态
  6. jps
  7. # 应看到Master和Worker进程

2. Web UI访问

  • Master UI:http://localhost:8080
  • Worker UI:http://localhost:8081
  • 验证指标:
    • Workers数量应为1
    • 内存使用情况正常
    • 核心数显示正确

3. 运行测试程序

Scala示例

  1. $SPARK_HOME/bin/spark-shell

输入测试命令:

  1. sc.parallelize(1 to 100).filter(_ % 2 == 0).count()
  2. // 应返回50

PySpark示例

  1. pyspark

输入测试命令:

  1. rdd = sc.parallelize(range(1,101))
  2. rdd.filter(lambda x: x % 2 == 0).count()
  3. # 应返回50

五、常见问题解决方案

1. 端口冲突问题

现象:启动时报错”Address already in use”
解决方案

  1. # 修改配置文件中的端口
  2. vim $SPARK_HOME/conf/spark-env.sh
  3. # 添加或修改:
  4. export SPARK_MASTER_WEBUI_PORT=8082 # 修改Master UI端口
  5. export SPARK_WORKER_WEBUI_PORT=8083 # 修改Worker UI端口

2. 内存不足错误

现象:Worker启动失败,日志显示”Container killed by YARN for exceeding memory limits”
解决方案

  1. # 调整内存配置
  2. vim $SPARK_HOME/conf/spark-env.sh
  3. # 修改以下参数:
  4. export SPARK_WORKER_MEMORY=4g # 不超过物理内存的70%
  5. export SPARK_EXECUTOR_MEMORY=2g

3. Java版本不兼容

现象:启动时报错”Unsupported major.minor version”
解决方案

  1. # 确认Java版本
  2. java -version
  3. # 确保使用Java 8/11(Spark 3.x推荐Java 11)
  4. # 必要时切换Java版本:
  5. sudo update-alternatives --config java

六、优化建议

  1. 资源分配:根据物理内存合理设置SPARK_WORKER_MEMORY,建议保留20%内存给系统
  2. 日志管理:配置log4j.properties文件控制日志级别
  3. 数据本地化:在spark-defaults.conf中设置:
    1. spark.locality.wait=30s
    2. spark.scheduler.maxRegisteredResourcesWaitingTime=120s
  4. 序列化优化:使用Kryo序列化提升性能:
    1. spark.serializer=org.apache.spark.serializer.KryoSerializer

七、卸载与清理

  1. # 停止服务
  2. $SPARK_HOME/sbin/stop-worker.sh
  3. $SPARK_HOME/sbin/stop-master.sh
  4. # 删除安装目录
  5. sudo rm -rf /usr/local/spark
  6. # 清理环境变量
  7. sed -i '/SPARK_HOME/d' ~/.bashrc
  8. sed -i '/export PATH=.*spark/d' ~/.bashrc
  9. source ~/.bashrc

通过以上步骤,您可以在Linux环境下完成Spark的单机部署。此模式特别适合开发测试、算法验证及小规模数据处理场景。对于生产环境,建议后续学习集群部署方案以获得更好的性能和可靠性。

相关文章推荐

发表评论