spark的Standalone模式介绍

Apache Spark 的 Standalone 模式是其自带的集群管理模式,无需依赖外部资源管理器(如 YARN 或 Mesos),可快速部署和运行 Spark 集群。以下是对 Standalone 模式的详细介绍:

1. 核心组件

Master 节点
  • 集群的主控制器,负责资源分配和任务调度。
  • 管理 Worker 节点的注册和状态监控。
  • 接收客户端提交的应用程序,并为其分配资源。
Worker 节点
  • 工作节点,负责执行具体的计算任务。
  • 向 Master 注册并汇报可用资源(内存、CPU)。
  • 为应用程序启动 Executor 进程。
Executor
  • 每个应用程序专属的进程,负责执行具体的任务(Task)。
  • 持有应用程序的内存数据(如 RDD 缓存)。
Driver
  • 运行用户编写的 Spark 应用程序的主程序。
  • 负责将应用程序转换为 DAG(有向无环图),并提交给 Master 进行调度。

2. 工作流程

  1. 集群启动
    启动 Master 节点和多个 Worker 节点,Worker 自动向 Master 注册。

  2. 应用提交
    用户通过spark-submit命令提交应用,Driver 程序在客户端或集群中启动。

  3. 资源分配
    Driver 向 Master 请求资源(CPU 和内存),Master 通知 Worker 节点启动 Executor。

  4. 任务执行
    Driver 将任务分发给 Executor 执行,Executor 将结果返回给 Driver。

  5. 资源释放
    应用程序完成后,Executor 和资源被释放。

3. 部署模式

Client 模式
  • Driver 在客户端运行:适用于交互式作业(如 Spark Shell)。
  • 优点:便于调试,直接在本地看到输出。
  • 缺点:客户端与集群需保持网络连接,否则作业会中断。
Cluster 模式
  • Driver 在集群中的某个 Worker 节点运行:适用于生产环境。
  • 优点:作业提交后可断开客户端连接,提高可靠性。
  • 缺点:调试不便,日志需通过 Web UI 查看。

4. 快速部署

步骤 1:下载并解压 Spark
wget https://downloads.apache.org/spark/spark-3.3.2/spark-3.3.2-bin-hadoop3.tgz
tar -zxvf spark-3.3.2-bin-hadoop3.tgz
cd spark-3.3.2-bin-hadoop3
步骤 2:配置环境变量

编辑conf/spark-env.sh(如果不存在,复制模板cp conf/spark-env.sh.template conf/spark-env.sh):

export JAVA_HOME=/path/to/java
export SPARK_MASTER_HOST=master-node-ip
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_MEMORY=2g  # 每个Worker可用内存
export SPARK_WORKER_CORES=2    # 每个Worker可用CPU核心数
步骤 3:配置 Worker 节点

编辑conf/slaves(如果不存在,复制模板cp conf/slaves.template conf/slaves),添加 Worker 节点 IP:

worker1-ip
worker2-ip
...
步骤 4:启动集群
# 在Master节点上执行
sbin/start-all.sh# 等价于分别启动Master和Worker
sbin/start-master.sh
sbin/start-slaves.sh
步骤 5:查看 Web UI

访问http://master-node-ip:8080查看集群状态。

5. 提交应用程序

Client 模式示例
./bin/spark-submit \--class org.apache.spark.examples.SparkPi \--master spark://master-node-ip:7077 \--executor-memory 1g \--total-executor-cores 2 \examples/jars/spark-examples_2.12-3.3.2.jar \100

7. 优缺点

优点
  • 轻量级:无需额外依赖,部署简单。
  • 快速启动:相比 YARN,资源分配更直接。
  • 内置支持:Spark 原生支持,无需额外配置。
缺点
  • 功能有限:相比 YARN,缺乏多租户支持和细粒度资源隔离。
  • 调度简单:仅支持 FIFO 和公平调度,不支持更复杂的资源模型。
  • 生产环境建议:大型集群建议使用 YARN 或 Kubernetes。

总结

Standalone 模式适合快速搭建测试环境或小规模生产集群,提供了 Spark 最基本的集群管理能力。核心是理解 Master、Worker、Executor 和 Driver 的角色分工,以及 Client/Cluster 两种部署模式的区别。对于大规模生产环境,建议考虑更成熟的资源管理器(如 YARN)。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv7训练时4个类别只出2个类别

正常是4个类别: 但是YOLOv7训练完后预测总是只有两个类别: 而且都是LFM和SFM 我一开始检查了下特征图大小,如果输入是640*640的话,三个尺度特征图是80*80,40*40,20*20;如果输入是416*416的话,三个尺度特征…

【Unity】用事件广播的方式实现游戏暂停,简单且实用!

1.前言 在做Unity项目的时候,要考虑到“游戏暂停”的功能,最直接的办法是修改游戏的Time.TimeScale 0f。但是这种方式的影响也比较大,因为它会导致游戏中很多程序无法正常运行。 于是我就有了一个想法,在游戏中想要暂停的对象&…

Suna: 开源多面手 AI 代理

GitHub:GitHub - kortix-ai/suna: Suna - Open Source Generalist AI Agent 更多AI开源软件:发现分享好用的AI工具、AI开源软件、AI模型、AI变现 - 小众AI Suna 是一个完全开源的 AI 助手,可帮助您轻松完成实际任务。通过自然对话&#xff0c…

直接从图片生成 html

1. 起因, 目的: 无意间碰到一个网站: https://wise.com/zh-cn/currency-converter/brl-to-cny-rate其实我就是想搜一下巴西的货币单位是什么。这个网站的设计很漂亮, 尤其是颜色搭配很不错,讨人喜欢。所以我想让 AI 帮我生成类似的效果。本文…

验证码与登录过程逻辑学习总结

