【发布时间】:2018-07-17 17:18:26
【问题描述】:
我正在尝试在 Yarn 上运行 Spark。
我运行的是 Spark 1.6.0,这对 Yarn (hadoop 2.7.1) 没问题。然后,我使用相同的 Yarn 升级到 Spark 2.2.1,我的应用程序都因为这个错误而失败:
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/spark/network/util/ByteUnit : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:803)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:442)
at java.net.URLClassLoader.access$100(URLClassLoader.java:64)
at java.net.URLClassLoader$1.run(URLClassLoader.java:354)
at java.net.URLClassLoader$1.run(URLClassLoader.java:348)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:347)
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 org.apache.spark.internal.config.package$.<init>(package.scala:41)
at org.apache.spark.internal.config.package$.<clinit>(package.scala)
at org.apache.spark.deploy.yarn.ApplicationMaster.<init>(ApplicationMaster.scala:73)
at org.apache.spark.deploy.yarn.ApplicationMaster$$anonfun$main$1.apply$mcV$sp(ApplicationMaster.scala:763)
at org.apache.spark.deploy.SparkHadoopUtil$$anon$2.run(SparkHadoopUtil.scala:67)
at org.apache.spark.deploy.SparkHadoopUtil$$anon$2.run(SparkHadoopUtil.scala:66)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1698)
at org.apache.spark.deploy.SparkHadoopUtil.runAsSparkUser(SparkHadoopUtil.scala:66)
at org.apache.spark.deploy.yarn.ApplicationMaster$.main(ApplicationMaster.scala:762)
at org.apache.spark.deploy.yarn.ExecutorLauncher$.main(ApplicationMaster.scala:785)
at org.apache.spark.deploy.yarn.ExecutorLauncher.main(ApplicationMaster.scala)
经过一些研究,我发现这是由于使用比用于运行的版本更旧的 JDK 版本完成的构建。我正在运行 Java 7,现在我安装了 Java 8 和 java -version 显示(在 master 和 worker 中):
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)
和 javac 版本:
javac 1.8.0_161
我预计升级后错误会停止,但它没有。
这个错误是否与 HADOOP_CONF_DIR 的任何 conf 文件有关?或者也许我在升级 java 时做错了(任何环境变量或类似的东西)
任何帮助将不胜感激,谢谢
【问题讨论】:
-
您是否在 conf/hadoop-env.sh 中使用自定义 JAVA_HOME ?如果是,那么您需要更改那里的路径。
-
我的 hadoop-env.sh 包含 export JAVA_HOME=${JAVA_HOME} 其中 $JAVA_HOME = /usr/lib/jvm/java-8-oracle
-
@Shailendra 任何帮助
-
你能检查 spark/yarn 的启动日志以确认它使用的是 Java 8 吗?
标签: java apache-spark hadoop-yarn