在spark,MapReduce 或 Flink 程序里面制定环境变量

以jdk来举例,当我们需要 更高版本的jdk时,而默认的环境引用的是低版本的jdk,会引发如下错误:

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

因为某些原因下,我们并不方便进行集群jdk的升级,此时我们就需要在程序制定环境,但是前提是我们必须在 YARN 集群的每台节点安装好相应 JDK 版本。

1:spark指定方式

1>:通过指定SPARK_YARN_USER_ENV

范例:export SPARK_YARN_USER_ENV="JAVA_HOME=/opt/jdk1.8.0_151"

2>:通过指定spark.executorEnv.JAVA_HOME 和 spark.yarn.appMasterEnv.JAVA_HOME

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

        --executor-memory 5g \

        --num-executors 10 \

        --queue ia \

        --conf "spark.yarn.appMasterEnv.JAVA_HOME=/opt/jdk1.8.0_151" \

        --conf "spark.executorEnv.JAVA_HOME=/home/opt/jdk1.8.0_151" \

        --executor-cores 1 \

也可以将这个参数写到 $SPARK_HOME/conf/spark_default.conf 文件中

2: MapReduce

可以直接在程序中设置相关env参数来调试

conf.set("mapred.child.env", "JAVA_HOME=/opt/jdk1.8.0_151");

conf.set("yarn.app.mapreduce.am.env", "JAVA_HOME=/opt/jdk1.8.0_151");

3:flink

可以在 $FLINK_HOME/conf/flink-conf.yaml  设置如下参数

env.java.home: /opt/jdk1.8.0_151"

注:上面所说的 JDK 路径全部都是指 YARN 集群的 JDK 路径

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章