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

Dataproc提交Sqoop作业连接Postgres报错:未找到证书路径信任锚点

问题根因

你的错误是PostgreSQL服务端使用了自签名/私有CA签发的SSL证书,而Dataproc集群节点的JRE默认信任库中没有对应的根证书,导致SSL握手时证书校验失败。你无法关闭SSL是因为PG端的pg_hba.conf配置了强制要求客户端使用SSL连接,所以不能直接移除ssl=true参数。


方案1:测试环境快速跳过证书校验(生产不推荐)

直接修改你的JDBC连接串,新增两个参数关闭证书校验,修改后如下:

JDBC_STR=jdbc:postgresql://xxxxx:5432/YYYY?ssl=true&sslmode=require&sslfactory=org.postgresql.ssl.NonValidatingFactory

注意:该方案会跳过服务端证书合法性校验,存在中间人攻击风险,仅适合测试验证使用。


方案2:生产环境标准配置

需将PG的根CA证书导入到所有Dataproc节点的JRE信任库中,步骤如下:

  • 向PostgreSQL管理员获取服务端SSL对应的根CA证书文件(一般命名为root.crt)
  • 编写Dataproc初始化脚本,内容如下,上传到你的GCS存储桶:
#!/bin/bash
# 先将你上传到GCS的证书下载到节点本地
gsutil cp gs://你的存储桶路径/root.crt /tmp/root.crt
# 导入证书到JRE默认信任库
keytool -import -alias postgres-ca -file /tmp/root.crt \
  -keystore $JAVA_HOME/jre/lib/security/cacerts \
  -storepass changeit -noprompt
  • 重新创建Dataproc集群,指定使用上述初始化脚本即可;原有集群也可以手动登录每个节点执行上述命令完成导入,集群扩容时新节点会自动执行初始化脚本导入证书。

额外注意事项

你提交作业的命令中,--password=xxxx 后面缺少空格,会导致和后面的--driver参数拼接错误,修改后对应部分应为:

--password=xxxx --driver=org.postgresql.Driver

日志开头的HADOOP变量名警告为Dataproc已知的非致命警告,不影响作业正常运行,无需处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:54:05