如何在Spark,MapReduce和Flink程序里面指定JAVA_HOME

最近遇到一个bug,自己编写的spark程序本地调试没问题之后想提交到集群上运行,报错内容如下:

Exception in thread "main" java.lang.UnsupportedClassVersionError: com/iteblog/mobile/UserMobileInfo : Unsupported major.minor version 52.0

现特此整理了一下分享给大家:

其实报错已经很明显了,java8版本有问题,那具体原因是什么呢,其实就是本地编写spark用的是java8,但是集群上使用的版本不是java8,然后就去集群服务器上看了一眼,发现有两个版本的java,一个是1.7的,还有一个是1.8的,那用的估计是1.7的就会导致不支持,那怎么才能使用1.8的呢?下面针对不同情况分别介绍:

Spark

第一种方法:只要加上spark.executorEnv.JAVA_HOME和spark.yarn.appMasterEnv.JAVA_HOME两个参数即可,这分别代表的是Spark的Executor和Driver的JDK路径,具体如下:

$SPARK_HOME/bin/spark-submit --master yarn-cluster \

--executor-memory 8g \
--num-executors 80 \
--queue iteblog \
--conf "spark.yarn.appMasterEnv.JAVA_HOME=/home/iteblog/java/jdk1.8.0_25" \
--conf "spark.executorEnv.JAVA_HOME=/home/iteblog/java/jdk1.8.0_25" \
--executor-cores 1 \
--class com.iteblog.UserActionParser /home/iteblog/spark/IteblogAction-1.0-SNAPSHOT.jar

 

第二种方法:将上面两个参数的配置加到$SPARK_HOME/conf/spark_default.conf文件当中就可以了

MapReduce

可以通过mapreduce程序里面的Configuration设置,具体设置如下:

conf.set("mapred.child.env","JAVA_HOME=/home/iteblog/java/jdk1.8.0_25")

conf.set("yarn.app.mapreduce.am.env","JAVA_HOME=/home/iteblog/java/jdk1.8.0_25")

Flink

Flink也是支持自定义JAVA_HOME,我们可以在$FLINK_HOME/conf/flink-conf.yaml,设置如下:

env.java.home: /home/iteblog/java/jdk1.8.0_25

 

注意:上面所有的jdk路径全都是集群上的jdk的绝对路径

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值