
# 配置YARN-Client和YARN-Cluster不同模式下的环境变量
#### 配置场景
当前，在YARN-Client和YARN-Cluster模式下，两种模式的客户端存在冲突的配置，即当客户端为一种模式的配置时，会导致在另一种模式下提交任务失败。
为避免出现如上情况，添加[表1]中的配置项，避免两种模式下来回切换参数，提升软件易用性。
- YARN-Cluster模式下，优先使用新增配置项的值，即服务端路径和参数。
- YARN-Client模式下，直接使用原有的三个配置项的值。 原有的三个配置项为："spark.driver.extraClassPath"、"spark.driver.extraJavaOptions"、"spark.driver.extraLibraryPath"。
  
![](https://support.huaweicloud.com/cmpntguide-mrs/public_sys-resources/note_3.0-zh-cn.png)
不添加[表1]中配置项时，使用方式与原有方式一致，程序可正常执行，只是在不同模式下需切换配置。
#### 配置参数
**参数入口：**
在Manager系统中，选择"集群 \> *待操作集群的名称* \> 服务 \> Spark2x \> 配置"，单击"全部配置"，在搜索框中输入参数名称。
 表1参数介绍 
| **参数**                                     | **描述**                                                                                                                                                                                           | **默认值**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
|:---|:---|:---|
| spark.yarn.cluster.driver.extraClassPath   | YARN-Cluster模式下，Driver使用的extraClassPath，配置为服务端的路径和参数。 同时，"spark.driver.extraClassPath"配置成Spark客户端路径，可以保证在YARN-Client模式下和YARN-Cluster模式下不需要切换配置。 | ${BIGDATA_HOME}/common/runtime/security                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| spark.yarn.cluster.driver.extraJavaOptions | YARN-Cluster模式下Driver的extraJavaOptions，配置成服务端的路径和参数。 同时，"spark.driver.extraJavaOptions"配置成Spark客户端路径，可以保证YARN-Client模式和YARN-Cluster模式不需要切换配置。   | -Xloggc:\<LOG_DIR\>/indexserver-%p-gc.log -XX:+PrintGCDetails -XX:-OmitStackTraceInFastThrow -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=20 -XX:GCLogFileSize=10M -Dlog4j.configuration=./__spark_conf__/__hadoop_conf__/log4j-executor.properties -Dlog4j.configuration.watch=true -Djava.security.auth.login.config=./__spark_conf__/__hadoop_conf__/jaas-zk.conf -Dzookeeper.server.principal=${ZOOKEEPER_SERVER_PRINCIPAL} -Djava.security.krb5.conf=./__spark_conf__/__hadoop_conf__/kdc.conf -Djetty.version=x.y.z -Dorg.xerial.snappy.tempdir=${BIGDATA_HOME}/tmp -Dcarbon.properties.filepath=./__spark_conf__/__hadoop_conf__/carbon.properties -Djdk.tls.ephemeralDHKeySize=2048 -Dspark.ssl.keyStore=./child.keystore #{java_stack_prefer} |
   