目录 前言 一、验证码与登录 二、使用步骤 1.先apipost测试一波 2.先搞验证码 3.跨域问题 4.后端走起 总结 前言 近期要做一个比较完整的demo,需要自己做一个前端登录页面,不过api接口都是现成的,一开始以为过程会很easy,…

轨道炮--范围得遍历,map巧统计

1.思路很难想,但代码一看一下就明白了,就是模拟时间,map存起来遍历也不受10*6影响 2.每次先统计点对应的直线,再动这个点,map一遍历实时更新ma统计max,AC!!!! https://www.luogu.com.cn/problem/P8695 #i…

Vue 3.5 新特性深度解析:全面升级的开发体验

Vue 3.5 新特性深度解析:全面升级的开发体验 前言 随着Vue 3.5的正式发布,这个渐进式JavaScript框架再次带来了令人兴奋的改进。本文将深入剖析Vue 3.5的核心更新,帮助开发者快速掌握新特性并应用于实际项目。 ✨ 核心新特性 1. 增强的响应…

质量管理工程师面试总结

今天闲着无聊参加了学校招聘会的一家双选会企业,以下是面试的过程。 此次面试采用的是一对多的形式。(此次三个求职者,一个面试官) 面试官:开始你们每个人先做个自我介绍吧。 哈哈哈哈哈哈哈哈,其实我们…

c++ std库中的文件操作学习笔记

1. 概述 C标准库提供了 头文件中的几个类来进行文件操作,这些类封装了底层的文件操作,提供了面向对象和类型安全的接口,使得文件读写更加便捷和高效。主要的文件流类包括: std::ifstream:用于从文件中读取数据。 st…

【网络安全】SQL注入

如果文章不足还请各位师傅批评指正! 想象一下,你经营着一家咖啡店,顾客可以通过店内的点单系统下单。这个系统会根据顾客的输入,向后厨发送指令,比如“为顾客A准备一杯拿铁”。 然而,如果有个不怀好意的顾客…

解决Mawell1.29.2启动SQLException: You have an error in your SQL syntax问题

问题背景 此前在openEuler24.03 LTS环境下的Hive使用了MySQL8.4.2,在此环境下再安装并启动Maxwell1.29.2时出现如下问题 [ERROR] Maxwell: SQLException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version f…

Oracle APEX IR报表列宽调整

目录 1. 问题:如何调整Oracle APEX IR报表列宽 2. 解决办法 1. 问题:如何调整Oracle APEX IR报表列宽 1-1. 防止因标题长而数据短,导致标题行的文字都立起来了,不好看。 1-2. 防止因数据太长而且中间还没有空格,把列…

pytorch 14.3 Batch Normalization综合调参实践

文章目录 一、Batch Normalization与Batch_size综合调参二、复杂模型上的Batch_normalization表现1、BN对复杂模型(sigmoid)的影响2、模型复杂度对模型效果的影响3、BN对复杂模型(tanh)的影响 三、包含BN层的神经网络的学习率优化…

Model.eval() 与 torch.no_grad() PyTorch 中的区别与应用

Model.eval() 与 torch.no_grad(): PyTorch 中的区别与应用 在 PyTorch 深度学习框架中,model.eval() 和 torch.no_grad() 是两个在模型推理(inference)阶段经常用到的函数,它们各自有着独特的功能和应用场景。本文将详细解析这两…

Swagger go中文版本手册

Swaggo(github.com/swaggo/swag)的注解语法是基于 OpenAPI 2.0 (以前称为 Swagger 2.0) 规范的,并添加了一些自己的约定。 主要官方文档: swaggo/swag GitHub 仓库: 这是最权威的来源。 链接: https://github.com/swaggo/swag重点关注: README.md: 包含了基本的安装、使用…

物联网设备远程管理:基于代理IP的安全固件更新通道方案

在物联网设备远程管理中,固件更新的安全性直接关系到设备功能稳定性和系统抗攻击能力。结合代理IP技术与安全协议设计,可构建安全、高效的固件更新通道。 一、代理IP在固件更新中的核心作用 网络层隐匿与路由优化 隐藏更新源服务器:通过代理I…

【C++重载操作符与转换】句柄类与继承

目录 一、句柄类的基本概念 1.1 什么是句柄类 1.2 句柄类的设计动机 1.3 句柄类的基本结构 二、句柄类的实现方式 2.1 基于指针的句柄类 2.2 值语义的句柄类 2.3 引用计数的句柄类 三、句柄类与继承的结合应用 3.1 实现多态容器 3.2 实现插件系统 3.3 实现状态模式…

谷歌曾经的开放重定向漏洞(如今已经修复) -- noogle DefCamp 2024

题目描述: 上周,我决定创建自己的搜索引擎。这有点难,所以我背上了另一个。我也在8000端口上尝试了一些东西。 未发现题目任何交互,但是存在一个加密js const _0x43a57f _0x22f9; (function(_0x3d7d57, _0x426e05) {const _0x16c3fa _0x22f9, _0x3187…

【C#】ToArray的使用

在 C# 中&#xff0c;ToArray 方法通常用于将实现了 IEnumerable<T> 接口的集合&#xff08;如 List<T>&#xff09;转换为数组。这个方法是 LINQ 提供的一个扩展方法&#xff0c;位于 System.Linq 命名空间中。因此&#xff0c;在使用 ToArray 方法之前&#xff0…

资产管理平台—chemex

1、简介 Chemex CMDB&#xff08;Configuration Management Database&#xff09;是一个基于现代微服务架构的资产管理与自动化平台&#xff0c;专为 IT 基础设施与业务资产管理而设计。其核心目标是解决大规模系统运维中资产信息混乱、配置分散、数据不一致等问题&#xff0c…