SparkSubmit提交任务到yarn及报错解决方案
文章目录
- 一、提交任务代码
- 二、Linux提交可能出现的问题及解决方案
- 情况1:JSON解析异常
- 情况2:java.lang.InstantiationException spark.sql.driver
- 情况3 中kafka:java.lang.NoClassDefFoundError: org/apache/kafka/clients/producer/Callback
- 情况4 idea启动报错:Connection to node -1 could not be established. Broker may not be available
- 情况5中kafka: Caused by: java.nio.channels.UnresolvedAddressException master:8080
一、提交任务代码
@Overridepublic Response submitApplication(String[] args) throws IOException, InterruptedException {log.info("spark任务传入参数args:{}", args);args[0] = args[0].replace("}}", "} }").replace("{{", "{ {");SparkLauncher handle = new SparkLauncher().setAppResource(sparkJars) //jar位置,可以是本地可以是hdfs上地址.setMainClass(sparkMainClass) //运行主函数,项目相对路径,要带包名.setMaster(sparkMaster) //举例:yarn.setAppName("Submit Application To Yarn").setSparkHome(sparkHome) //linux中地址,举例:/usr/hdp/3.1.0.0-78/spark2.setDeployMode(sparkDeployMode) //cluster.setVerbose(true).setConf("spark.driver.memory", sparkDriverMemory) //1g.setConf("spark.executor.memory", sparkExecutorMemory) //1g.setConf("spark.executor.cores", sparkExecutorCores) //1.setVerbose(true).addAppArgs(args[0]);handle.startApplication(new SparkAppHandle.Listener() {//这里监听任务状态,当任务结束时(不管是什么原因结束),isFinal()方法会返回true,否则返回false@Overridepublic void stateChanged(SparkAppHandle sparkAppHandle) {if (sparkAppHandle.getState().isFinal()) {System.out.println("============stateChanged-getAppId:" + sparkAppHandle.getAppId());}System.out.println("getState:" + sparkAppHandle.getState().toString());}@Overridepublic void infoChanged(SparkAppHandle sparkAppHandle) {System.out.println("============infoChanged-getAppId:" + sparkAppHandle.getAppId()); }}});System.out.println("**********************The task is finished!");return Response.success();}
说明:
1)windows下无法运行,必须在linux中进行提交
2)这段代码必须在yarn所在linux服务器上运行,不然标识符.setMaster(“yarn”),不认识
3)这种方式如果在运行中想获得appId,只能在infoChanged中获得或者在stateChanged方法中代表当任务结束后获得,当然推荐使用前者
二、Linux提交可能出现的问题及解决方案
情况1:JSON解析异常
出错原因:spark命令提交参数json,到另一个jar发现{{或者}}消失了,导致解析异常
解决方案:https://blog.csdn.net/u010814849/article/details/78752074 双括号间+空格
情况2:java.lang.InstantiationException spark.sql.driver
出错原因:spark操作mysql数据库缺少驱动
解决方案:
Properties对象设置props.put(“driver”, “com.mysql.jdbc.Driver”);
情况3 中kafka:java.lang.NoClassDefFoundError: org/apache/kafka/clients/producer/Callback
出错原因:运行spark jar(也就是普通maven jar或者java jar,而不是springboot jar)期缺少jar包,问题出在maven程序打包没把依赖打进去
解决方案:添加打包插件指定打入依赖jar
<plugin><artifactId>maven-assembly-plugin</artifactId><configuration><descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs></configuration><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>single</goal></goals></execution></executions>
</plugin>
情况4 idea启动报错:Connection to node -1 could not be established. Broker may not be available
出错原因:指定bootstrap-servers前面多了空格,导致层级目录出错,也就是说application.yml文件由于复杂导致多添加 “空格”,造成缩进格式混乱,这点尤其注意
解决方案:
情况5中kafka: Caused by: java.nio.channels.UnresolvedAddressException master:8080
出错原因:ip映射没修改对,导致不认识master,因为我们采用ambari安装的kafka,初始化为:localhost:6667,所以必须把“localhost” -》“IP”
解决方案:如果是ambari安装的kafka修改cinfig下面的,如果是自己linux搭建的,需改动kafka下的cinfig下的server.properties,把PLAINTEXT://localhost:6667 -》 改为PLAINTEXT://192.168.20.91:6667
SparkSubmit提交任务到yarn及报错解决方案相关推荐
- Spark系列之SparkSubmit提交任务到YARN
title: Spark系列 第十三章 SparkSubmit提交任务到YARN 13.1 SparkSubmit提交的一些参数解释 local 本地单线程 local[K] 本地多线程(指定K个内核 ...
- react 脚手架创建后暴漏配置文件 运行yarn eject 报错 (已解决)
创建项目后 运行yarn eject 报错问题 git add .git commit -am "save before eject"注:这里是 -am之后再次 yarn ejec ...
- yarn打包报错:error during build: Error: Assigning to rvalue (Note that you need plugins to import files
欢迎关注csdn前端领域博主: 前端小王hs email: 337674757@qq.com 前端交流群: 598778642 error during build: Error: Assigning ...
- git 公钥提交代码_Git提交代码push的时候报错常见错误
今天我想rk的sdk包里面的一些东西提交到我的git服务器上,结果,总是报错,折腾了一下午,结果才解决. 首先看看我提交代码的时候,报错的信息: git.exe push --progress &qu ...
- git提交大文件报错解决方案
git提交大文件报错解决方案 1.http.postBuffer 2.Git LFS 安装及配置git lfs 1.在Git仓库中为仓库设置相关配置 2.选择要用LFS追踪的文件 3.查看正在被LFS ...
- TFS 报错解决方案:tf400324
TFS 报错解决方案:tf400324 参考文章: (1)TFS 报错解决方案:tf400324 (2)https://www.cnblogs.com/xiaz/p/7443805.html 备忘一下 ...
- vue-cli打包构建时常见的报错解决方案
vue-cli打包构建时常见的报错解决方案 参考文章: (1)vue-cli打包构建时常见的报错解决方案 (2)https://www.cnblogs.com/bester-ace/articles/ ...
- kali linux 安装 Mysql Can‘t read from messagefile 报错解决方案
kali linux 安装 Mysql Can't read from messagefile 报错解决方案 参考文章: (1)kali linux 安装 Mysql Can't read from ...
- CentOS 6安装Oracle报错解决方案
CentOS 6安装Oracle报错解决方案 参考文章: (1)CentOS 6安装Oracle报错解决方案 (2)https://www.cnblogs.com/lonecloud/p/689568 ...
最新文章
- 图像空间变换--imtransform
- Mongo、Redis、Memcached对比及知识总结
- 随机森林(Random Forest)和梯度提升树(GBDT)有什么区别?
- eclipse编码设置
- 一位读者刚刚收割阿里、腾讯等大厂Offer,他说这些话一定要和你们说一下
- SAP Spartacus 的路由配置
- webclient无法获取html文件,C# WebClient获取网页源码的方法
- 前后端敏感数据加密方案及实现_03
- BootStrap笔记-popover的使用(popover中放验证码,点击更新)
- appium-python 学习记录
- category与extension
- micoolcoder 验证码 for php v1.0 全字符版,Micoolcoder 验证码 for PHP v1.0 全字符版
- C++ - Opencv模板匹配与块匹配
- maven parent 覆盖_Maven 最佳实践之 · 一个好的 parent 依赖基础
- 计算机考试后进先出,事业单位考试计算机基础知识:建立单链表——后进先出表...
- 工业制造行业B2B电商平台解决方案
- 使用echarts的3D地图中的map3D与scatter3D混合使用时出现坐标位移的情况
- python兔子生兔子_Python兔子生兔子算法,编程练习题实例十一
- iOS学习笔记75-NSURLSession使用实战教程
- 数据仓库---JPivot连接MySQL VS PostgreSQL