1. 客户端和yarn集群都部署了相同版本的JDK
如客户端和yarn集群的JDK均安装在 /usr/java/jdk1.8.0_25 目录
通过参数设置 spark.executorEnv.JAVA_HOME 和 spark.yarn.appMasterEnv.JAVA_HOME,这分别为 Spark 的 Executor 和 Driver 指定 JDK 路径,如下:
$SPARK_HOME/bin/spark-submit --master yarn-cluster \
... \
--conf "spark.yarn.appMasterEnv.JAVA_HOME=/usr/java/jdk1.8.0_25" \
--conf "spark.executorEnv.JAVA_HOME=/usr/java/jdk1.8.0_25" \
--executor-cores 1 \
--class com....-1.0-SNAPSHOT.jar
2. yarn集群中没有部署相关的JDK版本,又无法安装
可配置参数spark.yarn.dist.archives=jdk压缩包,在启动spark时,spark会自动上传到yarn集群中,并解压运行。
$SPARK_HOME/bin/spark-submit --master yarn-cluster \
... \
--conf "spark.yarn.dist.archives=jdk-8u211-linux-x64.tar.gz" \
--conf "spark.executorEnv.JAVA_HOME=./jdk-8u211-linux-x64.tar.gz/jdk1.8.0_211" \
--conf "spark.yarn.appMasterEnv.JAVA_HOME=./jdk-8u211-linux-x64.tar.gz/jdk1.8.0_211" \