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

PySpark Standalone 集群部署教程

目录

1. 环境准备

1.1 配置免密登录

2. 下载并配置Spark

3. 配置Spark集群

3.1 配置spark-env.sh

3.2 配置spark-defaults.conf

3.3 设置Master和Worker节点

 3.4 设配置log4j.properties

3.5 同步到所有Worker节点

4. 启动Spark Standalone集群

4.1 启动Master节点

4.2 启动Worker节点

4.3 启动日志服务

5. 测试Spark集群

5.1 提交测试任务

6. 管理Spark集群

6.1 停止Spark集群

7. 常见问题

7.1 防火墙问题

7.2 Java版本不兼容


1. 环境准备

在开始之前,请确保集群中所有节点满足以下要求:

  • 操作系统:建议使用Linux(CentOS或Ubuntu)
  • Java:JDK 1.8或以上版本
  • Python:若使用PySpark,请安装Python 3.6以上版本
  • 网络配置:确保各节点之间的SSH无密码登录已配置

在本教程中,将采用以下的集群结构:

  • Master节点:负责管理资源分配和任务调度
  • Worker节点:实际执行任务

1.1 配置免密登录

在Master节点上配置SSH免密登录,方便自动化管理和任务分发。

ssh-keygen -t rsa # 生成密钥对
ssh-copy-id user@worker1 # 将公钥复制到worker1节点
ssh-copy-id user@worker2 # 将公钥复制到worker2节点

确认免密登录配置成功后,可以继续下一步。

2. 下载并配置Spark

PySpark单机模式安装教程

(按照PySpark单机模式安装教程将其他Work节点也安装Anaconda)

# 解压安装
cd /opt/modules
tar -zxf spark-3.1.2-bin-hadoop3.2.tgz -C /opt/installs
# 重命名
cd /opt/installs
mv spark-3.1.2-bin-hadoop3.2 spark-standalone
# 重新构建软连接
rm -rf spark
ln -s spark-standalone spark

3. 配置Spark集群

3.1 配置spark-env.sh

$SPARK_HOME/conf目录下:

  1. 复制模板文件spark-env.sh.template并重命名为spark-env.sh:

    cd /opt/installs/spark/conf
    mv spark-env.sh.template spark-env.sh
    
  2. spark-env.sh文件中添加以下内容:

    # 22行:申明JVM环境路径以及Hadoop的配置文件路径
    export JAVA_HOME=/opt/installs/jdk
    export HADOOP_CONF_DIR=/opt/installs/hadoop/etc/hadoop
    # 60行左右
    export SPARK_MASTER_HOST=bigdata01 # 主节点所在的地址
    export SPARK_MASTER_PORT=7077 #主节点内部通讯端口,用于接收客户端请求
    export SPARK_MASTER_WEBUI_PORT=8080 #主节点用于供外部提供浏览器web访问的端口
    export SPARK_WORKER_CORES=1     # 指定这个集群总每一个从节点能够使用多少核CPU
    export SPARK_WORKER_MEMORY=1g   #指定这个集群总每一个从节点能够使用多少内存
    export SPARK_WORKER_PORT=7078
    export SPARK_WORKER_WEBUI_PORT=8081
    export SPARK_DAEMON_MEMORY=1g  # 进程自己本身使用的内存
    export SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://bigdata01:9820/spark/eventLogs/ -Dspark.history.fs.cleaner.enabled=true"
    # Spark中提供了一个类似于jobHistoryServer的进程,就叫做HistoryServer, 用于查看所有运行过的spark程序
  3. 在HDFS上创建程序日志存储目录(首先如果没有启动hdfs,需要启动一下)

    # 第一台机器启动HDFS
    start-dfs.sh
    # 创建程序运行日志的存储目录
    hdfs dfs -mkdir -p /spark/eventLogs/

3.2 配置spark-defaults.conf

 在$SPARK_HOME/conf目录下:

  1. 复制模板文件spark-defaults.conf并重命名为spark-defaults.conf:

    mv spark-defaults.conf.template spark-defaults.conf
    vim spark-defaults.conf
  2. spark-env.sh文件中添加以下内容:

    # 末尾
    spark.eventLog.enabled           true
    spark.eventLog.dir              hdfs://bigdata01:9820/spark/eventLogs
    spark.eventLog.compress              true

