当前位置: 首页 > news >正文

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

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

1. 环境准备

1.1 集群规划

假设有 3 台服务器:

  • 主节点 (Master):spark-master (192.168.1.100)
  • 工作节点 (Worker):spark-worker1 (192.168.1.101)、spark-worker2 (192.168.1.102)
1.2 系统要求
  • 所有节点安装相同版本的 Java 8+(推荐 OpenJDK 11)
  • 所有节点安装 Python 3.6+(可选,用于 PySpark)
  • 关闭防火墙或开放以下端口:
    • Master:7077(集群通信)、8080(Web UI)
    • Worker:8081(Web UI)

2. 安装 Spark

2.1 下载 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
2.2 配置环境变量

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

bash

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

使环境变量生效:

bash

source ~/.bashrc

3. 配置 Spark Standalone

3.1 主节点配置

在 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
3.2 分发配置到 Worker 节点

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

bash

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

4. 启动集群

4.1 启动 Master 节点

在 spark-master 上执行:

bash

start-master.sh

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

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

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

bash

start-worker.sh spark://192.168.1.100:7077
4.3 验证集群状态

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

5. 提交 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

6. 高级配置(可选)

6.1 动态分配资源

在 spark-defaults.conf 中启用:

bash

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

添加:

properties

spark.dynamicAllocation.enabled true
spark.shuffle.service.enabled true
6.2 高可用性(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"

7. 常用命令

bash

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

8. 故障排查

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

相关文章:

  • 在Web应用中集成Google AI NLP服务的完整指南:从Dialogflow配置到高并发优化
  • FFmpeg 项目中的三大核心工具详解
  • 企业管理软件:数字化转型的核心引擎
  • spdlog日志器(logger)的创建方法大全
  • 从0到1:Python机器学习实战全攻略(8/10)
  • 03.Golang 切片(slice)源码分析(二、append实现)
  • 循环语句:for、range -《Go语言实战指南》
  • 【layout组件 与 路由镶嵌】vue3 后台管理系统
  • uniapp(微信小程序)>关于父子组件的样式传递问题(自定义组件样式穿透)
  • 涨薪技术|0到1学会性能测试第58课-垃圾回收器
  • 【Pandas】pandas DataFrame cummax
  • 【LeeCode】1.两数之和
  • 读取.ini后缀类型的马达配置文件并进行赋值
  • 【操作系统】零拷贝技术
  • LearnOpenGL02:绘制三角形和矩形
  • 【办公类-99-06】20250512用Python制作PPT的GIF照片动图(统一图片大小、自定义不同切换秒数,以蝴蝶为例)
  • 家具制造行业的现状 质检LIMS如何赋能家具制造企业质检升级
  • 学习黑客5 分钟深入浅出理解系列之 Windows 资源监视器
  • LeetCode 热题 100_只出现一次的数字(96_136_简单_C++)(哈希表;哈希集合;排序+遍历;位运算)
  • Windows 安装 Milvus
  • 朝着解决问题的正确方向迈进——中美经贸高层会谈牵动世界目光
  • 广西壮族自治区党委政法委副书记李文博接受审查调查
  • 减重人生|走过节食弯路,她如何半年减60斤找回自信?
  • 首映丨纪录电影《滚烫年华》:献给所有奋斗者
  • 武汉旅游体育集团有限公司原党委书记、董事长董志向被查
  • 习近平结束对俄罗斯国事访问并出席纪念苏联伟大卫国战争胜利80周年庆典回到北京