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目录下:
-
复制模板文件
spark-env.sh.template并重命名为spark-env.sh:cd /opt/installs/spark/conf mv spark-env.sh.template spark-env.sh -
在
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程序 -
在HDFS上创建程序日志存储目录(首先如果没有启动hdfs,需要启动一下)
# 第一台机器启动HDFS start-dfs.sh # 创建程序运行日志的存储目录 hdfs dfs -mkdir -p /spark/eventLogs/
3.2 配置spark-defaults.conf
在$SPARK_HOME/conf目录下:
-
复制模板文件spark-defaults.conf并重命名为spark-defaults.conf:
mv spark-defaults.conf.template spark-defaults.conf vim spark-defaults.conf -
在
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目录下:
-
复制模板文件workers
.template并重命名为workers:mv workers.template workers -
在workers文件中添加所有Worker节点的IP或主机名,例如:
# 删掉localhost,添加以下内容 bigdata01 bigdata02 bigdata03
3.4 设配置log4j.properties
在$SPARK_HOME/conf目录下:
-
复制模板文件log4j.properties
.template并重命名为log4j.properties:mv log4j.properties.template log4j.properties -
在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.sh和stop-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+参考文档+项目部署】
作者简介:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容:🌟Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…...
9.排队模型-M/M/1
1.排队模型 在Excel中建立排队模型可以帮助分析系统中的客户流动和服务效率。以下是如何构建简单排队模型的步骤: 1.确定模型参数 到达率(λ):客户到达系统的平均速率(例如每小时到达的客户数)。服务率&…...
【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:Shell是一个命令解释器,用来执行用户输入的命令。常用的Shell包括Bash、Zsh、Ksh等。Linux默认的Shell通常是Bash。 Shell脚本:Shell脚本是由一系列命令组成的文件,脚本可以运行一连串命令ÿ…...
官方工具重装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.网络初识 网络和计算机类似:都是属于军用》民用; 网络诞生于美苏争霸时期,当时就感觉核战争一触即发,形式非常严峻…...
每天10个vue面试题(六)
1、对Vue设计原则的理解? 渐进式JavaScript框架:与其它大型框架不同的是,Vue被设计为可以自底向上逐层应用。Vue的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化…...
Qt:信号和槽
目录 关于信号 connect函数 关于connect connect的使用 自定义信号、自定义槽 自定义槽 第一种方式自定义槽 第二种方式自定义槽 自定义信号 信号槽 带参数的信号槽 参数个数一致的示例 参数个数不一致的示例 Q_OBJECT 信号和槽存在的意义 disconnect函数 使用…...
可以免费商用的字体下载
这里介绍一个开源仓库,收录的可以免费商用的字体,目前中文字体1308款,英文字体980款,共约2288多款字体。 Description Free fonts that can be used commercially.There are currently 1308 Chinese fonts and 980 English font…...
centos7之LVS-TUNNEL模式
介绍 优缺点以及适用场景 优点:能负载更多的Realserver减轻LB的压力。LVS和Realserver可以不再同一网段。 缺点:tun模式的开销比较大(出口流量大),性能不如DR模式。不支持端口转发。后端Realserver系统必须支持tunnel协议。 适用ÿ…...
Linux驱动开发(3):字符设备驱动
上一章节我们了解到什么是内核模块,模块的加载卸载详细过程以及内核模块的使用等内容。 本章,我们将学习驱动相关的概念,理解字符设备驱动程序的基本框架,并从源码上分析字符设备驱动实现和管理。 主要内容有如下五点:…...
刘艳兵-DBA023-控制文件是Oracle 数据库用来查找数据库文件,控制文件包含以下哪些信息:
控制文件是Oracle 数据库用来查找数据库文件,控制文件包含以下哪些信息: A 表空间信息 B 创建数据库的时间戳 C 有关数据文件、 联机重做日志文件、和归档重做日志文件的信息 D 数据库名称和数据库唯一标识符(DBID) E RMAN备份…...
Vue Scoped CSS深度解析:原理、误区与最佳实践
引言 在Vue开发中,Scoped CSS是一个强大而复杂的功能。它允许我们将样式限制在特定组件内,但同时也带来了一些细微的行为,可能导致意外的样式"泄漏"。本文将深入探讨Vue Scoped CSS的工作原理,解释常见的误区ÿ…...
744. 寻找比目标字母大的最小字母
目录 题目解法一解法二如何比较字符串letters.back()*upper_bound为什么要加* 题目 给你一个字符数组 letters,该数组按非递减顺序排序,以及一个字符 target。letters 里至少有两个不同的字符。 返回 letters 中大于 target 的最小的字符。如果不存在这…...
浅谈QT中Tab键的切换逻辑
浅谈QT中Tab键的切换逻辑 无意中发现在输入界面中按下Tab键时,没有按照预想的顺序切换焦点事件,如下图所示 这个现象还是很有趣,仔细观察了下,默认的切换顺序是按照控件拖入顺序,那么知道了这个问题想要解决起来就很简…...
基于MoviNet检测视频中危险暴力行为
项目源码获取方式见文章末尾! 600多个深度学习项目资料,快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【Faster & Mask R-CNN模型实现啤酒瓶瑕疵检测】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【GAN模型实现二次元头像生…...
《等保测评:抵御网络威胁的盾牌》
在网络空间的无垠战场上,网络安全威胁如同暗夜之狼,潜伏在每一个角落,随时准备对企业和个人发动致命一击。在这场没有硝烟的战争中,等保测评作为国家网络安全等级保护制度的重要组成部分,犹如坚固的盾牌,为…...
前端必知必会-JavaScript 对象属性
文章目录 JavaScript 对象属性访问 JavaScript 属性添加新属性删除属性嵌套对象 总结 JavaScript 对象属性 对象是无序的属性集合 属性是 JavaScript 对象中最重要的部分。 属性可以更改、添加、删除,有些属性是只读的。 访问 JavaScript 属性 访问对象属性的语…...
双11都有什么值得入手的好物?双十一最建议买的5样东西
双11的脚步逐步渐近,我们点开各大电商平台也可以看到,各个商家已经开始大激烈的促销大战,那么双十一作为一年之中最盛大的购物节,都有什么值得入手的好物呢?今天就给大家建议买的5样东西,从家电好物到生活用…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
如何更改默认 Crontab 编辑器 ?
在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...
恶补电源:1.电桥
一、元器件的选择 搜索并选择电桥,再multisim中选择FWB,就有各种型号的电桥: 电桥是用来干嘛的呢? 它是一个由四个二极管搭成的“桥梁”形状的电路,用来把交流电(AC)变成直流电(DC)。…...
数据结构第5章:树和二叉树完全指南(自整理详细图文笔记)
名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 原创笔记:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 上一篇:《数据结构第4章 数组和广义表》…...
Tauri2学习笔记
教程地址:https://www.bilibili.com/video/BV1Ca411N7mF?spm_id_from333.788.player.switch&vd_source707ec8983cc32e6e065d5496a7f79ee6 官方指引:https://tauri.app/zh-cn/start/ 目前Tauri2的教程视频不多,我按照Tauri1的教程来学习&…...
