一、本地环境安装(单机模式)
适合开发和测试,支持 Windows、Linux、macOS。
1. 前置条件
- Java:Java 8 或更高版本(建议 OpenJDK 11+)。
bash
# 检查 Java 版本 java -version
- Python(可选):PySpark 需要 Python 3.6+。
- Scala(可选):若使用 Scala API,需安装 Scala 2.12/2.13。
2. 下载与安装
- 下载 Spark:从 Apache Spark 官网 下载预编译版本(如
spark-3.4.1-bin-hadoop3
)。 - 解压文件:
bash
tar -xzf spark-3.4.1-bin-hadoop3.tgz mv spark-3.4.1-bin-hadoop3 /opt/spark # 移动到指定目录
- 配置环境变量:
bash
# 编辑 ~/.bashrc 或 ~/.zshrc export SPARK_HOME=/opt/spark export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin export PYSPARK_PYTHON=python3 # 指定 Python 版本
bash
# 使配置生效 source ~/.bashrc
3. 验证安装
启动 Spark Shell:
bash
spark-shell # Scala Shell
pyspark # Python Shell
若成功进入交互式环境,则安装完成。
二、集群环境安装(Standalone 模式)
适合小规模集群测试,无需依赖 YARN 或 Kubernetes。
1. 集群规划
- 1 个 Master 节点:管理集群资源和调度任务。
- N 个 Worker 节点:执行计算任务。
2. 配置文件
在 $SPARK_HOME/conf
目录下:
- 复制模板配置:
bash
cd $SPARK_HOME/conf cp spark-env.sh.template spark-env.sh cp slaves.template slaves
- 编辑
spark-env.sh
:bash
export JAVA_HOME=/path/to/java # Java 安装路径 export SPARK_MASTER_HOST=master-node-ip # Master 节点 IP export SPARK_WORKER_MEMORY=8g # 每个 Worker 节点的内存 export SPARK_WORKER_CORES=4 # 每个 Worker 节点的 CPU 核心数
- 编辑
slaves
:plaintext
worker1-node-ip worker2-node-ip ...
3. 分发文件
将 Spark 目录复制到所有 Worker 节点:
bash
scp -r /opt/spark user@worker1:/opt/
scp -r /opt/spark user@worker2:/opt/
...
4. 启动集群
在 Master 节点执行:
bash
start-all.sh # 启动 Master 和所有 Worker
# 或分开启动
start-master.sh
start-slaves.sh
5. 验证集群
访问 Web UI:http://master-node-ip:8080
,查看集群状态和 Worker 节点信息。
三、在 Hadoop YARN 上运行 Spark
适合与 Hadoop 生态集成的生产环境。
1. 前置条件
- 已安装并运行 Hadoop 集群(HDFS + YARN)。
- Spark 版本与 Hadoop 版本兼容。
2. 配置 Spark
编辑 $SPARK_HOME/conf/spark-env.sh
:
bash
export HADOOP_CONF_DIR=/path/to/hadoop/etc/hadoop # Hadoop 配置目录
3. 提交作业到 YARN
bash
# 示例:运行 Spark Pi 测试
spark-submit \
--master yarn \
--deploy-mode cluster \ # 或 client
--num-executors 5 \
--executor-memory 4g \
$SPARK_HOME/examples/jars/spark-examples_*.jar \
org.apache.spark.examples.SparkPi 100
四、在 Kubernetes 上运行 Spark
适合容器化部署的云原生环境。
1. 前置条件
- 已部署 Kubernetes 集群(v1.18+)。
- 配置了 Docker 镜像仓库。
2. 构建 Spark 镜像
bash
cd $SPARK_HOME
./bin/docker-image-tool.sh -r my-repo -t 3.4.1 build
./bin/docker-image-tool.sh -r my-repo -t 3.4.1 push # 推送到镜像仓库
3. 提交作业到 Kubernetes
bash
spark-submit \
--master k8s://https://kubernetes-api:6443 \
--deploy-mode cluster \
--name spark-pi \
--class org.apache.spark.examples.SparkPi \
--conf spark.kubernetes.container.image=my-repo/spark:3.4.1 \
--conf spark.kubernetes.authenticate.driver.serviceAccountName=spark \
local:///opt/spark/examples/jars/spark-examples_*.jar \
100
五、常见问题与解决方案
- Java 版本不兼容:确保 Spark 和 Hadoop 使用相同的 Java 版本。
- 内存不足:调整
spark.driver.memory
和spark.executor.memory
参数。 - 网络问题:检查防火墙配置,确保节点间网络互通。
- 权限问题:确保 HDFS 目录有写入权限(如
/user/hadoop
)。
六、验证安装
- 本地模式:
bash
spark-shell --master local[2]
- Standalone 集群:
bash
spark-submit --master spark://master-node-ip:7077 examples/src/main/python/pi.py
- YARN 集群:
bash
spark-submit --master yarn --deploy-mode cluster examples/src/main/python/pi.py