
# 配置Spark作业运行时使用的JDK版本
#### 操作场景
Spark是基于内存的分布式计算框架。在迭代计算的场景下，数据处理过程中的数据可以存储在内存中，提供了比MapReduce高10到100倍的计算能力。Spark可以使用HDFS作为底层存储，使用户能够快速地从MapReduce切换到Spark计算平台上去。Spark提供一站式数据分析能力，包括小批量流式处理、离线批处理、SQL查询、数据挖掘等，用户可以在同一个应用中无缝结合使用这些能力。
Spark支持指定运行作业的JDK版本，默认为JDK 21，支持指定为JDK 17。
#### 约束与限制
本章节仅适用于MRS 3.6.0-LTS及之后版本。
#### 操作步骤
1. 登录Manager界面，选择"集群 \> 服务"，在服务列表中单击"Spark"进入概览页面，选择" 配置 \> 全部配置"。
2. 在全部配置页面，修改JDBCServer或客户端运行作业的JDK版本。 
   - JDBCServer： 在JDBCServer配置中搜索"spark.jdk.version"，修改该参数值为对应的JDK版本，单击"保存"保存配置，并重启JDBCServer实例，JDK配置生效。
     图1修改JDBCServer运行作业的JDK版本   
     ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000002678179998.png "点击放大") 
   
   - Spark新客户端： 在SparkResource配置中搜索"spark.jdk.version"，修改该参数值为对应的JDK版本，单击"保存"保存配置。
     ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000002678181474.png "点击放大")
     重新下载的客户端默认运行在指定的JDK版本下。
     
   
   - Spark旧客户端： 在对应客户端"spark-default.conf"配置文件末尾追加"spark.jdk.version=JDK21"，即可指定Spark客户端运行的JDK版本。
     
   
   
   
   
3. 提交并运行Spark作业，可通过作业进程查看运行的JDK版本。 
   1. 使用root用户登录客户端节点，提交一个SparkSQL作业，具体操作请参考[Spark客户端使用实践](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_1929.html)。
   
   2. 登录Manager主页面。在服务中选择Spark。进入Spark概览页面，单击SparkWebUI任意一个实例，进入History Server页面。
   
   3. 单击执行的应用ID，跳转到该应用的Spark UI页面。在页面上方选择"Executors"，获取Executor中driver对应的节点和端口。 ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000002451497893.png "点击放大")
      
   
   4. 使用root用户登录获取的节点，执行如下命令，查询JDK版本。 查询端口进程ID：
      ```
      netstat -nap | grep 45211
      ```
      结果如下，进程为1027499。
      ```
      [root@192-168-234-210 ~]# netstat -nap | grep 45211
      tcp     0     0 192.168.234.210:45211    0.0.0.0:*       LISTEN      1027499/java
      ```
      查询JDK版本：
      ```
      ps -ef | grep 1027499
      ```
      结果如下，搜索到的结果为"jdk-21.0.4"则表示运行Spark作业的JDK版本为JDK 21。
      ```
      [root@192-168-234-210 ~]# ps -ef | grep 1027499
      adminte+ 1027499 1027487  6 10:13 ?        00:00:13 /opt/huawei/Bigdata/common/runtime0/jdk-21.0.4//bin/java ......
      ```
      
   
   
   
   
 
