当前位置: 首页 > 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;从家电好物到生活用…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的&#xff0c;比GNOME简单得多&#xff01; 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

微服务商城-商品微服务

数据表 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 商…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南&#xff1a;从入门到实战 一、Grunt 是什么&#xff1f; Grunt是一个基于 Node.js 的前端自动化任务运行器&#xff0c;主要用于自动化执行项目开发中重复性高的任务&#xff0c;例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

android13 app的触摸问题定位分析流程

一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...