PySpark Yarn集群模式

目录

简介

一、PySpark简介

二、YARN模式概述

三、配置环境

1. 安装与配置Spark

2. 配置Hadoop和YARN

3. 启动yarn

四、编写PySpark脚本

五、提交PySpark作业到YARN

参数解释:

六、常见问题及解决

七、总结


简介

随着大数据的普及,Spark作为主流的分布式计算框架,在大数据处理中扮演着重要角色。YARN(Yet Another Resource Negotiator)作为资源调度和管理框架,与Spark结合后可以更好地管理和调度资源。本篇文章将详细介绍如何在YARN集群模式下运行PySpark应用程序,适合有一定Spark基础的开发者。

一、PySpark简介

PySpark是Spark的Python API,支持使用Python编写代码并提交到Spark集群运行。在大规模数据处理中,PySpark可以利用Python的简单性和Spark的分布式处理能力,极大地提升数据处理效率。

二、YARN模式概述

YARN模式是Spark常用的集群模式之一。YARN可以有效地调度集群资源,并提供容错能力。通过将Spark应用程序提交到YARN,用户可以在Hadoop集群上更高效地执行计算任务。

Spark在YARN上运行时有两种模式:

  1. Cluster模式:Driver运行在YARN集群中,适用于生产环境。
  2. Client模式:Driver运行在提交应用程序的客户端,适用于调试和开发。

三、配置环境

在PySpark集群模式下运行需要配置Spark和YARN环境。

1. 安装与配置Spark

下载并解压Spark后,设置环境变量SPARK_HOME,并将其添加到PATH中。

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-yarn
rm -rf /opt/installs/spark
ln -s /opt/installs/spark-yarn /opt/installs/spark

修改$SPARK_HOME/conf/spark-env.sh文件,指定Hadoop和YARN相关配置:

cd /opt/installs/spark/conf
mv spark-env.sh.template spark-env.sh
vim /opt/installs/spark/conf/spark-env.sh
## 22行左右设置JAVA安装目录、HADOOP和YARN配置文件
目录
export JAVA_HOME=/opt/installs/jdk
export HADOOP_CONF_DIR=/opt/installs/hadoop/etc/hadoop
export YARN_CONF_DIR=/opt/installs/hadoop/etc/hadoop
## 历史日志服务器
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_HOME/conf/spark-defaults.conf文件:

cd /opt/installs/spark/conf
mv spark-defaults.conf.template spark-defaults.confvim spark-defaults.conf
## 添加内容:
spark.eventLog.enabled           true
spark.eventLog.dir           hdfs://bigdata01:9820/spark/eventLogs
spark.eventLog.compress           true
spark.yarn.historyServer.address bigdata01:18080
spark.yarn.jars           hdfs://bigdata01:9820/spark/jars/*

修改$SPARK_HOME/conf/log4j.properties文件:

mv log4j.properties.template log4j.properties# 修改级别为WARN,打印日志少一点。

上传spark jar包:

