配置Spark作业运行时使用的JDK版本
操作场景
Spark是基于内存的分布式计算框架。在迭代计算的场景下,数据处理过程中的数据可以存储在内存中,提供了比MapReduce高10到100倍的计算能力。Spark可以使用HDFS作为底层存储,使用户能够快速地从MapReduce切换到Spark计算平台上去。Spark提供一站式数据分析能力,包括小批量流式处理、离线批处理、SQL查询、数据挖掘等,用户可以在同一个应用中无缝结合使用这些能力。
Spark支持指定运行作业的JDK版本,默认为JDK 8,还支持指定为JDK 17或JDK 21。
约束与限制
本章节仅适用于MRS 3.6.0-LTS及之后版本。
操作步骤
- 登录Manager界面,选择“集群 > 服务”,在服务列表中单击“Spark”进入概览页面,选择“ 配置 > 全部配置”。
- 在全部配置页面,修改JDBCServer或客户端运行作业的JDK版本。
- JDBCServer:
在JDBCServer配置中搜索“spark.jdk.version”,修改该参数值为对应的JDK版本,单击“保存”保存配置,并重启JDBCServer实例,JDK配置生效。
图1 修改JDBCServer运行作业的JDK版本
- Spark新客户端:
在SparkResource配置中搜索“spark.jdk.version”,修改该参数值为对应的JDK版本,单击“保存”保存配置。

重新下载的客户端默认运行在指定的JDK版本下。
- Spark旧客户端:
在对应客户端“spark-default.conf”配置文件末尾追加“spark.jdk.version=JDK21”,即可指定Spark客户端运行的JDK版本。
- JDBCServer:
- 提交并运行Spark作业,可通过作业进程查看运行的JDK版本。
- 使用root用户登录客户端节点,提交一个SparkSQL作业,具体操作请参考Spark客户端使用实践。
- 登录Manager主页面。在服务中选择Spark。进入Spark概览页面,单击SparkWebUI任意一个实例,进入History Server页面。
- 单击执行的应用ID,跳转到该应用的Spark UI页面。在页面上方选择“Executors”,获取Executor中driver对应的节点和端口。
- 使用root用户登录获取的节点,执行如下命令,查询JDK版本。
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 ......
