在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 路徑

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