# 因为YARN中运行Spark,需要用到Spark的一些类和方法
# 如果不上传到HDFS,每次运行YARN都要上传一次,比较慢
# 所以自己手动上传一次,以后每次YARN直接读取即可
hdfs dfs -mkdir -p /spark/jars/
hdfs dfs -put /opt/installs/spark/jars/* /spark/jars/
2. 配置Hadoop和YARN

确保Hadoop集群已配置并正常运行,core-site.xmlyarn-site.xml应配置正确。

 修改$SPARK_HOME/conf/yarn-site.xml文件:

cd /opt/installs/hadoop/etc/hadoop# 检查以下内置少什么,就配什么。
<property><name>yarn.log-aggregation-enable</name><value>true</value>
</property><!-- 历史日志在HDFS保存的时间,单位是秒 -->
<!-- 默认的是-1,表示永久保存 -->
<property><name>yarn.log-aggregation.retain-seconds</name><value>604800</value>
</property><property><name>yarn.log.server.url</name><value>http://bigdata01:19888/jobhistory/logs</value>
</property><!-- 关闭yarn内存检查 -->
<property><name>yarn.nodemanager.pmem-check-enabled</name><value>false</value>
</property>
<property><name>yarn.nodemanager.vmem-check-enabled</name><value>false</value>
</property>

 将Master节点的文件分发到Worker节点(xsync.sh):

xsync.sh yarn-site.xml
xsync.sh /opt/installs/spark-yarn
# 超链接也分发一下:
xsync.sh /opt/installs/spark
3. 启动yarn
start-yarn.sh
# 启动MR的JobHistoryServer:19888
mapred --daemon start historyserver
# 启动Spark的HistoryServer:18080
/opt/installs/spark/sbin/start-history-server.sh

四、编写PySpark脚本

下面是一个简单的PySpark示例代码,将在YARN集群模式下运行。

from pyspark import SparkContext, SparkConf from pyspark.sql import SparkSession
# 创建Spark配置
conf = SparkConf().setAppName("PySpark YARN Example")
# 创建SparkSession spark = SparkSession.builder.config(conf=conf).getOrCreate()
# 示例操作:读取文件并统计单词数量
data = spark.read.text("hdfs:///path/to/input.txt") words = data.rdd.flatMap(lambda line: line.value.split(" ")) word_counts = words.map(lambda word: (word, 1)).reduceByKey(lambda a, b: a + b) word_counts.collect()
spark.stop()

五、提交PySpark作业到YARN

在集群模式下,将PySpark脚本提交到YARN中运行,使用以下命令:

spark-submit \
--master yarn \
--deploy-mode cluster \
--driver-memory 4G \
--executor-memory 2G \
--executor-cores 2 \
/path/to/your_script.py
参数解释:
  • --master yarn:指定YARN作为集群管理器。
  • --deploy-mode cluster:集群模式,Driver运行在YARN上。
  • --driver-memory:Driver分配的内存。
  • --executor-memory:每个Executor分配的内存。
  • --executor-cores:每个Executor分配的CPU核心数。

六、常见问题及解决

  1. 网络超时问题:在YARN模式下,网络超时是一个常见问题,尤其在集群模式中。可以增加spark.network.timeout的时间来解决。

  2. 内存不足:增加driver-memoryexecutor-memory的分配量。

  3. 依赖包丢失:可以使用--py-files参数将Python依赖包提交到集群。

七、总结

在YARN集群模式下运行PySpark作业可以充分利用资源管理器的调度能力,适用于生产环境。通过配置Spark、Hadoop和YARN,编写PySpark脚本并提交到YARN,用户可以高效地执行分布式计算任务。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

抖音短剧小程序上线:短视频平台的全新娱乐体验

抖音短剧小程序的开发是一个结合了创意与技术的过程&#xff0c;旨在通过简洁而富有吸引力的方式&#xff0c;向用户提供高质量的短剧内容。随着移动互联网的快速发展&#xff0c;短视频平台成为了人们日常生活中不可或缺的一部分&#xff0c;而短剧作为一种新兴的内容形式&…

【解决】Ubuntu18.04 卸载python之后桌面异常且终端无法打开,重启后进入tty1,没有图形化界面

我因为python版本太过于混乱 &#xff08;都是为了学习os&#xff09; &#xff0c;3.6—3.9版本我都安装了&#xff0c;指向关系也很混乱&#xff0c;本着“重装是最不会乱”的原则&#xff0c;我把全部版本都卸载了。然后装了3.9 发现终端打不开了&#xff0c;火狐浏览器的图…

Golang | Leetcode Golang题解之第521题最长特殊序列I

题目&#xff1a; 题解&#xff1a; func findLUSlength(a, b string) int {if a ! b {return max(len(a), len(b))}return -1 }func max(a, b int) int {if b > a {return b}return a }

【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,2-13

文件下载与邀请翻译者 学习英特尔开发手册&#xff0c;最好手里这个手册文件。原版是PDF文件。点击下方链接了解下载方法。 讲解下载英特尔开发手册的文章 翻译英特尔开发手册&#xff0c;会是一件耗时费力的工作。如果有愿意和我一起来做这件事的&#xff0c;那么&#xff…

二叉树中的深搜 算法专题

二叉树中的深搜 一. 计算布尔二叉树的值 计算布尔二叉树的值 class Solution {public boolean evaluateTree(TreeNode root) {if(root.left null) return root.val 0? false: true;boolean left evaluateTree(root.left);boolean right evaluateTree(root.right);return…

VisionPro —— CogPatInspectTool对比工具

一、CogPathInspectTool工具简介 CogPathInspectTool是VisionPro重要的工具&#xff0c;主要用于缺陷检测&#xff0c;通过将当前图像与“训练图像”对比&#xff0c;获取“原始差异图像”&#xff0c;再将“原始差异图像”与“阈值图像”进行对比&#xff0c;进而获取“阈值差…

Linux 系统启动

1.Linux系统启动过程 Linux系统启动过程可以分为5个阶段&#xff1a;内核的引导、运行 init、系统初始化、建立终端、用户登录系统。 2.内核引导 当计算机打开电源后&#xff0c;首先是BIOS开机自检&#xff0c;按照BIOS中设置的启动设备&#xff08;通常是硬盘&#xff09;来启…

Qt 坐标系统与坐标变换

Qt 坐标系统与坐标变换 坐标变换函数 QPainter坐标变换相关函数 分组函数原型功能坐标变换void translate(qreal dx,qreal dy)坐标系统一定的偏移量&#xff0c;坐标原点平移到新的点void rotate(qreal angle)坐标系统顺时针旋转-一个角度void scale(qreal sx,qreal sy)坐标…

奥数与C++小学四年级(第十六题 魔法学院)

参考程序代码&#xff1a; #include <iostream>int main() {int maxStudentsPerSubject 9; // 每个科目最多有9个比哈利高的学生int students maxStudentsPerSubject * 3; // 三个科目// 加上哈利自己int totalStudents students 1;std::cout << "最大学…

高空作业未系安全带监测系统 安全带穿戴识别预警系统

在各类高空作业场景中&#xff0c;安全带是保障作业人员生命安全的关键防线。然而&#xff0c;由于人为疏忽或其他原因&#xff0c;作业人员未正确系挂安全带的情况时有发生&#xff0c;这给高空作业带来了巨大的安全隐患。为有效解决这一问题&#xff0c;高空作业未系安全带监…

备战“双11”丨AI+物流:你的快递会有什么变化?

背景 在中国&#xff0c;每天有数以亿计的包裹在运输&#xff0c;尤其在电商促销季如“双十一”、“618”期间&#xff0c;快递量更是激增。快递物流行业面临人员短缺、配送效率低下和物流承载能力有限等问题。快瞳科技提供的AI识别解决方案通过智能化手段提高工作效率和配送准…

Cesium的PickModel浅析

Cesium中的拣选(pick)具备一套比较巧妙机制&#xff0c;。可以简单的认为&#xff0c;Cesium的常规的鼠标拣选是基于最终成图做的。就如同下面的这幅画&#xff0c;红色的箭头指向牛的臀&#xff0c;而不是后面的房子&#xff0c;是因为牛挡住了房子。这是一种比较自然的理解方…

针对告警数量、告警位置、告警类型等参数进行统计,并做可视化处理的智慧能源开源了

一、简介 AI视频监控平台, 是一款功能强大且简单易用的实时算法视频监控系统。愿景在最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;减少企业级应用约 95%的开发成本&#xff0c;在强大视频算…

【教学类-12-10】20241104《连连看竖版6*6 (3套题目空心图案)中2班

【教学类-12-09】20230228《连连看竖版6*6 &#xff08;3套题目空心图案&#xff08;中班教学&#xff09;》&#xff08;中班主题《玩具总动员》)-CSDN博客文章浏览阅读121次。【教学类-12-09】20230228《连连看竖版6*6 &#xff08;3套题目空心图案&#xff08;中班教学&…

Windows系统使用diskpart命令格式化U盘

Windows系统使用diskpart命令格式化U盘 1、以管理员身份运行CMD命令提示符 2、输入【diskpart】进入diskpart命令行界面 3、输入【list disk】命令&#xff0c;查看本机所有磁盘 4、这里以格式化【磁盘4】为列&#xff0c;输入【select disk 4】命令&#xff0c;选择磁盘4…

Uni商城-开源项目

目录 概述 技术选型 前端 后端 数据库&#xff1a;MongoDB 项目原型图 项目实现效果图 Tabbar页面 微信一键登录 ​编辑加入购物车 ​编辑 首页商品分类过滤 商品搜索 商品下单 收货地址选择/管理&#xff08;内置组件&#xff09; ​编辑 购物车下单 ​编辑 优…

电脑开机显示无信号然后黑屏怎么办?

当我们打开电脑时&#xff0c;遇到电脑屏幕出现了无信号并且黑屏&#xff0c;常常会让我们感到困扰。很多朋友都会遇到显示器无信号的情况&#xff0c;其实这种故障是很好解决的&#xff0c;但是电脑小白&#xff0c;并不知道电脑屏幕显示无信号然后黑屏了要怎么去修复。不用担…

Linux Kernel Programming (个人读书笔记)

目录 Before everything begins 笔者的环境 关于如何在Arch Linux下载Virtual Box 下载一个镜像&#xff0c;然后开启一个简单的虚拟机 在Ubuntu虚拟机下东西 配置我们的内核 啥是KConfig和KBuild? 构建内核配置选择 启动&#xff01;一个好的内核配置的开始 使用分发…

【优先算法】双指针

✨✨欢迎大家来到Celia的博客✨✨ &#x1f389;&#x1f389;创作不易&#xff0c;请点赞关注&#xff0c;多多支持哦&#x1f389;&#x1f389; 所属专栏&#xff1a;优先算法 个人主页&#xff1a;Celias blog~ 目录 ​​​​​​移动零 复写零 快乐数 盛水最多的容器 …

公务员考试需要注意哪些事项,这里简单的介绍一下

大家好&#xff0c;我是一颗甜苞谷&#xff0c;今天分享一下公务员考试需要注意哪些事项。 公务员考试注意事项 公务员考试是许多求职者梦寐以求的职业生涯起点&#xff0c;但要成功通过这场竞争激烈的考试&#xff0c;需要做好充分的准备。以下是一些关键的注意事项&#xff…