如何搭建spark yarn 模式的集群集群
(一)什么是SparkONYarn模式
Spark on YARN(Yet Another Resource Negotiator)是 Spark 框架在 Hadoop 集群中运行的一种部署模式,它借助 Hadoop YARN 来管理资源和调度任务。
架构组成
ResourceManager:作为 YARN 的核心,负责整个集群的资源管理和调度。它会接收来自各个应用程序的资源请求,并根据集群资源的使用情况进行合理分配。
NodeManager:部署在集群中的每个节点上,负责管理该节点上的资源使用情况,监控容器的运行状态,并且与 ResourceManager 保持通信,汇报节点的资源使用信息。
ApplicationMaster:在 Spark 应用启动时,YARN 会为其分配一个 ApplicationMaster。它的主要职责是向 ResourceManager 申请资源,并且与 NodeManager 协作,启动和管理 Spark 的 Executor 进程。
Spark Driver:负责执行用户编写的 Spark 应用程序代码,将其转化为一系列的任务,并调度这些任务到各个 Executor 上执行。
Executor:运行在 NodeManager 管理的容器中,负责具体执行 Spark 任务,并将执行结果返回给 Driver。
(二)运行流程
提交应用:用户通过命令行或者其他方式向 YARN 提交 Spark 应用程序。
启动 ApplicationMaster:ResourceManager 接收到应用程序的请求后,会在集群中的某个节点上启动一个 ApplicationMaster 进程。
申请资源:ApplicationMaster 向 ResourceManager 注册,并根据应用程序的需求申请资源。
启动 Executor:ResourceManager 根据资源分配情况,通知相应的 NodeManager 启动 Executor 进程。
任务执行:Spark Driver 将任务分发给各个 Executor 执行,Executor 执行完任务后将结果返回给 Driver。
应用结束:当所有任务执行完毕后,ApplicationMaster 向 ResourceManager 注销,释放占用的资源。
(三)模式分类
Client 模式:Driver 运行在客户端进程中,客户端会与 ApplicationMaster 和 Executor 进行通信。这种模式适用于交互式应用,例如使用 Spark Shell 进行数据探索和分析。在这种模式下,用户可以在客户端直接看到 Driver 的输出和日志信息,方便调试和监控应用程序的运行状态。
Cluster 模式:Driver 运行在集群中的某个节点上,由 ApplicationMaster 负责管理。这种模式适用于生产环境中的长时间运行的应用程序。在 Cluster 模式下,客户端提交应用程序后可以断开连接,应用程序会在集群中独立运行,不受客户端的影响。
(四)配置集群
1.上传并解压spark-3.1.2-bin-hadoop3.2.tgz,重命名解压之后的目录为spark-yarn。对应的命令是:tar -zxvf spark-3.3.1-bin-hadoop3.tgz -C /opt/module
2. 修改一下spark的环境变量,/etc/profile.d/my_env.sh 。
# spark 环境变量
export SPARK_HOME=/opt/module/spark-yarn
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
同步给其他的设备: xsync /etc/profile.d/
3.修改hadoop的配置。/opt/module/hadoop-3.1.3/etc/hadoop/yarn-site.xml。因为测试环境虚拟机内存较少,防止执行过程进行被意外杀死,添加如下配置。
<!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
把这个设置分发到其他节点。使用xsync /opt/module/hadoop-3.1.3/etc/hadoop/同步一下。
4.修改spark配置。 把三个文件的名字重新设置一下。
workers.tempalte 改成 workers,spark-env.sh.template 改成 spark-env.sh,
spark-defaults.conf.template 改成 spark-defaults.conf。
然后,在workers文件中添加
hadoop100
hadoop101
hadoop102
在spark-env.sh文件中,添加如下
SPARK_MASTER_HOST=hadoop100
SPARK_MASTER_PORT=7077
HADOOP_CONF_DIR=/opt/module/hadoop-3.1.3/etc/hadoop
YARN_CONF_DIR=/opt/module/hadoop-3.1.3/etc/hadoop
export SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://hadoop100:8020/directory"
在spark-defaults.conf文件中,添加如下
spark.eventLog.enabled true
spark.eventLog.dir hdfs://hadoop100:8020/directory
spark.yarn.historyServer.address=hadoop100:18080
spark.history.ui.port=18080
5.同步配置文件到其他设备。xsync /opt/module/spark-yarn/sbin
第二课时
前面我们完成了配置,接下来,我们去启动集群。
(五)启动集群
注意这里要同时启动hadoop和spark。
1.启动hdfs和yarn。使用我们之前配置的脚本:myhadoop start
2.启动spark和spark的历史服务器。进入/opt/module/spark-yarn/sbin,运行: ./start-all.sh 和 ./start-history-server.sh
并通过jps去检查是否有对应的进程。
(六)提交任务到集群
使用spark-submit提交任务
spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster /opt/module/spark-standalone/examples/jars/spark-examples_2.12-3.1.1.jar 10
代码说明:
- spark-submit:这是 Spark 提供的用于提交 Spark 应用程序的脚本。
2. --class org.apache.spark.examples.SparkPi:指定了应用程序的主类,也就是包含 main 方法的类。这里的 org.apache.spark.examples.SparkPi 是 Spark 自带的示例程序,用于通过蒙特卡罗方法估算圆周率 π的值。
3. --master yarn:指定了 Spark 应用程序的运行模式为 YARN。YARN 是 Hadoop 的资源管理系统,能够为 Spark 应用程序分配资源。
4. --deploy-mode cluster:指定了应用程序的部署模式为集群模式。在集群模式下,Driver 进程会在 YARN 集群内部的某个节点上运行。
5. /opt/module/spark-standalone/examples/jars/spark-examples_2.12-3.1.1.jar:指定了包含应用程序代码的 JAR 文件的路径。
6. 10:这是传递给应用程序的参数,在 SparkPi 示例中,这个参数表示用于估算π的采样点数。
(七)查看运行结果
1. 在yarn任务面板页面中可以看到任务的信息。http://hadoop101:8088/cluster
2.点击history上的链接,可以跳转进入到spark的历史服务器的界面。
相关文章:
如何搭建spark yarn 模式的集群集群
(一)什么是SparkONYarn模式 Spark on YARN(Yet Another Resource Negotiator)是 Spark 框架在 Hadoop 集群中运行的一种部署模式,它借助 Hadoop YARN 来管理资源和调度任务。 架构组成 ResourceManager:作为…...
共探蓝海赛道增长新方法 阿里国际站智能AI全球买家分析峰会在深落幕
来源:深圳晚报 随着全球贸易环境不断变化,跨境电商已成为推动企业发展的重要动力。为帮助企业更好地应对新的市场挑战,阿里巴巴国际站深莞惠大区于4月29日举办了“万亿商机 蓝海新市场”智能AI全球买家分析峰会,现已圆满落幕&…...
今日行情明日机会——20250429
指数依然在区间震荡,等待方向,重点关注决定大盘方向的板块,如证券的走势~ 2025年4月29日涨停主要行业方向分析 一、核心主线方向 一季报增长(业绩驱动资金避险) • 涨停家数:16家。 • 代表标的ÿ…...
什么是缓存?在NGINX中如何配置缓存以提升性能?
大家好,我是锋哥。今天分享关于【什么是缓存?在NGINX中如何配置缓存以提升性能?】面试题。希望对大家有帮助; 什么是缓存?在NGINX中如何配置缓存以提升性能? 1000道 互联网大厂Java工程师 精选面试题-Java…...
价值投资笔记:企业护城河——虚假陷阱与隐性壁垒的深度解析
一、护城河的本质与误判风险 护城河是企业抵御竞争、维持超额利润的核心能力。然而,市场中充斥着大量“虚假护城河”,它们看似构成壁垒,实则脆弱易碎。晨星公司研究显示,超过60%的企业竞争优势被误判为护城河,投资者需…...
2025年04月29日Github流行趋势
项目名称:Deep-Live-Cam 项目地址url:https://github.com/hacksider/Deep-Live-Cam项目语言:Python历史star数:52291今日star数:380项目维护者:hacksider, KRSHH, vic4key, pereiraroland26, kier007项目简…...
docker排查OOM Killer
文章目录 一.检查1.内存不足 (OOM Killer)2. CPU 资源限制3. 存储空间不足4. 应用自身崩溃5. 健康检查失败针对性建议 二.内存不足问题根源解决方案(按优先级排序)1. 紧急措施:立即释放内存2. 启用 Swap 交换空间(必须做ÿ…...
leetcode继续c++10/100
不应该是10-13-3吗 ChatGLM 引用 从代码片段来看,函数 findAnagrams 的目的是在字符串 s 中找到所有与字符串 p 是字母异位词的子串的起始索引。 代码中有一些调试输出语句,这些语句可能会影响程序的正常逻辑。具体来说: cpp 复制 cout …...
Kubernetes集群使用Harbor容器镜像仓库
实验环境 一、容器镜像仓库Harbor部署 1、配置主机名 192.168.10.14: hostnamectl set-hostname harbor 2、安装Docker wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum -y install docker-…...
归并排序排序总结
1. 归并排序 1.1 基本思想 归并排序(Merge Sort)是采用分治法(Divide and Conquer)的一个非常典型的应用。它的基本思想是将一个数组分成两个子数组,分别对这两个子数组进行排序,然后将排好序的子数组合并…...
面试手撕——快速排序
思路 partition方法将整个区间分为两部分,一部分比pivot小,一部分比pivot大, i表示,小于等于pivot的下标,j表示当前遍历到哪一个元素了,如果发现当前元素j小于等于pivot,i,在i1的位…...
大模型微调之LLaMA-Factory 系列教程大纲
LLaMA-Factory 系列教程大纲 一、基础入门篇:环境搭建与核心功能解析 环境部署与框架特性 硬件要求: 单机训练:推荐 24GB 显存 GPU(如 RTX 4090),支持 7B-32B 模型 LoRA 微调。分布式训练:2 块…...
26考研 | 王道 | 计算机网络 | 第一章 计算机网络的体系结构
26考研 | 王道 | 第一章 计算机网络的体系结构 文章目录 26考研 | 王道 | 第一章 计算机网络的体系结构1.1 计算机网络概述1.计算机网络的概念2.计算机网络的组成**从组成部分看****从工作方式看****从逻辑功能看** 3.计算机网络的功能4.电路交换、报文交换、分组交换1. 电路交…...
CentosLinux系统crontab发现执行删除命令失效解决方法
权限或安全策略限制 可能场景: ### 目录权限冲突: 你的目录权限为 drwxr-xr-x(属主 mssql),但 cron 任务以 root 执行。 风险点:若目录内文件属主为 mssql 且权限为 700&…...
UniApp页面路由详解
一、路由系统概述 1.1 路由机制原理 UniApp基于Vue.js实现了一套跨平台的路由管理系统,其核心原理是通过维护页面栈来管理应用内不同页面之间的跳转关系。在小程序端,UniApp的路由系统会映射到对应平台的原生导航机制;在H5端则基于HTML5 Hi…...
探索无人机模拟环境的多元景象及AI拓展
无人驾驶飞行器(UAVs)在各行各业的迅速普及,从农业和检测到空中操作和人机交互等令人兴奋的前沿领域,都引发了一个关键需求:强大而逼真的模拟环境。直接在物理硬件上测试尖端算法存在固有的风险——成本高昂的坠机、中…...
Java后端开发day39--方法引用
(以下内容全部来自上述课程) 1.1 含义 把已经有的方法拿过来用,当作函数式接口中抽象方法的方法体。 已经有的方法:可以是Java自己写的,也可以是第三方的。 示例语句: ::是方法引…...
C# 14 field keyword:属性简化新利器
引言 在 C# 的不断发展历程中,每一个新版本都带来了令人期待的新特性,而 C# 14 中的 field keyword 无疑是其中一颗璀璨的明星 。对于广大 C# 开发者来说,属性的使用频率极高,而 field keyword 的出现,为我们简化属性…...
破茧成蝶:一家传统制造企业的年轻化转型之路
2004 年,在长三角的轻工业重镇杭集,一家专注于植毛机器设备研发的小工厂悄然诞生。那时,它以 “齿轮与钢铁” 为语言,为全国近千家牙刷生产企业提供核心装备,用机械臂的精准律动,编织着传统制造业的经纬。然…...
【语法】C++的继承
目录 继承基本语法: protected访问限定符: 子类和父类之间的赋值兼容规则: 重定义(隐藏): 继承中的友元/继承中的静态成员: 子类中的默认成员函数 构造函数/拷贝构造函数: 赋值重载函数ÿ…...
如何知道Ubuntu的端口是否被占用,被那个进程占用?如何终止进程
要检查Ubuntu系统中某个端口,比如5034,是否被占用及终止对应进程,请按以下步骤操作: 1. 检查端口占用情况 方法一:使用 lsof 命令 sudo lsof -i :5034输出结果会显示占用该端口的进程名、PID等信息。 方法二&#x…...
verdi使用tcl脚本批量添加波形
打开verdi console功能 在verdi的tools 里使能工具中的console功能; 在console执行tcl脚本 set cell_list { ts_0_lockup_latchn_clkc45_intno45811_i u_rst_scan_n_tp/u_scan_crl_reg/u_cell u_scan_crl_reg/u_cell u_scan_crl_reg/u_cell } ## specify the waveform window…...
【行业特化篇3】制造业简历优化指南:技术参数与标准化流程的关键词植入艺术
写在最前 作为一个中古程序猿,我有很多自己想做的事情,比如埋头苦干手搓一个低代码数据库设计平台(目前只针对写java的朋友),比如很喜欢帮身边的朋友看看简历,讲讲面试技巧,毕竟工作这么多年,也做到过高管,有很多面人经历,意见还算有用,大家基本都能拿到想要的offe…...
oracle怎样通过固化较优执行计划来优化慢sql
一 问题描述 有次生产环境cpu使用率增高,ADDM报告提示某条sql比较耗费cpu: 提示: 在分析期间, 此 SQL 语句至少利用了 6 个不同的执行计划 #查看该sql都有哪些执行计划 SELECT * FROM table(DBMS_XPLAN.DISPLAY_AWR(sqlid值)); 我手动执…...
【无标题】好用的远程链接插件
现在在做后端开发有的时候需要链接到远程服务器,有很多插件看不到整体的目录结构 推荐 trae的 ssh Client 有很清晰的目录结构...
Plant Simulation MultiPortalCrane Store 小案例
一个天车从库区移动商品到指定地点的案例 库区商品:库区上随机位置摆放商品,在源上绑定方法(应该也可以直接在库区上生成,我这里是使用源可以改变生成多少个商品) // 源的self.OnExit var Store : object : 存储 var …...
MyBatis 使用 POJO 参数动态查询教程
项目结构概览(基于图片描述): mybatis02 ├─ src/main/java │ └─ cn.cjxy │ ├─ domain # 实体类(如 Emp.java) │ ├─ mapper # Mapper 接口(如 EmpMapper.java) │…...
【MCP Node.js SDK 全栈进阶指南】高级篇(5):MCP之微服务架构
引言 在软件架构中,微服务模式已成为构建可扩展系统的主流方案。 将MCP与微服务架构结合,能够为AI驱动的应用带来显著优势。 本文将探讨如何在微服务环境中集成和部署MCP服务,以及如何利用云原生技术实现高可用、高性能的MCP应用。 目录 MCP在微服务中的角色服务网格集成容…...
UBUS 通信接口的使用——添加一个object对象(ubus call)
1,引入 ubus提供了一种多进程通信的机制。存在一个守护进程ubusd,所以进程都注册到ubusd,ubusd进行消息的接收、分发管理。 ubus对多线程支持的不好,例如在多个线程中去请求同一个服务,就有可能出现不可预知的结果。 …...
强化学习贝尔曼方程推导
引言 强化学习中贝尔曼方程的重要性就不说了,本文利用高中生都能看懂的数学知识推导贝尔曼方程。 回报 折扣回报 G t G_t Gt的定义为: G t R t 1 γ R t 2 γ 2 R t 3 ⋯ ∑ k 0 ∞ γ k R t k 1 (1) G_t R_{t1} \gamma R_{t2} \gamm…...
【MCP Node.js SDK 全栈进阶指南】高级篇(2):MCP高性能服务优化
前言 随着MCP应用规模的扩大和用户量的增加,性能优化成为系统稳定运行的关键因素。高性能的MCP服务不仅能提供更好的用户体验,还能降低运营成本,提高系统的可扩展性。本文将深入探讨MCP TypeScript-SDK的性能优化策略,帮助开发者构建高效、稳定的MCP服务。 1. 性能瓶颈识…...
图片识别为提示词,背景信息提取 -从头设计数字生命第7课, demucs——仙盟创梦IDE
1. 图像内容理解与标注 用途:在大规模图像数据集的整理和标注工作中,通过特定提示词可引导图片识别系统更准确地提取图像中的背景信息,并进行标注。例如在医学图像库标注中,使用 “疾病相关背景特征” 作为提示词,系统…...
域对齐是什么
域对齐(Domain Alignment)是在机器学习和计算机视觉等领域中常用的技术 定义 域对齐旨在将不同域(Domain)的数据映射到一个共同的特征空间中,使得来自不同域的数据在该空间中具有相似的分布。这里的“域”可以指代不…...
opencv 直方图均衡化
直方图均衡化 1. 啥叫直方图2. 绘制直方图3. 直方图均衡化3.1 自适应直方图均衡化(cv2.equalizeHist())3.2 对比度受限的自适应直方图均衡化(cv2.createCLAHE()) 1. 啥叫直方图 直方图是对数据进行统计的一种方法,并且将统计值组织到一系列实…...
JDK 8 函数式接口全集
JDK 8 函数式接口全集 函数式接口如何定义关于注解 FunctionalInterface 函数式接口的分类与简单使用生产型接口 Supplier使用 消费型接口 Consumer使用 函数型接口(Function)实例(合并字符串) 断言型接口(Predicate)…...
网站防护无惧DDoS攻击:2025年实战指南
在数字化时代,DDoS攻击已成为企业生存的“生死线”。2024年全球日均攻击峰值突破5.4Tbps(Cloudflare数据),电商、金融行业更是重灾区。本文将结合最新技术趋势和实战案例,为你提供一套低成本、高可靠的防御方案。 一、…...
【AI论文】BitNet v2:针对1位LLM的原生4位激活和哈达玛变换
摘要:激活异常值阻碍了1位大型语言模型(LLM)的有效部署,这使得低比特宽度的量化变得复杂。 我们介绍了BitNet v2,这是一个新的框架,支持1位LLM的原生4位激活量化。 为了解决注意力和前馈网络激活中的异常值…...
windows 使用 FFmpeg 放大视频原声
问题:原视频声音太小,就算把视频音量调到最大,声音也听不太清 一、下载 下载地址:Download FFmpeg 根据需要选择合适版本下载解压,如浏览器下载速度慢,可使用迅雷下载 二、配置环境变量 1.把解压的文件放…...
RHCE第七章:SElinux
一、SElinux SELinux 是一套安全策略系统 1.作用: (1)SELinux 域限制:对服务程序的功能进行限制,以确保服务程序做不了出格的事 (2)SELinux 安全上下文:对文件资源的访问限制&am…...
一文简单记录打通K8s+Kibana流程如何启动(Windows下的Docker版本)
为ES和Kibana组建Docker网络 docker network create elastic下载8.18.0版本镜像Es并启动 docker run --name es-node01 --net elastic -p 9200:9200 -p 9300:9300 -t docker.elastic.co/elasticsearch/elasticsearch:8.18.0启动Kibana(简单一些直接咯和ES对应版本…...
【系统参数合法性校验】spring-boot-starter-validation
JSR303校验 统一校验的需求 前端请求后端接口传输参数,是在controller中校验还是在Service中校验? 答案是都需要校验,只是分工不同。 Contoller中校验请求参数的合法性,包括:必填项校验,数据格式校验&…...
蓝桥杯 10. 凯撒加密
凯撒加密 原题目链接 题目描述 给定一个单词,请使用凯撒密码将这个单词加密。 凯撒密码是一种替换加密的技术,单词中的所有字母都在字母表上向后偏移 3 位后被替换成密文。 即: a → db → e⋯w → zx → ay → bz → c 输入描述 输入…...
Discord多账号注册登录:如何同时管理多个账户?
Discord是许多人、特别是游戏玩家和社区管理者的重要沟通工具。随着用户需求的增长,越来越多的人开始在Discord上注册多个账号进行管理。例如,个人和工作账号的区分,多个游戏社区的参与,或者通过不同的身份进行更灵活的社交互动。…...
Harbor默认Redis与Notary组件弱口令漏洞分析与修复指南
一、 背景 某资源池控制面和运行面生产环境部署的harbor被漏扫出弱口令需要进行整改,主要涉及 default、server、signer用户存在弱口令。 二、 分析与处理 首先需求确认这三个用户是harbor那个组件使用,最好确认的是default这个用户,它是r…...
【Prometheus-Postgres Exporter安装配置指南,开机自启】
目录 内容概述 一、安装步骤1. 安装 PostgreSQL Exporter2. 创建 PostgreSQL 监控用户3. 配置 Systemd 服务4. 启动并验证服务5. 集成到 Prometheus 内容概述 本教程详细指导如何安装 PostgreSQL Exporter(版本 0.15.0),包括: 软…...
leetcode:3005. 最大频率元素计数(python3解法)
难度:简单 给你一个由 正整数 组成的数组 nums 。 返回数组 nums 中所有具有 最大 频率的元素的 总频率 。 元素的 频率 是指该元素在数组中出现的次数。 示例 1: 输入:nums [1,2,2,3,1,4] 输出:4 解释:元素 1 和 2 的…...
论文导读 - 基于特征融合的电子鼻多任务深度学习模型研究
基于特征融合的电子鼻多任务深度学习模型研究 原论文地址:https://www.sciencedirect.com/science/article/pii/S0925400524009365 引用此论文(GB/T 7714-2015): NI W, WANG T, WU Y, et al. Multi-task deep learning model f…...
VSCode突然连接不上服务器(已解决)
可恶,不知道昨天还好好的VSCode还可以连接到服务器,今天打开就连接不上了,搜了一圈很多都说是服务端的vscode-server这个文件里面保存的commitID与当前我们VSCode上的ID不一致导致连接失败(据说是因为VSCode自动更新导致的&#x…...
解决Ollama run qwen3:32b: Error: unable to load model问题
问题描述 在尝试使用Ollama部署Qwen3模型时,许多用户遇到了以下错误: ollama run qwen3:32b Error: unable to load model: /Users/xxxx/.ollama/models/blobs/sha256-3291abe70f16ee9682de7bfae08db5373ea9d6497e614aaad63340ad421d6312这个错误通常会…...
C++ 单例对象自动释放(保姆级讲解)
目录 单例对象自动释放(重点*) 方式一:利用另一个对象的生命周期管理资源 方式二:嵌套类 静态对象(重点) 方式三:atexit destroy 方式四:atexit pthread_once 单例对象自动释…...