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 作为资源管理器。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/81887.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在WordPress中使用ChatGPT

ChatGPT 自 2022 年 11 月问世以来,极大地影响了我们的创作方式。ChatGPT 可以帮助您制作大纲、标题、段落或完整的博客文章,各地的数字创作者都在热衷于使用人工智能(AI)创建内容。随着人工智能的不断发展,我们看到了…

spring5-配外部文件-spEL-工厂bean-FactoryBean-注解配bean

spring配外部文件 我们先在Spring里配置一个数据源 1.导c3p0包,这里我们先学一下hibernate持久化框架&#xff0c;以后用mybites. <dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>5.2.…

GStreamer (三)常⽤插件

常⽤插件 1、Source1.1、filesrc1.2. videotestsrc1.3. v4l2src1.4. rtspsrc和rtspclientsink 2、 Sink2.1. filesink2.2. fakesink2.3. xvimagesink2.4. kmssink2.5. waylandsink2.6. rkximagesink2.7. fpsdisplaysink 3 、视频推流/拉流3.1. 本地推流/拉流3.1.1 USB摄像头3.1…

【EDA软件】【联合Modelsim仿真使用方法】

背景 业界EDA工具仿真功能是必备的&#xff0c;例如Vivado自带仿真工具&#xff0c;且无需联合外部仿真工具&#xff0c;例如MoodelSim。 FUXI工具仿真功能需要联合Modelsim&#xff0c;才能实现仿真功能。 方法一&#xff1a;FUXI联合ModelSim 1 添加testbench文件 新建to…

国产化Excel处理组件Spire.XLS for .NET系列教程:通过 C# 将 TXT 文本转换为 Excel 表格

在数据处理和管理场景中&#xff0c;将原始文本文件&#xff08;TXT&#xff09;高效转换为结构化的 Excel 电子表格是一项常见要求。对于那些需要自动生成报表或者处理日志文件的开发人员而言&#xff0c;借助 C# 实现 TXT 到 Excel 的转换工作&#xff0c;可以简化数据组织和…

DeepSeek 的强化学习优化策略:RLHF 与 DPO 的应用

DeepSeek 的强化学习优化策略&#xff1a;RLHF 与 DPO 的应用 系统化学习人工智能网站&#xff08;收藏&#xff09;&#xff1a;https://www.captainbed.cn/flu 文章目录 DeepSeek 的强化学习优化策略&#xff1a;RLHF 与 DPO 的应用摘要引言技术原理对比1. RLHF&#xff1a…

c: 分号的歧义

最近看到一个关于某些语言里的分号问题&#xff0c;比如下面一个作者就是无意识的每行后面多加了分号导致问题。 其实python的语法可以更好的规避这种潜意识&#xff0c;因为根本就不需要每行后面加分号的意识&#xff0c;也就不需要开发者习惯这种意识。 所以&#xff0c;最后…

Elasticsearch 实战面试题,每个题目都会单独解析

Elasticsearch 在 Java 中最常用的客户端是什么&#xff1f;如何初始化一个 RestHighLevelClient&#xff1f;如何用 Spring Boot 快速集成 Elasticsearch&#xff1f;Spring Data Elasticsearch 如何定义实体类与索引的映射&#xff1f; ES的倒排索引和正排索引的区别及适用场…

拉普拉斯高斯(LoG)滤波器掩模的注意事项

目录 问题&#xff1a; 解答&#xff1a; 一、高斯函数归一化&#xff1a;消除幅度偏差 1. 归一化的定义 2. 为何必须归一化&#xff1f; 二、拉普拉斯系数和为零&#xff1a;抑制直流项干扰 1. 拉普拉斯算子的特性 2. 系数和不为零的后果 三、直流项如何影响零交叉点&…

运维实施35-磁盘管理

了解磁盘 硬盘的接口类型 接口类型发展方向应用场景IDESATA I/II/III个人PC机SCSISAS服务器上 磁盘命名规则 OSIDE(并口)SATA(串口)SCSIRHEL5/dev/hda/dev/sda/dev/sdaRHEL6/dev/sda/dev/sda/dev/sdaRHEL7/dev/sda/dev/sda/dev/sda 磁盘设备的命名 /dev/sda2 s 硬件接口…

