You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dataproc集群Spark 3.3.2升级至3.5的干净安装及技术问询

在Dataproc 2.1集群上从Spark 3.3.2升级到Spark 3.5的实践指南

1. 升级推荐步骤及gcloud作业提交适配

集群节点部署Spark 3.5

  • 在集群所有节点(主节点+工作节点)执行统一操作:
    1. 下载与Dataproc 2.1自带Hadoop 3.3.x兼容的Spark 3.5二进制包(选择Pre-built for Apache Hadoop 3.3 and later版本)
    2. 解压到全局统一路径,例如/opt/spark-3.5.0,并设置权限:sudo chown -R hadoop:hadoop /opt/spark-3.5.0
    3. 复制原预装Spark的配置:sudo cp -r /etc/spark/conf/* /opt/spark-3.5.0/conf/,后续再按需调整配置适配3.5版本

提交作业时指定自定义Spark版本

手动修改环境变量仅对当前终端生效,通过gcloud dataproc jobs submit提交作业时,需显式指定Spark路径:

gcloud dataproc jobs submit spark \
    --cluster=your-cluster-name \
    --region=your-region \
    --properties spark.home=/opt/spark-3.5.0 \
    --class=your.main.class \
    --jars=your-job.jar

该参数会让Dataproc的作业启动器使用指定路径下的Spark二进制文件和依赖。

2. 升级注意事项与潜在陷阱

GCS连接器兼容性

  • 预装Spark的GCS连接器版本可能不兼容Spark 3.5,需替换为适配版本(例如gcs-connector-hadoop3-2.2.10及以上):
    1. 删除新Spark jars目录下旧的GCS连接器包(如果有)
    2. 将兼容的连接器jar包放入/opt/spark-3.5.0/jars/,或在作业提交时通过--jars指定
  • 确保spark-defaults.conf中保留Dataproc的GCS配置项:spark.hadoop.fs.gs.impl=com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem

自定义安装的遗漏点

  • 权限配置:新Spark目录及文件需赋予hadoop用户/组权限,否则作业运行时会出现权限拒绝错误
  • Dataproc集成工具适配:
    • 作业历史服务:默认使用预装Spark的历史服务,需重新配置指向新Spark的历史服务(详见问题3)
    • 日志采集:自定义Spark的日志路径需与Dataproc默认路径(/var/log/spark)保持一致,否则Stackdriver无法采集作业日志
  • 依赖冲突:避免将预装Spark的jars目录加入自定义Spark的classpath,防止版本冲突

3. 除SPARK_HOME外的配置与依赖处理,及Spark UI适配

需调整的配置项

  • Hadoop配置关联:在新Spark的spark-env.sh中添加:export HADOOP_CONF_DIR=/etc/hadoop/conf,确保Spark能读取Dataproc的Hadoop集群配置
  • Spark环境变量调整:
    • 在spark-env.sh中同步原预装Spark的JAVA_HOME、SPARK_DAEMON_JAVA_OPTS等参数(例如内存、GC配置)
    • 检查spark-defaults.conf,适配Spark 3.5的新配置项(例如spark.sql.legacy.timeParserPolicy默认值变更,需按需调整)
  • 第三方依赖同步:如果原集群使用了BigQuery连接器、HBase连接器等,需替换为兼容Spark 3.5的版本,放入新Spark的jars目录

确保Spark UI指向升级后的版本

由于Dataproc采用Spark on YARN模式,作业UI默认通过YARN ResourceManager跳转,只需确保作业使用自定义Spark版本运行即可。对于历史作业UI:

  1. 停止预装Spark的历史服务:sudo systemctl stop spark-history-server
  2. 在新Spark的spark-defaults.conf中配置:
    spark.eventLog.dir=gs://your-history-bucket/spark-history
    spark.history.fs.logDirectory=gs://your-history-bucket/spark-history
    
    保持与原配置的日志目录一致
  3. 启动新Spark的历史服务:/opt/spark-3.5.0/sbin/start-history-server.sh
  4. 访问Dataproc集群的UI页面,历史作业会自动指向新Spark的历史服务UI

4. 自定义Spark的已知兼容性问题

  • YARN版本匹配:必须选择与Dataproc 2.1自带Hadoop 3.3.x兼容的Spark 3.5包,否则会出现YARN资源调度的兼容性错误
  • Kerberos认证适配:如果集群启用Kerberos,需在新Spark的spark-env.sh中配置KRB5_CONFIG=/etc/krb5.conf,并确保Spark作业能获取有效的Kerberos票据
  • Dataproc元数据集成:自定义Spark作业不会自动继承集群的标签信息,需在提交作业时通过--properties spark.dataproc.cluster.id=your-cluster-id或gcloud的--labels参数手动添加,确保作业能在Dataproc控制台正常显示
  • 初始化脚本冲突:如果集群使用了Dataproc初始化脚本,需修改脚本路径指向自定义Spark的目录,避免脚本修改预装Spark的配置影响自定义版本的运行

内容的提问来源于stack exchange,提问作者Jerry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 13:50:01