Spring Boot 应用中通过 YARN 来调用 Spark 作业的来执行数据质检。这是一个非常经典的数据质量检测、数据优化的常用架构,将Web服务/业务处理(Spring Boot)与大数据质检(Spark on YARN)解耦。

核心架构图

首先,通过一张图来理解整个流程的架构:

在这里插入图片描述

整个流程的核心在于,Spring Boot 应用并不直接执行 Spark 作业,而是作为一个提交客户端,将作业提交到 YARN 集群上,并由 YARN 来负责资源管理和任务调度。

一、核心原理与组件

1. Spark on YARN 的模式

Spark on YARN 有种模式,这两种模式决定了 ApplicationMaster (AM) 的角色:

  • yarn-cluster (推荐用于生产环境):
    • Driver 运行在 YARN 的 ApplicationMaster 中。这意味着 Driver 进程是在 YARN 集群的某个节点上启动的。
    • Spring Boot 应用在提交作业后,可以与作业断开连接,作业会继续在 YARN 上运行直至结束。
    • 适合长时间运行的作业。
  • yarn-client (通常用于交互式/调试):
    • Driver 运行在提交作业的客户端机器上(即运行 Spring Boot 应用的那台机器)。
    • Spring Boot 应用必须保持运行,否则 Driver 退出会导致作业失败。
    • 作业的输出(如 stdout)会直接打印到客户端的控制台,方便调试。

技术细节:在 Spring Boot 中调用,我们通常使用 yarn-cluster 模式,这样我们的应用服务就不会被大量的 Spark 计算任务所拖累,实现了服务与计算的分离。

2. 关键组件:spark-submitSparkLauncher
  • spark-submit: 是 Spark 官方提供的用于提交作业的 shell 脚本。最简单的方式是在 Spring Boot 中通过 Runtime.getRuntime().exec() 来调用这个脚本。
  • SparkLauncher: 是 Spark 提供的 Java API,专门用于以编程方式将 Spark 应用程序启动到集群上。这是更优雅、更易于集成和管理的方式,推荐使用。

二、两种实现方式的技术细节

方式一:使用 ProcessBuilder 调用 spark-submit 脚本

这种方式本质上是将你在命令行手动执行的操作自动化。

步骤:

  1. 在部署了 Spark 和 Hadoop 客户端的机器上运行 Spring Boot 应用。
  2. 构建完整的 spark-submit

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

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

相关文章

SQL优化_以MySQL为例

MySQL SQL 优化详细教程与案例 1. 理解SQL执行过程 在优化之前,需要了解MySQL如何处理SQL查询: 客户端发送SQL语句到服务器服务器检查查询缓存(MySQL 8.0已移除查询缓存)解析器解析SQL,生成解析树预处理器验证权限和表…

探索数据结构中的 “树”:揭开层次关系的奥秘

在计算机科学的广袤森林中,有一种数据结构如同参天大树般支撑着无数应用的根基 —— 它就是 “树”(Tree)。它不仅仅是一个抽象概念,更是我们理解和组织信息、模拟现实世界层级关系的强大工具。1. 什么是 “树”?从家族…

技术框架之RPC

一、序言:为什么我们需要RPC?在单体应用时代,函数调用是进程内的简单操作。但随着业务规模扩大,系统被拆分为多个独立服务(如订单服务、支付服务),服务间通信成为刚需。早期开发者常使用HTTPJSO…

【光照】Unity中的[光照模型]概念辨析

【从UnityURP开始探索游戏渲染】专栏-直达 基础光照模型‌ ‌标准光照模型(Standard Lighting Model)‌ ‌定义‌:传统光照计算的框架,通常包含漫反射、镜面反射和环境光三部分。‌特点‌:非物理经验模型&#xff0c…

MCU上跑AI—实时目标检测算法探索

MCU上跑实时目标检测算法 前几年一直忙着别的事情没有在技术分享上下功夫, 这段时间稳定下来就想和几个志同道合的朋友做点有意义的事情, 于是乎就使用MCU做了个与AI有识别相关的 “小玩意儿”. 本人负责嵌入式端相关的编码, AI相关的工作由好友 AgeWang 负责. 这儿把一些成果给…

SpringBoot 整合 RabbitMQ 的完美实践

引言: 本文总字数:约 9200 字 预计阅读时间:38 分钟 为什么 RabbitMQ 是消息中间件的优选? 在分布式系统架构中,消息中间件扮演着 "交通枢纽" 的角色,负责协调各个服务之间的通信。目前主流的消息中间件有 RabbitMQ、Kafka 和 RocketMQ,它们各具特色: Kafka…

nestjs 发起请求 axios

