spark on yarn 使用自定义jdk
文章目录
- 1. 背景
- 2. 使用自定义的jdk
1. 背景
公司的hadoop集群默认使用的还是jdk1.7 我刚来不知道,用spark2.0+jdk1.8开发了应用程序。 提交到集群上面报错
Job aborted due to stage failure: Task 1 in stage 37.0 failed 4 times, most recent failure: Lost task 1.3 in stage 37.0 (TID 10960, hadoop37):
java.lang.UnsupportedClassVersionError: com/chen/search//task/IndexBuilder$1 : Unsupported major.minor version 52.0
当时内心有点崩溃,没想到集群只支持jdk1.7, 最开始想到的方案是降低当前工程的jdk版本吧,于是在本地又装了一个jdk1.7, 然后各种依赖的包都要处理,因为很多第三方包新一些的都是jdk1.8了,让人欲哭无泪,我一顿操作,终于把大部分依赖都降低到了1.7, 结果发现有一个没法绕过去的地方,这个spark任务最终要写入Elasticsearch, ES的版本是7.+, 7.0之后ES的client对jdk1.7已经不再支持了,所以也决定了这个问题无法通过降低jdk来完成了,而且降低jdk的操作本来也不合我的想法,开历史倒车。
2. 使用自定义的jdk
上面的一顿操作猛如虎,一看结果啥用没有,比较坑。也说明我的思维不够灵活,遇到问题第一个想到的是适应,比如hadoop平台说只支持1.7,我就去降低自己的代码的jdk版本,没有想过怎样在集群中运行高版本的jdk。还好在经历上面的失败之后我并没有放弃,想到有没有其他方案呢,我就查了一下,结果真的有,就是hadoop集群的多版本jdk的方案。这里需要提交的时候做更多的配置。整个的提交命令是这样的:
spark-submit --deploy-mode client --master yarn --class com.xxxx.task.RebuildStarter \
--driver-memory 2G \--num-executors 80 \--queue aaa \--conf spark.default.parallelism=60 \--executor-cores 4 \--executor-memory 16G \user-1.0-SNAPSHOT.jar \--conf "spark.yarn.appMasterEnv.JAVA_HOME=/opt/jdk1.8.0_181" \--conf "spark.executorEnv.JAVA_HOME=/opt/jdk1.8.0_181" \--conf "spark.yarn.executor.memoryOverhead=2048" 2>&1
其中比较重要的是
--conf "spark.yarn.appMasterEnv.JAVA_HOME=/opt/jdk1.8.0_181" \--conf "spark.executorEnv.JAVA_HOME=/opt/jdk1.8.0_181" \
这个设置需要在hadoop集群中所有的机器上都安装jdk1.8,其实就是解压放上去就好,所以实际上不会对集群的稳定性造成影响。
设置master和executor的jdk。这个方案也是我从网上找到的一个方案,但是在我实际运行后不行,依然报上面的jdk的版本不支持的错误,有点头大, 这个时候,我想有没有可能是这些命令在将任务提交到其他executor的时候没有分发过去呢(在使用集群的时候多少觉得这个集群哪里不对头)?
于是在代码里面增加了一些设置,就是把这个设置抄写了一遍
SparkConf sparkConf = new SparkConf().setAppName(JOB_NAME).set(ConfigurationOptions.ES_NODES, esHost).set(ConfigurationOptions.ES_PORT, esPort).set(ConfigurationOptions.ES_NET_HTTP_AUTH_USER, esUser).set(ConfigurationOptions.ES_NET_HTTP_AUTH_PASS, esPass).set(ConfigurationOptions.ES_BATCH_SIZE_ENTRIES, "1000").set(ConfigurationOptions.ES_MAPPING_ID, ES_MAPPING_ID).set(ConfigurationOptions.ES_BATCH_WRITE_REFRESH, "false").set("spark.sql.warehouse.dir", "/user/hive/warehouse").set("spark.executorEnv.JAVA_HOME","/opt/jdk1.8.0_181").set("spark.default.parallelism","60").set("spark.yarn.executor.memoryOverhead","2048") ;SparkSession session = SparkSession.builder().appName(JOB_NAME).config(sparkConf).enableHiveSupport().getOrCreate();
这样提交任务后终于不再报这个错了。
spark on yarn 使用自定义jdk相关推荐
- Spark 在YARN上运行
在YARN上运行Spark 安全 在YARN上启动Spark 添加其他JAR 准备工作 组态 调试您的应用程序 Spark特性 重要笔记 的Kerberos YARN特定的Kerberos配置 Ker ...
- Spark通过YARN提交任务不成功(包含YARN cluster和YARN client)
无论用YARN cluster和YARN client来跑,均会出现如下问题. [spark@master spark-1.6.1-bin-hadoop2.6]$ jps 2049 NameNode ...
- Spark(十二) -- Spark On Yarn Spark as a Service Spark On Tachyon
Spark On Yarn: 从0.6.0版本其,就可以在在Yarn上运行Spark 通过Yarn进行统一的资源管理和调度 进而可以实现不止Spark,多种处理框架并存工作的场景 部署Spark On ...
- spark视频-Spark on Yarn
第十期Spark亚太研究院决胜大数据时代公益大讲坛:Spark on Yarn,视频地址:http://pan.baidu.com/share/link?shareid=3629554384& ...
- Spark on YARN的部署
Spark on YARN的原理就是依靠yarn来调度Spark,比默认的Spark运行模式性能要好的多,前提是首先部署好hadoop HDFS并且运行在yarn上,然后就可以开始部署spark on ...
- 搭建Spark On YARN集群
文章目录 零.本讲学习目标 一.Spark On YARN架构 (一)client提交方式 (二)cluster提交方式 二.搭建Spark On YARN集群 (一)搭建Spark Standalo ...
- 2021年大数据Spark(九):Spark On Yarn两种模式总结
目录 Spark On Yarn两种模式 引入 一.当一个MR应用提交运行到Hadoop YARN上时 二.当一个Spark应用提交运行在集群上时 注意 client 模式 cluster 模式 总结 ...
- Apache Spark源码走读之8 -- Spark on Yarn
欢迎转载,转载请注明出处,徽沪一郎. 概要 Hadoop2中的Yarn是一个分布式计算资源的管理平台,由于其有极好的模型抽象,非常有可能成为分布式计算资源管理的事实标准.其主要职责将是分布式计算集群的 ...
- spark on yarn 完全分布式_Spark编程笔记(1)-架构基础与运行原理
引言 根据IBM前首席执行官郭士纳的观点,IT领域每隔十五年就会迎来一 次重大变革 .当前我们正处于第三次信息浪潮(2010年前后),物联网.云计算和大数据技术突飞猛进. 信息爆炸是我们当前所需要解决 ...
最新文章
- PL/SQL复合变量
- linux内核earlyprink,内核启动参数机制学习笔记
- linux fedora35指定某个固定的启动项作为默认的启动项
- 转 Java对日期Date类进行加减运算一二三
- TCP/UDP 网络编程实例
- asp.net core 环境(Development、Staging 、Production)
- oracle 查询过去一个星期的数据_过去一星期,最懂我的居然是一个表情包
- Android doc |Getting Started|部分 转载 --管理Activity生命周期
- 4月27日--28日课堂内容
- Linux操作系统中使用“autogen.sh+configure+make”编译代码的方法
- Oracle 存储过程、存储函数 与原生 JDBC 调用
- 全地形机器人HEXA评测:不做玩具 钻洞爬台阶可编程 | 评测
- my97前端日期插件使用示例
- 还在找一款编辑友好,美观方便的开源wiki系统?安利一款超好用wiki
- Emacs的日常生活
- C语言|计算流逝后的时间
- 计算机属于机器人相关专业,人工智能属于什么学科门类
- 【保姆级】网络安全工程师学习成长路线,就业前景,薪资待遇分享
- android onupgrade调用,Android Sqlite中常见的对于onUpgrade的处理方法
- 翻译:俄国卫星GLONASS 简介 天基全球导航卫星系统 (GNSS)
热门文章
- boost.asio系列——io_service
- 漫游Kafka设计篇之Producer和Consumer
- 趣谈设计模式 | 策略模式(Strategy):你还在使用冗长的if-else吗?
- python time,datetime当前时间,昨天时间,时间戳和字符串的转化
- 滑动窗口算法学习(一)
- “新型肺炎患者同乘查询系统”上线,超2千万用户使用
- RabbitMQ Network Partitions
- 实时音视频助力在线教育风口
- 以“用户播放行为与体验”为核心的视频服务质量优化
- 开源声码器WORLD在语音合成中的应用