Spark,集群搭建-Standalone

以下是 Spark Standalone 集群搭建 的详细步骤(基于 Linux 系统,以伪分布式为例):

一、环境准备

1. 硬件要求

- 至少 2 台节点(1 台 Master,1 台 Worker,可扩展)。

- 每节点配置:CPU ≥ 2 核,内存 ≥ 4GB,磁盘 ≥ 50GB。

2. 软件要求

- JDK 1.8+(需配置  JAVA_HOME  环境变量)。

- Spark 安装包(下载地址:Spark 官网,选择 "Standalone" 版本)。

- SSH 无密码登录(Master 需免密登录 Worker 节点)。

 

二、配置 Master 节点

1. 解压 Spark

bash

tar -zxvf spark-3.5.0-bin-hadoop3.tgz -C /usr/local/

cd /usr/local/spark

2. 配置环境变量

bash

vi /etc/profile

# 添加以下内容

export SPARK_HOME=/usr/local/spark

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

# 生效配置

source /etc/profile

3. 修改配置文件

bash

# 复制模板文件

cp conf/spark-env.sh.template conf/spark-env.sh

vi conf/spark-env.sh

# 添加内容(示例,根据节点配置调整)

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk

export SPARK_MASTER_MEMORY=4g # Master 内存

export SPARK_WORKER_MEMORY=3g # Worker 内存(单节点总内存)

export SPARK_WORKER_CORES=2 # Worker CPU 核心数

export SPARK_WORKER_INSTANCES=1 # 每个 Worker 节点启动的实例数(默认 1)

4. 配置集群节点列表

bash

cp conf/slaves.template conf/slaves

vi conf/slaves

# 添加 Worker 节点主机名或 IP(每行一个,伪分布式可写 `localhost`)

worker1

worker2

 

三、配置 Worker 节点

1. 同步 Spark 安装包

在 Master 节点执行(假设 Worker 节点为  worker1  和  worker2 ):

bash

scp -r /usr/local/spark worker1:/usr/local/

scp -r /usr/local/spark worker2:/usr/local/

2. 配置环境变量

在每个 Worker 节点执行:

bash

vi /etc/profile

# 添加与 Master 相同的 SPARK_HOME 和 PATH 配置

source /etc/profile

3. 验证 SSH 无密码登录

在 Master 节点生成 SSH 密钥并分发至 Worker 节点:

bash

ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa

ssh-copy-id worker1

ssh-copy-id worker2

# 测试连接:ssh worker1 应无需密码直接登录

 

四、启动集群

1. 启动 Master

bash

cd /usr/local/spark/sbin

./start-master.sh

# 查看 Master 状态:浏览器访问 http://MasterIP:8080

2. 启动 Worker

在每个 Worker 节点执行(或在 Master 节点批量启动):

bash

./start-slave.sh spark://MasterIP:7077

# 批量启动(Master 节点执行):

./start-slaves.sh

3. 验证集群状态

- Web 界面:访问  http://MasterIP:8080 ,查看 Worker 节点是否在线。

- 命令行:执行  ./spark-shell --master spark://MasterIP:7077  验证连接。

 

五、提交作业测试

1. 提交示例作业(WordCount)

bash

./bin/spark-submit \

  --master spark://MasterIP:7077 \

  --class org.apache.spark.examples.JavaWordCount \

  --executor-memory 1g \

  --total-executor-cores 2 \

  $SPARK_HOME/examples/jars/spark-examples_*.jar \

  hdfs://path/to/input.txt hdfs://path/to/output

2. 本地文件测试(伪分布式)

bash

./bin/spark-submit \

  --master spark://localhost:7077 \

  --class org.apache.spark.examples.JavaWordCount \

  --executor-memory 1g \

  --total-executor-cores 2 \

  $SPARK_HOME/examples/jars/spark-examples_*.jar \

  file:///usr/local/spark/README.md /tmp/output

 

六、停止集群

bash

cd /usr/local/spark/sbin

./stop-slaves.sh # 停止所有 Worker

./stop-master.sh # 停止 Master

 

七、常见问题与优化

1. 防火墙问题

- 开放端口:

- Master:7077(通信端口)、8080(Web 界面)

- Worker:随机端口(需允许 Master 与 Worker 间的所有 TCP 通信)

- 临时关闭防火墙(测试用):

bash

systemctl stop firewalld

systemctl disable firewalld

2. 配置参数调整

- Worker 内存不足:减小  SPARK_WORKER_MEMORY (如设为  2g )。

- 多 Worker 实例:在  conf/spark-env.sh  中增加  SPARK_WORKER_INSTANCES=2 (需确保内存足够)。

- 动态资源分配:在  spark-submit  中添加  --deploy-mode cluster (适用于生产环境)。

3. 日志配置

修改  conf/log4j.properties  调整日志级别(如将  INFO  改为  WARN  减少输出)。

 

八、集群扩展

- 新增 Worker 节点:

1. 在 Master 节点的  conf/slaves  中添加新节点信息。

2. 同步 Spark 安装包至新节点。

3. 在新节点配置环境变量和 SSH 免密登录。

4. 重启集群或执行  ./start-slaves.sh  启动新 Worker。

通过以上步骤,可搭建一个基础的 Spark Standalone 集群。生产环境中建议结合 ZooKeeper 实现高可用(HA),或使用 Kubernetes/YARN 作为资源管理器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值