【Spark】使用Spark集群搭建-Standalone

以下是使用 Spark Standalone 模式搭建集群的详细步骤:

  •  环境准备

    • 集群规划

      • 假设有 3 台服务器:

主节点 (Master):spark-master (192.168.1.100)
工作节点 (Worker):spark-worker1 (192.168.1.101)、spark-worker2 (192.168.1.102)

  •  系统要求

所有节点安装相同版本的 Java 8+(推荐 OpenJDK 11)
所有节点安装 Python 3.6+(可选,用于 PySpark)
关闭防火墙或开放以下端口:
        Master:7077(集群通信)、8080(Web UI)
        Worker:8081(Web UI)

  •  安装 Spark

    •  下载 Spark

访问 Apache Spark 官网,选择合适的版本进行下载。例如,可以选择 spark-3.3.2-bin-hadoop3 这个预编译版本。下载完成后,将文件解压到目标目录。

bash

wget https://downloads.apache.org/spark/spark-3.3.2/spark-3.3.2-bin-hadoop3.tgz
tar -zxvf spark-3.3.2-bin-hadoop3.tgz
mv spark-3.3.2-bin-hadoop3 /opt/spark

  • 配置环境变量

在所有节点的 ~/.bashrc 中添加:

bash

export SPARK_HOME=/opt/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

使环境变量生效:

bash

source ~/.bashrc

  •  配置 Spark Standalone

    •  主节点配置

在 Master 节点 (spark-master) 上编辑以下文件:

3.1.1 spark-env.sh

复制模板并编辑:

bash

cd $SPARK_HOME/conf
cp spark-env.sh.template spark-env.sh

添加以下内容:

bash

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64  # 根据实际路径修改
export SPARK_MASTER_HOST=192.168.1.100
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_MEMORY=2g  # 每个 Worker 可用内存
export SPARK_WORKER_CORES=2    # 每个 Worker 可用 CPU 核心数
3.1.2 workers

复制模板并编辑:

bash

cp workers.template workers

添加所有 Worker 节点的主机名或 IP:

plaintext

spark-worker1
spark-worker2

  • 分发配置到 Worker 节点

将配置好的 Spark 目录复制到所有 Worker 节点:

bash

# 在 Master 节点执行
scp -r /opt/spark spark-worker1:/opt/
scp -r /opt/spark spark-worker2:/opt/

  • 启动集群

    •  启动 Master 节点

在 spark-master 上执行:

bash

start-master.sh

验证 Master 启动成功:访问 http://192.168.1.100:8080,应看到 Spark Master 界面。

  • 手动启动 Worker 节点(可选)

若自动启动失败,可在每个 Worker 节点手动启动:

bash

start-worker.sh spark://192.168.1.100:7077

  • 验证集群状态

刷新 Master Web UI,应看到两个 Worker 节点已注册。

  • 提交 Spark 应用

使用 spark-submit 提交应用到集群:

bash

spark-submit \
  --master spark://192.168.1.100:7077 \
  --class org.apache.spark.examples.SparkPi \
  --executor-memory 1g \
  --total-executor-cores 2 \
  $SPARK_HOME/examples/jars/spark-examples_2.12-3.3.2.jar \
  100

  • 高级配置(可选)

    • 动态分配资源

在 spark-defaults.conf 中启用:

bash

cp spark-defaults.conf.template spark-defaults.conf

添加:

properties

spark.dynamicAllocation.enabled true
spark.shuffle.service.enabled true
  • 高可用性(HA)

配置 ZooKeeper 实现 Master 高可用:

bash

export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=zk1:2181,zk2:2181,zk3:2181 -Dspark.deploy.zookeeper.dir=/spark"
  • 常用命令

bash

# 停止集群
stop-all.sh
# 启动历史服务器
start-history-server.sh
# 查看日志
cd $SPARK_HOME/logs

  • 故障排查

    • Worker 无法连接 Master:检查防火墙、主机名解析和 spark-env.sh 配置。
    • 内存不足:调整 SPARK_WORKER_MEMORY 和 spark.executor.memory 参数。
    • Web UI 无法访问:确保端口开放且 Master/Worker 服务正常运行。

你可能感兴趣的:(spark,大数据)