Spark on Yarn 在不同的JDK环境下运行

前言

Spark社区的快速发展给我带来越来越快,越来越方便的大数据处理工具的同时,也带来了不小的麻烦,一季度一个小版本,半年一个大版本,新版本JDK7说不要就不要了。要知道在大公司生产环境下升级一个JDK版本,那可是天大的事儿,这口锅谁都不敢背。

一般的生产环境,Spark以跑在YARN上为主,YARN的环境也不能说动就能,因为也不止Spark一种类型的App泡在YARN上,在加上复杂的各种Hadoop生态,升级起来就更加费劲了。本文介绍在不改变YARN的NodeManager环境变量的前提下,以不同的JDK运行Spark Applications on Yarn。

相关配置

ConfigurationDefault ValueMeaning
spark.yarn.appMasterEnv.设置ApplicationMaster的环境变量
spark.executorEnv.设置executor的环境变量

利用上述配置,我们就可以更改相关container的环境变量,包括我们的JAVA_HOME

试验

yarn端配置

export JAVA_HOME=/usr/jdk64/jdk1.7.0_67

spark客户端配置

export JAVA_HOME=/usr/jdk64/jdk1.7.0_67
或者
export JAVA_HOME=/home/hadoop/jdk1.8.0_144
bin/spark-sql

默认情况下,直接使用yarn端配置

《Spark on Yarn 在不同的JDK环境下运行》 image.png

bin/spark-sql –conf spark.yarn.appMasterEnv.JAVA_HOME=/home/hadoop/jdk1.8.0_144 修改am的jdk,显示executor container没有变化

《Spark on Yarn 在不同的JDK环境下运行》 image.png

bin/spark-sql –conf spark.yarn.appMasterEnv.JAVA_HOME=/home/hadoop/jdk1.8.0_144 –conf spark.executorEnv.JAVA_HOME=/home/hadoop/jdk1.8.0_144

同时修改

《Spark on Yarn 在不同的JDK环境下运行》 image.png

最后

另外一种方法时通过 –archives或spark.yarn.dist.archives 上传jdk的压缩包,例如

--archives path/to/jdk-8u77-linux-x64.tar.gz
or
--conf spark.yarn.dist.archives=path/to/jdk-8u77-linux-x64.tar.gz

然后可以通过指定

spark.yarn.appMasterEnv.JAVA_HOME=./jdk-8u77-linux-x64.tar.gz/jdk-8u77-linux-x64
spark.executorEnv.JAVA_HOME=./jdk-8u77-linux-x64.tar.gz/jdk-8u77-linux-x64

该方式先上传到yarn distribute cache,进而会被拉到各container的working dir 所以可以通过./jdk-8u77-linux-x64.tar.gz取到该文件,然后通过其解压后的目录jdk-8u77-linux-x64进行访问。

获取将jdk压缩包取个文件别名,如

--archives path/to/jdk-8u77-linux-x64.tar.gz#JDK8U77

就变成了

spark.yarn.appMasterEnv.JAVA_HOME=./JDK8U77/jdk-8u77-linux-x64
spark.executorEnv.JAVA_HOME=./JDK8U77/jdk-8u77-linux-x64

这种方案相对比较灵活,特别是对于yarn集群没有管理权限的时候,但是提交过程上传进200M的jdk还是需要花不少时间的。

所以最后我们可以将其放到hdfs上,如hdfs://nn/path/to/jdk-8u77-linux-x64.tar.gz

--archives hdfs://nn/path/to/jdk-8u77-linux-x64.tar.gz

这种方式下,container下载这个jdk当然还是需要时间的,但是对于yarn集群的内网网络环境而言,应该还是比较轻松的。

    原文作者:Kent_Yao
    原文地址: https://www.jianshu.com/p/adf3e14117e3
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