• 欢迎关注微信公众号:九万里大数据
  • 请使用Ctrl+D收藏本站到书签栏
  • 手机也可访问本站 jwldata.com

Spark指定JDK版本

大数据技术 九万里大数据 2年前 (2021-07-19) 948次浏览 0个评论 扫描二维码

如果Spark执行报错Unsupported major.minor version 52.0,一般是因为YARN所在的机器配置的JDK是1.7的,而高版本的Spark(从2.2.0起)需要运行在Java 8以上。

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/spark/network/sasl/SecretKeyHolder : Unsupported major.minor version 52.0
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
	at java.lang.Class.getDeclaredMethods0(Native Method)
	at java.lang.Class.privateGetDeclaredMethods(Class.java:2570)
	at java.lang.Class.getMethod0(Class.java:2813)
	at java.lang.Class.getMethod(Class.java:1663)
	at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494)
	at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486)

如果不想对YARN的JDK版本进行改动,那么可以在Spark指定自己的JDK版本,不影响YARN和其他集群组件。Spark提交任务时添加两个配置项即可,同时确保YARN集群的所有节点都安装了JDK1.8到相同路径(下载JDK的tar.gz包,解压到相同路径)。

--conf "spark.executorEnv.JAVA_HOME=/usr/java/jdk1.8.0_181" 
--conf "spark.yarn.appMasterEnv.JAVA_HOME=/usr/java/jdk1.8.0_181"

现在用spark-submit时,加上这两个配置项。

spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster  --conf "spark.executorEnv.JAVA_HOME=/usr/java/jdk1.8.0_181" --conf "spark.yarn.appMasterEnv.JAVA_HOME=/usr/java/jdk1.8.0_181" /opt/spark-2.4.0-bin-hadoop2.6/examples/jars/spark-examples_2.11-2.4.0.jar 10

如果想要全局生效,可以配置到spark-defaults.conf文件里,之后在使用spark-submit时就不需要指定这两个配置项了。

cd /opt/spark-2.4.0-bin-hadoop2.6/conf
vi spark-defaults.conf
 
spark.master=yarn
spark.submit.deployMode=client
spark.executorEnv.JAVA_HOME=/usr/java/jdk1.8.0_181
spark.yarn.appMasterEnv.JAVA_HOME=/usr/java/jdk1.8.0_181
spark.driver.host=192.168.X.X

现在spark-submit语句可以更简洁。

spark-submit --class org.apache.spark.examples.SparkPi /opt/spark-2.4.0-bin-hadoop2.6/examples/jars/spark-examples_2.11-2.4.0.jar 10

欢迎关注我的微信公众号“九万里大数据”,原创技术文章第一时间推送。
欢迎访问原创技术博客网站 jwldata.com,排版更清晰,阅读更爽快。


Spark指定JDK版本
 


本站文章,如未注明,均为原创 | 原创文章版权归九万里大数据所有,未经许可不得转载。
本文链接:Spark指定JDK版本
喜欢 (0)

您必须 登录 才能发表评论!