当前位置: 首页 > news >正文

数据质检之springboot通过yarn调用spark作业实现数据质量检测

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.dtcms.com/a/356346.html

相关文章:

  • 第三章 Vue3 + Three.js 实战:用 OrbitControls 实现相机交互与 3D 立方体展示
  • Unity学习----【数据持久化】二进制存储(一)
  • ExcelJS实现导入转换HTML展示(附源码可直接使用)
  • Excel数组学习笔记
  • 在Excel和WPS表格中隔一行插入多个空白行
  • 网络编程 04:TCP连接,客户端与服务器的区别,实现 TCP 聊天及文件上传,Tomcat 的简单使用
  • 从零开始部署 Kubernetes Dashboard:可视化管理你的集群
  • [Linux]学习笔记系列 -- mm/shrinker.c 内核缓存收缩器(Kernel Cache Shrinker) 响应内存压力的回调机制
  • 创意程序之MP3分割工具
  • sqlachemy
  • AI操作系统语言模型设计 之1 基于意识的Face-Gate-Window的共轭路径的思维-认知-情感嵌套模型
  • 【C语言】深入理解指针(2)
  • 龙迅#LT7621GX适用于两路HDMI2.1/DP1.4A转HDMI2.1混切应用,分辨率高达8K60HZ!
  • 第二阶段WinForm-11:自定义控件
  • 嵌入式Linux驱动开发:i.MX6ULL中断处理
  • 深入解析Qt节点编辑器框架:交互逻辑与样式系统(二)
  • C++基础(⑤删除链表中的重复节点(链表 + 遍历))
  • 储能变流器之LLC
  • MySQL数据库精研之旅第十四期:索引的 “潜规则”(上)
  • Unity、Unreal Engine与Godot中纹理元数据管理的比较分析
  • 嵌入式Linux LED驱动开发
  • Ubuntu22.04系统安装Opencv,无法定位包libjasper-dev libdc1394-22-dev的解决办法
  • 【C++】C++入门——(上)
  • GTSAM中gtsam::LinearContainerFactor因子详解
  • 【C++八股文】计算机网络篇
  • 【YOLO学习笔记】数据增强mosaic、Mixup、透视放射变换
  • flutter-使用url_launcher打开链接/应用/短信/邮件和评分跳转等
  • leetcode 338 比特位计数
  • rockchip温控及cpu降频配置
  • 事务和锁(进阶)