数据质检之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-submit
与 SparkLauncher
spark-submit
: 是 Spark 官方提供的用于提交作业的 shell 脚本。最简单的方式是在 Spring Boot 中通过Runtime.getRuntime().exec()
来调用这个脚本。SparkLauncher
: 是 Spark 提供的 Java API,专门用于以编程方式将 Spark 应用程序启动到集群上。这是更优雅、更易于集成和管理的方式,推荐使用。
二、两种实现方式的技术细节
方式一:使用 ProcessBuilder
调用 spark-submit
脚本
这种方式本质上是将你在命令行手动执行的操作自动化。
步骤:
- 在部署了 Spark 和 Hadoop 客户端的机器上运行 Spring Boot 应用。
- 构建完整的
spark-submit