API面临哪些风险,如何做好API安全?

API面临的风险 API&#xff08;应用程序编程接口&#xff09;在现代软件开发和集成中扮演着至关重要的角色&#xff0c;但同时也面临着多种安全风险&#xff0c;主要包括以下几个方面&#xff1a; 数据泄露风险&#xff1a; API通常涉及敏感数据的传输和交换&#xff0c;如用…

`application-{env}.yml` 配置文件来实现多环境配置

在 Spring Boot 应用中&#xff0c;使用多套 application-{env}.yml 配置文件来实现多环境配置是一种常见且推荐的做法。这种方式可以帮助你根据不同的环境&#xff08;如开发、测试、生产等&#xff09;加载不同的配置&#xff0c;从而实现环境隔离和灵活配置。以下是如何通过…

野火鲁班猫(arrch64架构debian)从零实现用MobileFaceNet算法进行实时人脸识别(一)conda环境搭建

先安装miniconda wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh chmod x Miniconda3-latest-Linux-aarch64.sh bash Miniconda3-latest-Linux-aarch64.sh source ~/.bashrc conda --version按照MobileFaceNet的github官方指南&#xff0c;需要…

目标检测 Lite-DETR(2023)详细解读

文章目录 迭代高级特征跨尺度融合高效的低层次特征跨尺度融合KDA&#xff1a;Key-aware Deformable Attention 论文翻译&#xff1a; CVPR 2023 | Lite DETR&#xff1a;计算量减少60%&#xff01;高效交错多尺度编码器-CSDN博客 DINO团队的 &#xff08;Lightweight Transfo…

【Git】远程操作

Git 是一个分布式版本控制系统 可以简单理解为&#xff0c;每个人的电脑上都是一个完整的版本库&#xff0c;这样在工作时&#xff0c;就不需要联网 了&#xff0c;因为版本库就在自己的电脑上。 因此&#xff0c; 多个人协作的方式&#xff0c;譬如说甲在自己的电脑上改了文件…

华为云Flexus+DeepSeek征文|基于华为云Flexus云服务的Dify 构建智能客服助手

目录 一、构建智能客服助手应用 二、构建智能客服助手提示词 2.1 什么是智能客服助手&#xff1f; 2.2 生成智能客服助手提示词 三、访问智能客服助手 3.1 智能客服助手发布 3.2 智能客服助手聊天 3.3 开启新会话 四、总结 本篇文章主要基于华为云Flexus云服务的Dify 构…

基于单片机的矩阵键盘与数码管显示实验实践

在单片机开发领域&#xff0c;掌握基础的输入输出控制是迈向复杂项目的关键一步。本次实验聚焦于利用单片机开发板&#xff0c;通过矩阵键盘实现学号后 8 位的输入与数码管显示&#xff0c;旨在掌握数码管显示、软件延时以及键盘扫描及去抖动等核心方法。接下来&#xff0c;就带…

GO语言语法---switch语句

文章目录 基本语法1. 特点1.1 不需要break1.2 表达式可以是任何类型1.3 省略比较表达式1.4 多值匹配1.5 类型switch1.6 case穿透1.7 switch后直接声明变量1.7.1 基本语法1.7.2 带比较表达式1.7.3 不带比较表达式1.7.4 结合类型判断 1.8 switch后的表达式必须与case语句中的表达…

GO语言学习(三)

GO语言学习&#xff08;三&#xff09; GO语言的独特接口可以实现内容和面向对象组织的更加方便&#xff0c;我们从这里来详细的讲解接口&#xff0c;让大家感受一下interface的魅力 interface定义 首先接口是一组方法签名的组合&#xff0c;我们通过接口来实现定义对象的一…

anaconda创建环境出错HTTPS

报错信息 warnings.warn( /home/ti-3/anaconda3/lib/python3.12/site-packages/urllib3/connectionpool.py:1099: InsecureRequestWarning: Unverified HTTPS request is being made to host ‘repo.anaconda.com’. Adding certificate verification is strongly advised. Se…