我想在远程服务器上的纱线群集上运行火花流应用程序。默认的java版本是1.7,但我想使用1.8作为我的应用程序,它也在服务器中,但不是默认的。有没有办法通过spark-submit指定java 1.8的位置,这样我就不会遇到major.minor错误?
JAVA_HOME在我们的情况下是不够的,驱动程序在java 8中运行,但后来我发现YARN中的Spark工作者是使用java 7启动的(hadoop节点都安装了java版本)。
我不得不在spark.executorEnv.JAVA_HOME=/usr/java/<version available in workers>
添加spark-defaults.conf
。请注意,您可以使用--conf
在命令行中提供它。
见http://spark.apache.org/docs/latest/configuration.html#runtime-environment
虽然您可以强制驱动程序代码在特定Java版本(export JAVA_HOME=/path/to/jre/ && spark-submit ...
)上运行,但工作人员将使用来自工作者计算机的纱线用户的PATH使用默认Java版本执行代码。
您可以做的是通过编辑JAVA_HOME
文件(spark-env.sh
)将每个Spark实例设置为使用特定的documentation。
在spark-env.sh中添加你想要的JAVA_HOME(sudo find -name spark-env.sh ... ej .: /etc/spark2/conf.cloudera.spark2_on_yarn/spark-env.sh)
如果要为spark on yarn设置java环境,可以在spark-submit之前设置它
--conf spark.yarn.appMasterEnv.JAVA_HOME=/usr/java/jdk1.8.0_121 \