1、下载npm i --save nestjs/axios axios2、全局配置import { HttpModule } from nestjs/axios;Global() Module({imports: [HttpModule.registerAsync({inject: [ConfigService],useFactory: async (configService: ConfigService) > {return {timeout: configService.get(…

将 Logits 得分转换为概率,如何计算

场景:动物识别,输入一张28*28的图像,模型输出属于 猫、狗、鸟 哪个类型。需求:假设模型 ​​Logits(模型在每个类别的置信度得分) 输出为​​:[猫: 3.2, 狗: 1.5, 鸟: -0.8]。计算 ​​Softmax …

【Qt】bug排查笔记——QMetaObject::invokeMethod: No such method

问题如题目所示:QMetaObject::invokeMethod: No such method xxxx,在网上好一顿查,又将查到的资料喂给了 Ai,才最终将问题解决,特此记录下。 一、问题背景 在做公司项目时,使用了插件的方式开发。主程序加载…

Spring Boot手写10万敏感词检查程序

使用Spring Boot手写10万敏感词检查程序 本文将介绍如何使用Spring Boot构建一个高效的敏感词检查系统,能够处理多达10万个敏感词的检测需求。我们将使用DFA(Deterministic Finite Automaton)算法来实现高效匹配,并提供RESTful API接口。 实现步骤 1. 创建Spring Boot项…

零构建的快感!dagger.js 与 React Hooks 实现对比,谁更优雅?

“Add Tags” 技术方案并行对比:React Hooks vs dagger.js(含核心 JS 代码) 源码: React Hooks:https://codepen.io/prvnbist/pen/jJzROe?editors1010dagger.js:https://codepen.io/dagger8224/pen/ZErjzw…

矩池云中LLaMA- Factory多机多卡训练

LLaMA Factory 是一款开源低代码大模型微调框架,集成了业界最广泛使用的微调技术,支持通过 Web UI 界面零代码微调大模型,目前已经成为开源社区内最受欢迎的微调框架之一。但是在矩池云上如何使用LLaMA-Factory多机多卡训练模型呢&#xff1f…

Nginx的反向代理与正向代理及其location的配置说明

一、Nginx中location匹配优先级Nginx中location匹配优先级location支持各种匹配规则,在多个匹配规则下,Nginx对location的处理是有优先级的,优先级高的规则会优先进行处理;而优先级低的规则可能会最后处理或者不进行处理。注意&am…

神经网络正则化三重奏:Weight Decay, Dropout, 和LayerNorm

正则化是机器学习中防止模型过拟合、提升泛化能力的核心技术。Weight Decay、Dropout和LayerNorm是三种最常用的方法,但它们的工作原理和首要目标截然不同。下面的流程图揭示了它们的核心区别与联系: #mermaid-svg-vymek6mFvvfxcWiM {font-family:"…

两台电脑通过网线直连共享数据,设置正确,却互相ping不通的解决方法

因为某些原因,需要两台电脑互传资源,但是某台电脑可能无法连接外网。如果手头有根网线,很容易想到通过一根网线连接两台电脑互传数据。 这里先说一下基本的设置: 两台电脑最好都关闭防火墙;两台电脑都打开专用网络和公…

面试新纪元:无声胜有声,让AI成为你颈上的智慧伙伴

面试,无论是对于面试官还是求职者,都像一场无声的战争。 一方要精准识人,一方要完美自荐;一方怕问不到点子上,一方怕答不到心坎里。 紧张、遗忘、表达失误、准备不足……这些问题几乎每个人都经历过。 有没有一种方…

qt-C++笔记之QtDesigner-Creator按钮图标与样式

qt-C笔记之QtDesigner-Creator按钮图标与样式 整理:如何用 .qrc 管理资源、在 Designer/Creator 中为 QPushButton 设置图标(资源或系统主题),以及用样式表调整文字样式。涵盖 C/Qt 与 PySide/PyQt;Linux 桌面优先&am…

maven 常用指令

Maven 是 Java 项目构建和依赖管理的得力助手。这里为你总结了一些常用指令,希望能帮你提升开发效率。下面这个表格汇总了 Maven 最核心和常用的一些命令:命令主要功能典型使用场景mvn clean清理项目,删除 target 目录及其所有编译输出文件。…

# pdf.js完全指南:构建现代Web PDF查看与解析解决方案

在当今Web开发中,实现高质量的PDF查看功能一直是前端开发者面临的挑战之一。作为最受欢迎的JavaScript PDF库,pdf.js已经成为解决这一问题的行业标准。由Mozilla开发并维护的pdf.js项目,通过纯JavaScript实现PDF解析与渲染,彻底改…

高效对象属性复制工具

日常编程中,经常会碰到对象属性复制的场景,比如 VO、DTO、PO、VO 等之间的转换,关于什么是VO、DTO、PO、VO 等可以看上篇文章,VO、DTO、PO、VO 等对象具体有哪些方式可以使用呢? set/get 方式 性能最好的方式&#x…