远程切换Spark版本运行测试:Cloudera默认版本配置与修改方案
Cloudera集群Spark默认版本配置与修改指南
我来帮你梳理下Cloudera集群里Spark默认版本的相关问题,结合你要切换测试用例到Spark2的场景来说明:
一、Cloudera默认Spark版本的配置来源
Cloudera集群的Spark默认版本是从两个核心层面控制的:
- 集群服务层面:由Cloudera Manager统一管理,通过Spark服务的配置和Parcel激活状态决定。Cloudera采用Parcel包部署Spark,默认激活的Spark Parcel(比如CDH自带的Spark1.6 Parcel)会成为集群全局的默认版本,相关服务配置也会指向这个版本的安装路径。
- 客户端命令层面:系统默认的
spark-submit、spark-shell等命令,本质是/usr/bin目录下的软链接,默认指向当前激活的Spark版本的对应脚本(比如Spark1.6的/opt/cloudera/parcels/CDH/lib/spark/bin/spark-submit)。 - 补充:Hadoop配置文件(如
yarn-site.xml)并不直接控制Spark版本,但Spark客户端会读取这些配置来和YARN交互,版本选择的核心还是看你调用的Spark客户端本身的版本。
二、修改默认Spark版本的两种方式
根据你的需求(仅让自己的测试用例切换到Spark2,不影响集群全局),推荐优先选择局部修改,也可以根据需要做全局调整:
1. 局部修改(推荐,仅针对你的测试环境)
这种方式不会影响集群其他用户,完全适配你的测试场景:
- 直接调用Spark2的命令:提交测试用例时,跳过默认的
spark-submit,直接指定Spark2安装目录下的脚本路径,示例:
(注:Cloudera的Spark2 Parcel通常命名为/opt/cloudera/parcels/SPARK2/lib/spark2/bin/spark-submit --class your.test.Class your-test-jar.jarSPARK2,具体路径可以用find /opt/cloudera/parcels -name spark2命令确认) - 临时设置环境变量:在你的终端会话或测试脚本中,设置
SPARK_HOME指向Spark2并更新PATH,让默认命令优先调用Spark2:
设置完成后,直接使用export SPARK_HOME=/opt/cloudera/parcels/SPARK2/lib/spark2 export PATH=$SPARK_HOME/bin:$PATH export HADOOP_CONF_DIR=/etc/hadoop/conf # 确保Spark2读取集群的Hadoop配置spark-submit就会调用Spark2的版本。 - 调整Maven配置:在你的pom.xml中,将Spark依赖版本改为对应Cloudera的Spark2版本(比如2.4.0-cdh6.x,具体匹配你的集群CDH版本),同时可以通过Maven的Spark插件指定Spark2的
spark-submit路径,确保远程运行时使用正确版本。
2. 集群全局修改(影响所有用户)
如果需要让整个集群默认使用Spark2,可以通过Cloudera Manager操作:
- 登录Cloudera Manager控制台,找到
Spark2 On YARN服务,确保它已经部署并激活。 - 停止当前的Spark1.6服务(若不再需要),或者在服务配置中设置Spark2为默认的Spark服务。
- 进入Parcel管理页面,确认Spark2的Parcel已经激活,并设置为默认Parcel。
- 重启YARN及相关服务,然后更新所有节点的客户端配置,让
/usr/bin下的软链接指向Spark2的命令脚本。
内容的提问来源于stack exchange,提问作者udit
相关产品推荐
相关产品推荐

