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

Spark 集群配置、启动与监控指南

Spark 集群的配置和启动需要几个关键步骤。以下是完整的操作流程,包含配置修改、集群启动、任务提交和常见错误排查方法。

1. 修改 Spark 配置文件

首先需要编辑 Spark 配置文件,设置集群参数:

bash

# 进入 Spark 配置目录
cd $SPARK_HOME/conf# 创建配置文件副本(如果不存在)
cp spark-env.sh.template spark-env.sh
cp slaves.template slaves# 编辑 spark-env.sh 添加以下配置
vi spark-env.sh# 添加以下内容(根据实际情况修改)
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64  # Java 安装路径
export SPARK_MASTER_HOST=master-node  # 主节点主机名
export SPARK_MASTER_PORT=7077  # 主节点端口
export SPARK_WORKER_MEMORY=8g  # 每个工作节点可用内存
export SPARK_WORKER_CORES=4  # 每个工作节点可用 CPU 核心数# 编辑 slaves 文件指定工作节点
vi slaves# 添加工作节点主机名(每行一个)
worker-node1
worker-node2
worker-node3
2. 启动 Spark 集群

配置完成后,使用以下命令启动集群:

bash

# 在主节点上启动 Master 服务
$SPARK_HOME/sbin/start-master.sh# 在主节点上启动所有 Worker 服务
$SPARK_HOME/sbin/start-slaves.sh# 或者在每个工作节点单独启动 Worker
$SPARK_HOME/sbin/start-worker.sh spark://master-node:7077
3. 验证集群运行状态

启动后,可以通过以下方式检查集群状态:

bash

# 查看 Master 服务日志
cat $SPARK_HOME/logs/spark--org.apache.spark.deploy.master.Master-1-master-node.out# 查看 Worker 服务日志
cat $SPARK_HOME/logs/spark--org.apache.spark.deploy.worker.Worker-1-worker-node1.out# 通过 Web UI 查看集群状态(浏览器访问)
http://master-node:8080
4. 提交 Spark 应用程序

使用以下命令提交示例应用程序测试集群:

bash

# 运行 Spark 示例 Pi 计算
$SPARK_HOME/bin/spark-submit \--class org.apache.spark.examples.SparkPi \--master spark://master-node:7077 \--executor-memory 2g \--total-executor-cores 4 \$SPARK_HOME/examples/jars/spark-examples_2.12-3.3.2.jar \100
5. 查看应用程序运行结果

应用程序提交后,可以通过以下方式监控和查看结果:

bash

# 查看应用程序控制台输出
# 应用程序完成后,结果会显示在终端上# 通过 Spark History Server 查看历史作业
# 首先启动 History Server
$SPARK_HOME/sbin/start-history-server.sh# 然后在浏览器访问
http://master-node:18080
6. 常见错误及解决方法

以下是一些常见问题及解决方法:

plaintext

错误1: 无法连接到 Master
原因: Master 服务未启动或配置错误
解决: 检查 master 节点主机名和端口配置,查看 Master 日志错误2: Worker 无法注册到 Master
原因: 网络不通或防火墙阻止
解决: 确保各节点间网络连通,开放 7077 和 8080 端口错误3: 应用程序运行缓慢
原因: 资源分配不足或数据倾斜
解决: 增加 executor-memory 和 executor-cores 参数错误4: 内存溢出错误 (OOM)
原因: 数据处理量过大或内存分配不合理
解决: 增加 spark.executor.memory 或调整 RDD 分区数
http://www.xdnf.cn/news/6162.html

相关文章:

  • AI模型开发全流程笔记
  • hacker送书第23期
  • Java实现美术机构教务管理系统:基于爱耕云功能模式的解决方案
  • 基于EFISH-SCB-RK3576/SAIL-RK3576的CNC机床控制器技术方案‌
  • 深度剖析 GpuGeek 实例:GpuGeek/Qwen3-32B 模型 API 调用实践与性能测试洞察
  • 如何通过外卖系统源码打造本地O2O外卖配送生态?全链路技术解析
  • 磁盘存储链式的 B 树与 B+ 树
  • 解决LEENSA/LEENSA无法使用的方法
  • linux创建自己的服务
  • 后量子密码通信协议测试指南
  • 计算机组成与体系结构:组相联映射(Set-Associative Mapping)
  • NHANES指标推荐:AGR
  • 每日算法-250513
  • 使用PocketFlow构建Web Search Agent
  • java为什么要实现自动装箱和拆箱
  • Promise.all静态方法
  • 乙酰基六肽-39/Silusyne 新型减肥活性肽,减少脂肪堆积
  • 火山引擎发展初始
  • 高效跨平台文件传输与管理的工具
  • SimScape物理建模实例2--带控制的单质量弹簧阻尼系统
  • PPT制作-平滑切换
  • logback 日志归档,解决主日志和归档日志分别定义不同的周期
  • Manus 开放注册:AI 智能体领域的新起点
  • 岩土拉压试验机
  • ​​华为云服务器:智能算力网格​
  • 计数循环java
  • 24年面试问题总结记录
  • 光学(1)
  • CVE-2025-31258 macOS远程视图服务沙箱逃逸漏洞PoC已公开
  • 【老飞飞源码】新版高清飞飞源码+数据库+客户端+服务器端完整文件打包