Spark遇上YARN:Spring Hadoop的SparkYarnTasklet实战指南 📅 2026/8/24 10:15:03 Spark遇上YARNSpring Hadoop的SparkYarnTasklet实战指南【免费下载链接】spring-hadoopSpring for Apache Hadoop is a framework for application developers to take advantage of the features of both Hadoop and Spring.项目地址: https://gitcode.com/gh_mirrors/sp/spring-hadoopSpring HadoopSpring for Apache Hadoop是连接 Spring 与 Hadoop 生态的桥梁框架而它内置的SparkYarnTasklet让你在 Spring Batch 作业中一行配置就能把 Spark 作业提交到 YARN 集群运行无需额外搭建独立的 Spark 集群。本文用最小化示例带你快速上手这个强大的批处理组件 为什么让 Spark 跑在 YARN 上Spark 擅长内存级高速计算YARN 是 Hadoop 集群统一的资源调度器。把 Spark 作业交给 YARN 运行可以免运维不需要单独维护一套 Spark 集群复用现有 Hadoop 集群资源⚙️统一调度Spark 与 MapReduce、Hive 等作业共享资源池统一排队管理批处理友好借助 Spring Batch 的 Job/Step 模型把 Spark 作业编排进数据管道Spring Hadoop 从 2.3 版本起提供了SparkYarnTasklet正是为这种场景而生。认识 SparkYarnTasklet 模块Spark 集成位于spring-hadoop-spark模块核心就是SparkYarnTasklet这一个类核心实现SparkYarnTasklet.java官方文档章节springandhadoop-spark.adoc配套脚本任务组件ScriptTasklet.java它实现了 Spring Batch 的Tasklet接口内部直接调用 Spark 的 YARNClient见 execute 方法。执行时会把--jar、--class、--num-executors、--executor-memory等提交参数组装好交给 YARN 拉起 Driver 和 Executor。作业完成后它会通过StepExecutionListener自动把 Step 标记为COMPLETED或FAILED见 afterStep 方法无需你额外判断。SparkYarnTasklet 核心配置项清单属性说明必填默认值sparkAssemblyJarSpark Assembly jar 路径推荐放在 HDFS 共享位置✅—hadoopConfigurationSpring 注入的 HadoopConfiguration对象✅—appClassSpark 应用的主类名✅—appJar你自己打包的 Spark 应用 jar 路径✅—numExecutorsExecutor 数量❌1executorMemory单个 Executor 内存如1G❌1GdriverMemory/driverCoresDriver 的内存与核数❌—resourceFiles/resourceArchives附加资源文件/归档--files、--archives❌—arguments传给 Spark 应用的参数数组❌—这些默认值可以在源码的校验逻辑 afterPropertiesSet 中确认——缺失必填项时它会给出明确的报错提示方便快速排错。实战步骤两步把 Spark 作业提交到 YARN官方示例是一个「统计推文 Top 10 话题标签」的流水线示例 Spark 作业源码见 SparkHashtags.java整体分两步第 1 步准备数据用一个ScriptTaskletHdfsScriptRunner执行 JavaScript 脚本把本地输入文件拷贝到 HDFS并清理旧的输入/输出目录。这一步展示了 Spring Hadoop 的脚本化能力你可以把它换成任何数据预处理逻辑。第 2 步提交 Spark 作业配置SparkYarnTasklet官方文档中的配置片段如下摘自 springandhadoop-spark.adocBean SparkYarnTasklet sparkTopHashtagsTasklet() throws Exception { SparkYarnTasklet sparkTasklet new SparkYarnTasklet(); sparkTasklet.setSparkAssemblyJar(sparkAssembly); // HDFS 上的 assembly jar sparkTasklet.setHadoopConfiguration(hadoopConfiguration); sparkTasklet.setAppClass(Hashtags); // Spark 主类 sparkTasklet.setAppJar(jarFile.toURI().toString()); // 应用 jar sparkTasklet.setExecutorMemory(1G); sparkTasklet.setNumExecutors(1); sparkTasklet.setArguments(new String[]{ hadoopConfiguration.get(fs.defaultFS) inputDir / inputFileName, hadoopConfiguration.get(fs.defaultFS) outputDir}); return sparkTasklet; }然后把它挂成一个 Step与第 1 步串联成一个 Job通过JobLauncher启动即可。依赖准备参考 springandhadoop-spark.adoc引入spring-data-hadoop-batch、spring-data-hadoop-spark两个构件加上对应 Scala 版本的spark-yarn依赖再把 Spark 发行包里的 assembly jar 拷贝到 HDFS 共享位置。上手前必看3 个容易踩的坑assembly jar 必须可达sparkAssemblyJar可以是本地文件但更推荐hdfs://路径避免每个节点都读本地盘。应用 jar 需提前构建appJar指向你自己打包好的 Spark 应用别忘了先构建再运行。HDFS 目录提前规划输入/输出目录建议用脚本步骤自动清理防止重跑时报「目录已存在」。延伸阅读 完整 Spark 集成文档springandhadoop-spark.adoc SparkYarnTasklet 的改进历史暴露常用配置、支持 classpath 属性changelog.txt 想自己跑一遍可克隆仓库浏览示例git clone https://gitcode.com/gh_mirrors/sp/spring-hadoop小贴士spring-hadoop已停止维护最终版本 2.5.0但其SparkYarnTasklet的设计思路——「用 Tasklet 封装第三方引擎提交、用 Listener 映射退出状态」——在今天写自定义 Spring Batch 任务时依然非常值得借鉴。【免费下载链接】spring-hadoopSpring for Apache Hadoop is a framework for application developers to take advantage of the features of both Hadoop and Spring.项目地址: https://gitcode.com/gh_mirrors/sp/spring-hadoop创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考