spring boot 内部执行 spark submit

2023-11-04

最近项目要用到大数据,边学边搞项目。一个坑接着一个坑地踩,好在头铁,总能柳暗花明。

spark-submit 提交任务到 yarn 集群执行官方资料写的很清楚。如果是用脚本方式执行看看说明分分钟搞定的。可偏偏好死不死,设计的方案是在 spring boot 项目中执行 spark-submit。其实就是找 java 代码执行 spark-submit 的 api,但就这个东东,虐我好几天。

有两种方式:

  1. 使用 SparkLauncher 提交,该方法需要提前设定 SPARK_HOME,我感觉他是直接将任务交到了spark,而没有通过 yarn。个人理解的,可能不正确,I am new to spark。这个博客里面的 demo 是 work 的。

  2. 将任务提交到 yarn。我们项目定的就是这种方案。不停地找,不停地试,不停地被虐… 好在头铁。

国内大多数伙伴写的代码都源自这篇博客。里面的代码在 spark 1.6 上是 work 的,现在都 spark2.x 甚至 3.x 了,api 已经变了。所以会出现下面的报错:

INFO Client: Retrying connect to server: 0.0.0.0/0.0.0.0:8032. Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS) 15/08/05 14:06:12 INFO Client: Retrying connect to server: 0.0.0.0/0.0.0.0:8032. Already tried 1 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)

很明显,yarn 的配置有问题,java 代码在执行 spark-submit 时候找不到 yarn。所以一直在尝试连接,连不上,再尝试,还连不上…,那我先休息一会,再接着尝试。打印的日志大概就说的是这个意思。

解决的方向很简单:把 yarn 的信息配上不就行吗?

关键是怎么配呀,api 是什么呀,找个 demo 看看呀…emo…emo…

最终在一个不起眼的地方找到了答案。

在这里插入图片描述

他也遇到了同样的问题,当他把 core-site.xmlyarn-site.xml 文件放在 src/main/resources 目录下后,就解决了上面那个一直连不上 yarn 的问题。

也是抱着试一试心情,没想过 6 年前的 没有人投票的 答案能 work。集群的 spark 版本是 2.4.8,为什么要用这么老的,因为甲方的 spark 就是这个版本。

回过头来再看看这个位置,其实是将两个 xml 文件放在 classpath 路径下。