3.3 设置Master和Worker节点

$SPARK_HOME/conf目录下:

  1. 复制模板文件workers.template并重命名为workers

    mv workers.template workers
  2. workers文件中添加所有Worker节点的IP或主机名,例如:

    # 删掉localhost,添加以下内容
    bigdata01
    bigdata02
    bigdata03

 3.4 设配置log4j.properties

$SPARK_HOME/conf目录下:

  1. 复制模板文件log4j.properties.template并重命名为log4j.properties:

    mv log4j.properties.template log4j.properties
  2. 在log4j.properties文件中添修改以下内容:

    # 19行:修改日志级别为WARN
    log4j.rootCategory=WARN, consolelog4j的5种 级别  debug --> info --> warn --error -->fatal

3.5 同步到所有Worker节点

将Master的spark同步到其他Worker节点

scp $SPARK_HOME user@worker1:$SPARK_HOME
scp $SPARK_HOME user@worker2:$SPARK_HOME

(也可以使用文件分发脚本xsync.sh将整个spark文件同步给其他节点)

同时,在其他节点创建软链接(命令同步执行脚本xcall.sh):

cd /opt/installs/
ln -s spark-standalone spark换个思路,是否可以同步软链接:
xsync.sh /opt/installs/spark

4. 启动Spark Standalone集群

4.1 启动Master节点

在Master节点上执行以下命令启动Master服务:

# 启动master:
cd /opt/installs/spark
sbin/start-master.sh

Master启动成功后,可以在http://<Master_IP>:8080查看集群的Web UI(8080为默认端口)。

4.2 启动Worker节点

在Master节点上,通过以下命令启动所有Worker节点:

# 启动所有worker:
sbin/start-workers.sh
# 如果你想启动某一个worker
sbin/start-worker.sh

4.3 启动日志服务

在Master节点上,通过以下命令启动日志服务:

# 启动日志服务:
sbin/start-history-server.sh

5. 测试Spark集群

5.1 提交测试任务

可以通过以下命令提交一个简单的Spark任务来测试集群是否配置成功:

$SPARK_HOME/bin/spark-submit --master spark://<Master_IP>:7077 \ --class org.apache.spark.examples.SparkPi \ $SPARK_HOME/examples/jars/spark-examples*.jar 10

运行后,观察任务的运行结果,若无错误信息,说明集群部署成功。

6. 管理Spark集群

6.1 停止Spark集群

可以在Master节点上执行以下命令停止集群:

$SPARK_HOME/sbin/stop-all.sh# 要想关闭某个服务,将start换为stop

也可以分别在Master和Worker节点上使用stop-master.shstop-worker.sh命令来单独停止服务。

7. 常见问题

7.1 防火墙问题

如果无法访问Web UI,请检查是否需要开放8080端口,或使用防火墙命令允许通信:

# 防火墙状态命令:
systemctl status firewalld
# 关闭防火墙命令:
systemctl stop firewalld(重启后防火墙还是会自动开启)
# 开启防火墙命令:
systemctl  start firewalld
# 重启防火墙命令:
systemctl  restart firewalld
# 开机启动防火墙命令:
systemctl enable firewalld
# 开机不启动防火墙命令:
systemctl disable firewalld

7.2 Java版本不兼容

确保所有节点上的Java版本一致,以避免运行时出现兼容性问题。


至此,您已成功部署了Spark Standalone集群,并验证了基本的任务提交。Standalone集群适用于中小规模数据处理需求,便于简单、高效地管理Spark资源。

相关文章:

PySpark Standalone 集群部署教程

目录 1. 环境准备 1.1 配置免密登录 2. 下载并配置Spark 3. 配置Spark集群 3.1 配置spark-env.sh 3.2 配置spark-defaults.conf 3.3 设置Master和Worker节点 3.4 设配置log4j.properties 3.5 同步到所有Worker节点 4. 启动Spark Standalone集群 4.1 启动Master节点 …...

