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 中的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