如何在SparkMapReduce和Flink程序里面指定JAVA_HOME
Posted 过往记忆大数据
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在SparkMapReduce和Flink程序里面指定JAVA_HOME相关的知识,希望对你有一定的参考价值。
如下面图片不清晰,请访问https://www.iteblog.com/archives/1883.html,或点击下面阅读原文进行阅读。
大家在使用Spark、MapReduce 或 Flink 的时候很可能遇到这样一种情况:Hadoop 集群使用的 JDK 版本为1.7.x,而我们自己编写的程序由于某些原因必须使用 1.7 以上版本的JDK,这时候如果我们直接使用 JDK 1.8、或 1.9 来编译我们写好的代码,然后直接提交到 YARN 上运行,这时候会遇到以下的异常:
原因很简单,YARN 集群的 JDK 版本低于我们客户端需要的 JDK 版本.Java 8 class file的版本是52,而 Java 7虚拟机只能支持到51,所以肯定会出现上述异常。那我们该如何解决呢?
首先想到的是升级 YARN 集群上面的 JDK 版本到1.8,但是如果很多人都在使用 YARN 集群,这种操作势必影响很多用户,所以这种方法不适合。那有没有更好的办法?肯定有,要不然就没有这篇文章了。
其实我们可以在提交作业之前设置好相关的环境变量,然后再提交,这时候在YARN上执行这个作业的时候就会使用到我们指定的 JDK ,但是前提是我们必须在 YARN 集群的每台节点安装好相应 JDK 版本。下面我将介绍 Spark 、MapReduce 以及 Flink 中如何指定 JAVA_HOME。
Spark
Spark 中有两种方式:
通过指定SPARK_YARN_USER_ENV
这个很简单,直接通过 SPARK_YARN_USER_ENV
环境变量设置好 YARN 集群 JDK 的路径即可,如下:
export
SPARK_YARN_USER_ENV=
"JAVA_HOME=/home/iteblog/java/jdk1.8.0_25"
以上是关于如何在SparkMapReduce和Flink程序里面指定JAVA_HOME的主要内容,如果未能解决你的问题,请参考以下文章 |