【源码+文档】基于SpringBoot+Vue旅游网站系统【提供源码+答辩PPT+参考文档+项目部署】

作者简介&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容&#xff1a;&#x1f31f;Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…...

9.排队模型-M/M/1

1.排队模型 在Excel中建立排队模型可以帮助分析系统中的客户流动和服务效率。以下是如何构建简单排队模型的步骤&#xff1a; 1.确定模型参数 到达率&#xff08;λ&#xff09;&#xff1a;客户到达系统的平均速率&#xff08;例如每小时到达的客户数&#xff09;。服务率&…...

【GO学习笔记 go基础】编译器下载安装+Go设置代理加速+项目调试+基础语法+go.mod项目配置+接口(interface)

编译器下载&安装 下载并安装go1.23.2.windows-amd64.msi默认安装再C:\Program Files\Go\ PS C:\Users\kingchuxing\Documents> go version go version go1.23.2 windows/amd64Go设置GOPROXY国内加速 windows // 启用 Go Modules 功能 PS C:\Users\kingchuxing…...

从0开始学习shell脚本

了解Shell和Shell脚本 Shell&#xff1a;Shell是一个命令解释器&#xff0c;用来执行用户输入的命令。常用的Shell包括Bash、Zsh、Ksh等。Linux默认的Shell通常是Bash。 Shell脚本&#xff1a;Shell脚本是由一系列命令组成的文件&#xff0c;脚本可以运行一连串命令&#xff…...

官方工具重装Windows 11当前版本 /绕过硬件检查/免U盘

官方工具重装Windows 11当前版本 /绕过硬件检查/免U盘 官方工具重装Windows 11当前版本 /绕过硬件检查/免U盘_win11安装跳过检测-CSDN博客...

JavaEE初阶---网络原理/UDP服务器客户端程序

文章目录 1.网络初识2.网络编程2.1TCP/UDP区别介绍2.2UDP的socket api使用2.3UDP协议里面的服务器客户端程序 1.网络初识 网络和计算机类似&#xff1a;都是属于军用》民用&#xff1b; 网络诞生于美苏争霸时期&#xff0c;当时就感觉核战争一触即发&#xff0c;形式非常严峻…...

每天10个vue面试题(六)

1、对Vue设计原则的理解&#xff1f; 渐进式JavaScript框架&#xff1a;与其它大型框架不同的是&#xff0c;Vue被设计为可以自底向上逐层应用。Vue的核心库只关注视图层&#xff0c;不仅易于上手&#xff0c;还便于与第三方库或既有项目整合。另一方面&#xff0c;当与现代化…...

Qt:信号和槽

目录 关于信号 connect函数 关于connect connect的使用 自定义信号、自定义槽 自定义槽 第一种方式自定义槽 第二种方式自定义槽 自定义信号 信号槽 带参数的信号槽 参数个数一致的示例 参数个数不一致的示例 Q_OBJECT 信号和槽存在的意义 disconnect函数 使用…...

可以免费商用的字体下载

这里介绍一个开源仓库&#xff0c;收录的可以免费商用的字体&#xff0c;目前中文字体1308款&#xff0c;英文字体980款&#xff0c;共约2288多款字体。 Description Free fonts that can be used commercially.There are currently 1308 Chinese fonts and 980 English font…...

centos7之LVS-TUNNEL模式

介绍 优缺点以及适用场景 优点&#xff1a;能负载更多的Realserver减轻LB的压力。LVS和Realserver可以不再同一网段。 缺点&#xff1a;tun模式的开销比较大(出口流量大)&#xff0c;性能不如DR模式。不支持端口转发。后端Realserver系统必须支持tunnel协议。 适用&#xff…...

Linux驱动开发(3):字符设备驱动

上一章节我们了解到什么是内核模块&#xff0c;模块的加载卸载详细过程以及内核模块的使用等内容。 本章&#xff0c;我们将学习驱动相关的概念&#xff0c;理解字符设备驱动程序的基本框架&#xff0c;并从源码上分析字符设备驱动实现和管理。 主要内容有如下五点&#xff1a;…...