附上提交代码:


    private void pi() {
        log.info("----- start pi -----");

        final String javaHome = System.getenv("JAVA_HOME");
        final String hadoopConfDir = System.getenv("HADOOP_CONF_DIR");

        log.info("javaHome: " + javaHome);
        log.info("hadoopConfDir: " + hadoopConfDir);
        log.info("mode: " + executeMode);
        log.info("appResource: " + sparkJar);
        log.info("mainClass: " + mainClass);

        final String[] args = new String[]{
                "--jar",
                sparkJar,
                "--class",
                mainClass,
                "--arg",
                "10"
        };
        System.setProperty("SPARK_YARN_MODE", "true");
        SparkConf sparkConf = new SparkConf();
        sparkConf.setMaster("yarn");
        sparkConf.setAppName("spark-yarn");
        sparkConf.set("spark.submit.deployMode", "cluster"); // worked
        ClientArguments clientArguments = new ClientArguments(args);                 // spark-2.0.0
        Client client = new Client(clientArguments, sparkConf);
        client.run();

        log.info("----- finish pi -----");
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

spring boot 内部执行 spark submit 的相关文章

  • 我可以在 Java 枚举上使用构建器模式吗

    我正在重写一些代码 并且我已经决定了重新创建类的方法 因为有固定数量的工作表 我将它们创建为枚举 这是基于构建器模式与伸缩构造器的可读性的决定 我的代码获取一些 xls 文件 添加标题 并从其他 xls 文件中读取一些 也许还有一些子表 然
  • 我需要在 Java 9 中使用哪个模块才能使用 JPA?

    我正在使用一个需要 JPA 的项目测试 Java 9 javax persistence 类 当我添加module info java并声明我的模块 下的所有类javax persistece包变得不可用 我搜索了很多 但找不到在 Java
  • Java 7u51/7u55 带星号的清单变量

    我正在部署一个小程序 其中包含清单中的下一个变量 Manifest Version 2 0 Ant Version Apache Ant 1 8 2 Trusted Library true Permissions all permissi
  • Mediaplayer 播放几次后停止播放

    我有一个按钮 按下它会播放一个随机声音剪辑 然后播放另一个声音剪辑 然后通过一个媒体播放器播放另一个声音剪辑 但是多次按下该按钮 15 20 次 后 所有音频都会停止 我在播放最后一个音频剪辑后释放媒体播放器 所以我不认为这是原因 有什么指
  • 如何访问EmbeddedSolrServer实例的管理界面?

    在我的网络应用程序中 我正在运行org apache solr client solrj embedded EmbeddedSolrServer出于调试目的 我想访问管理界面 这就是我实例化服务器的方式 new EmbeddedSolrSe
  • Java:等于和==

    让我们看看我们有 2 个对用户定义类实例的引用 即 Java 中的 a 和 b 会不会有一种情况 a b 但 a equals b 返回 false 当然 实施 equals 完全取决于班级 所以我可以写 class Foo public
  • 在 Spring Webflux 中执行阻塞 JDBC 调用

    我使用 Spring Webflux 和 Spring data jpa 使用 PostgreSql 作为后端数据库 我不想在进行数据库调用时阻塞主线程 例如find and save 为了实现同样的目标 我有一个主调度程序Controll
  • 我从 String placeName = placeText.getText().toString(); 收到空指针异常

    您好 想从编辑文本中获取地名并在地图上标记 这是我的代码 其中出现空指针异常 请帮助我应该做什么以及哪里出错了 因为我从对话框中的编辑文本字段获取地名 View layout View inflate this R layout alert
  • 在 Java 中生成 LaTeX 输出 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有用于从 Java 生成 LaTeX 输出的 Java 库 渲染乳胶 JLatex数学 https
  • 如何在 PuTTY 中保存并运行 Java 文件?

    我是 AWS 亚马逊网络服务 的新手 所以这可能是一个基本问题 我在 AWS 上创建了一个 EC2 实例 我有一台 Windows 计算机 因此我使用 PUTTY 来连接 Linux 实例 连接到我的 EC2 实例后 我使用以下命令编写 J
  • 无法删除临时文件夹(有时)

    当我启动应用程序时 我创建一个临时文件夹 public static File createTempDir String name throws IOException File tempDir File createTempFile na
  • Netty Nio java 中的通信

    我想在 Netty nio 中创建一个具有两个客户端和一个服务器的通信系统 更具体地说 首先 我希望当两个客户端与服务器连接时从服务器发送消息 然后能够在两个客户端之间交换数据 我正在使用本示例提供的代码 https github com
  • 为什么 CompletableFuture 的 thenAccept() 不在主线程上运行

    我在 CompletableFuture 的 SupplyAsync 中处理长时间运行的操作 并将结果放入 thenAccept 中 有时 thenAccept 在主线程上执行 但有时它在工作线程上运行 但我只想在主线程上运行 thenAc
  • java - 简单计算在多线程中比在单线程中花费更长的时间

    我试图了解如何利用多线程 我写了一个简单的程序来增加i 比方说 使用两种方式 400 000 次 单线程方式 0 到 400 000 和多线程方式 在我的例子中 4 次 0 到 100 000 线程数等于Runtime getRuntime
  • “mvn”不被识别为内部或外部命令、可操作程序或批处理文件

    可能是之前问过问题 但我发现了非常奇怪的错误 当我跑步时mvn versionbin 中的命令给出了版本和其他信息 但是 当我跑到垃圾箱外面时 它会出现异常 下面提到的结果 C Program Files apache maven 3 0
  • 在edittext android中插入imageview

    我想将 imageview 放在 edittext 中 可能吗 我检查了 evernote 应用程序 它能够将照片放在编辑文本部分 我想让我的应用程序完全相同 我如何才能将从图库中选择的图像视图放入编辑文本中 我首先尝试将 imagevie
  • com.fasterxml.jackson.databind.JsonMappingException:无法反序列化 org.springframework.data.domain.Sort 的实例 START_ARRAY 令牌

    我的 objectMapper 正在获取类型的值Page
  • Selenium Webdriver - 单击多个下拉菜单时出现陈旧元素异常,而 HTML DOM 不会更改

    我尝试自动化一个场景 其中条件是我必须从下拉列表中选择一个选项 然后它旁边有另一个下拉列表 我必须单击下一个下拉列表中的一个选项才能启用按钮 我尝试使用代码 但它仅单击第一个选项 并显示错误为过时的元素引用 元素未附加到页面文档 请帮忙 如
  • ImageIO.read(...) - 非常慢,有更好的方法吗?

    我正在加载大量将在我的应用程序中使用的图标 我计划在服务器启动时从 jar 中加载所有这些 然而 由于数百张图像加起来刚刚超过 9MB 执行此任务仍然需要 30 秒多的时间 我现在正在一个单独的线程中执行此操作 但这让我想知道我是否在代码中
  • RetentionPolicy CLASS 与 RUNTIME

    两者之间有什么实际区别RetentionPolicy CLASS and RetentionPolicy RUNTIME 看起来两者都被记录到字节码中 并且无论如何都可以在运行时访问 无论如何 两者都可以在运行时访问 那不是那个javado

随机推荐

  • Java 中的Object串行化(Serializable)

    假如你想保存一个对象 object 则这个对象所属类必须实现Serializable接口 当串行化一个对象时 Java会保存对象的完整的 对象图 即对该对象引用的其他对象 也进行串行化 当然 那些 其他对象 也要实现Serializable
  • web前端开发—Flex布局

    目录 Flex布局 1 思考 2 Flex布局 弹性布局 3 作用 4 设置方式 5 组成部分 6 主轴对齐方式 7 侧轴对齐方式 8 伸缩比 9 主轴方向 10 弹性盒子换行 Flex布局 目标 能够使用Flex布局模型灵活 快速的开发网
  • 初探webAssembly

    1 WebAssembly是什么 一种运行在现代网络浏览器中的新型代码 并且提供新的性能特性和效果 W3C WebAssembly Community Group开发的一项网络标准 对于浏览器而言 WebAssembly 提供了一条途径 让
  • Spring-boot中过滤器与拦截器

    1 过滤器 其实过滤器 Filter 跟Servlet很相似 都是java的一个组件 即请求发送到servlet之前 可以将其拦截和处理请求 也可以在serlvet结束工作之后 在响应发回之前处理响应 做一些事情 因此 可以理解为过滤器fi
  • powerdesigner 连接mysql提示“connection test failed”

    win10电脑 64位环境 powerdesigner 连接mysql提示 connection test failed 该如何解决 1 把64位的jdk换成32位的jdk 原的64的位不用卸载 2 PowerDesigner Tools
  • 蓝牙之六-A2dp代码调用流程

    上图描述的是蓝牙协议栈 通过该图 查看A2dp的代码在协议栈的调用流程 其分层架构如下 1 蓝牙的系统服务service通过JNI与bluedroid协议栈进行通信 协议栈分为两层 Bluetooth Embedded System BTE
  • .NET页面之间传值的几种方式总结

    1 QueryString 当页面上的form以get方式向页面发送请求数据时 web server将请求数据放入一名为QEURY STRING的环境变量中 QeueryString方法从这个变量中取出相应的值 先建立两个WebForm 分
  • FFmpeg通过摄像头实现对视频流进行解码并显示测试代码(新接口)

    在https blog csdn net fengbingchun article details 93975325 中给出了通过旧接口即FFmpeg中已废弃的接口实现通过摄像头获取视频流然后解码并显示的测试代码 这里通过使用FFmpeg中
  • 基于ROS的无人车模型预测控制(MPC)C++实现

    基于ROS的无人车模型预测控制 MPC C 实现 最近在做毕业设计的控制器部分 网上关于cpp实现模型预测控制的资料很少 基本都是Matlab Simulink实现 顺手写一下学习过程 1 建模方法 模型预测控制的基本原理本文不作赘述 可以
  • CGSS2015数据及对应问卷

    根据公开数据辛苦整理 形成CGSS2015数据及对应问卷 中国综合社会调查 Chinese General Social Survey CGSS 始于2003年 是我国最早的全国性 综合性 连续性学术调查项目 CGSS系统 全面地收集社会
  • Nginx+keepalived 双机热备(主从模式)

    负载均衡技术对于一个网站尤其是大型网站的web服务器集群来说是至关重要的 做好负载均衡架构 可以实现故障转移和高可用环境 避免单点故障 保证网站健康持续运行 关于负载均衡介绍 可以参考 linux负载均衡总结性说明 四层负载 七层负载 由于
  • CentOS7.9安装elasticsearch的Head插件

    目录 1 下载安装包 2 安装依赖环境 2 1 安装node 2 2 安装grunt 3 安装head插件 1 下载安装包 CentOS7 9安装elasticsearch 8 3 1 kibana 8 3 1是以下文档安装的 CentOS
  • 【supplemental】On_Distillation_of_CVPR_2023_supplemental

    supplemental On Distillation of CVPR 2023 supplemental 一 前言 A Results overview B Pixel space distillation B 1 Teacher mo
  • 文件快速拷贝工具FastCopy

    文件快速拷贝工具FastCopy 大家在使用电脑的时候经常用到复制 粘贴 删除等命令 对于小文件来讲操作瞬间完成 可对于大文件可能少则数分钟甚至数小时 比如将Offices2003安装程序从硬盘往U盘上拷贝 则经历了一个半小时 时间是多么的
  • Python爬虫:英雄联盟近期战绩查询

    c语言选手早已听说Python的方便和其各大爬虫模块的实用性 于是暑假无所事事的我决定在没有系统学习Python语法的情况下 一边写一个和自己兴趣有关的爬虫 一边学习一下Python方便的语法 体验Python的方便之处 一 用到的语法 1
  • QT 信号槽 lambda

    QCheckBox checkBox connect checkBox QCheckBox clicked this emit this gt slot check btn connect checkBox static cast
  • 通过AT指令访问SIM卡

    不借助读写卡工具 直接通过AT指令访问SIM卡 一 命令类型 1 AT CRSM 对于SIM卡 参考3GPP 51 011 对于USIM卡 参考ETSI TS 102 221 2 AT CSIM 参考3GPP TS 27 007 二 常用命
  • Mybatis学习笔记1:CRUD与配置解析

    文章目录 1 简介 1 1 什么是Mybatis 1 2 持久化 1 3 持久层 1 4 为什么需要Mybatis 2 第一个Mybatis程序 2 1 搭建环境 2 2 创建一个模块 2 3 编写代码 2 4 测试 2 5 作用域 Sco
  • FPGA自学之路2(计数器or6分频器(偶分频))

    先说一个今天碰到的modelsim报错 原因在于代码模块名和文件名不一致 改成一致就不报错了 下面是modelsim波形图时间间隔调整 时间间隔 一般调成ns 下图是设置波形图数字进制 b是二进制 d是十进制 h是十六进制 下图左边红线是加
  • spring boot 内部执行 spark submit

    最近项目要用到大数据 边学边搞项目 一个坑接着一个坑地踩 好在头铁 总能柳暗花明 spark submit 提交任务到 yarn 集群执行官方资料写的很清楚 如果是用脚本方式执行看看说明分分钟搞定的 可偏偏好死不死 设计的方案是在 spri