刘艳兵-DBA023-控制文件是Oracle 数据库用来查找数据库文件,控制文件包含以下哪些信息:

控制文件是Oracle 数据库用来查找数据库文件&#xff0c;控制文件包含以下哪些信息&#xff1a; A 表空间信息 B 创建数据库的时间戳 C 有关数据文件、 联机重做日志文件、和归档重做日志文件的信息 D 数据库名称和数据库唯一标识符&#xff08;DBID) E RMAN备份…...

Vue Scoped CSS深度解析:原理、误区与最佳实践

引言 在Vue开发中&#xff0c;Scoped CSS是一个强大而复杂的功能。它允许我们将样式限制在特定组件内&#xff0c;但同时也带来了一些细微的行为&#xff0c;可能导致意外的样式"泄漏"。本文将深入探讨Vue Scoped CSS的工作原理&#xff0c;解释常见的误区&#xff…...

744. 寻找比目标字母大的最小字母

目录 题目解法一解法二如何比较字符串letters.back()*upper_bound为什么要加* 题目 给你一个字符数组 letters&#xff0c;该数组按非递减顺序排序&#xff0c;以及一个字符 target。letters 里至少有两个不同的字符。 返回 letters 中大于 target 的最小的字符。如果不存在这…...

浅谈QT中Tab键的切换逻辑

浅谈QT中Tab键的切换逻辑 无意中发现在输入界面中按下Tab键时&#xff0c;没有按照预想的顺序切换焦点事件&#xff0c;如下图所示 这个现象还是很有趣&#xff0c;仔细观察了下&#xff0c;默认的切换顺序是按照控件拖入顺序&#xff0c;那么知道了这个问题想要解决起来就很简…...

基于MoviNet检测视频中危险暴力行为

项目源码获取方式见文章末尾&#xff01; 600多个深度学习项目资料&#xff0c;快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【Faster & Mask R-CNN模型实现啤酒瓶瑕疵检测】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【GAN模型实现二次元头像生…...

《等保测评:抵御网络威胁的盾牌》

在网络空间的无垠战场上&#xff0c;网络安全威胁如同暗夜之狼&#xff0c;潜伏在每一个角落&#xff0c;随时准备对企业和个人发动致命一击。在这场没有硝烟的战争中&#xff0c;等保测评作为国家网络安全等级保护制度的重要组成部分&#xff0c;犹如坚固的盾牌&#xff0c;为…...

前端必知必会-JavaScript 对象属性

文章目录 JavaScript 对象属性访问 JavaScript 属性添加新属性删除属性嵌套对象 总结 JavaScript 对象属性 对象是无序的属性集合 属性是 JavaScript 对象中最重要的部分。 属性可以更改、添加、删除&#xff0c;有些属性是只读的。 访问 JavaScript 属性 访问对象属性的语…...

双11都有什么值得入手的好物?双十一最建议买的5样东西

双11的脚步逐步渐近&#xff0c;我们点开各大电商平台也可以看到&#xff0c;各个商家已经开始大激烈的促销大战&#xff0c;那么双十一作为一年之中最盛大的购物节&#xff0c;都有什么值得入手的好物呢&#xff1f;今天就给大家建议买的5样东西&#xff0c;从家电好物到生活用…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄

文&#xff5c;魏琳华 编&#xff5c;王一粟 一场大会&#xff0c;聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中&#xff0c;汇集了学界、创业公司和大厂等三方的热门选手&#xff0c;关于多模态的集中讨论达到了前所未有的热度。其中&#xff0c;…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...

【无标题】湖北理元理律师事务所:债务优化中的生活保障与法律平衡之道

文/法律实务观察组 在债务重组领域&#xff0c;专业机构的核心价值不仅在于减轻债务数字&#xff0c;更在于帮助债务人在履行义务的同时维持基本生活尊严。湖北理元理律师事务所的服务实践表明&#xff0c;合法债务优化需同步实现三重平衡&#xff1a; 法律刚性&#xff08;债…...