【问题标题】:Dataproc: SSL certificate not found for Sqoop job connecting to external PostgreSQLDataproc:未找到用于连接到外部 PostgreSQL 的 Sqoop 作业的 SSL 证书
【发布时间】:2021-10-23 07:50:14
【问题描述】:

我需要通过 SSL 连接到 PostgreSQL 数据库。我收到了 2 个证书和 1 个密钥 -> sslrootcert=root.crt sslcert=postgresql.crt 和 sslkey=postgresql.key.der

这是我从 Dataproc 导入的配置:

import
-Dmapreduce.job.user.classpath.first=true
-Dhadoop.security.credential.provider.path=jceks://hdfs/secrets/prod/db.jceks
--connect=jdbc:postgresql://xxx.x.x/DBNAME?sslrootcert=root.crt&sslcert=postgresql.crt&sslkey=postgresql.key.der
--username=user1
--table=db1
--target-dir=gs://bucket
--delete-target-dir
--as-avrodatafile
--password-alias=password

Dataproc 找不到我的 SSL 证书: Error: java.lang.RuntimeException: java.lang.RuntimeException: org.postgresql.util.PSQLException: Could not open SSL certificate file postgresql.crt

如何将证书和密钥添加到 dataproc 以确保在连接配置中可以访问这些证书。

我应该在哪里存储 SSL 证书以便在运行作业期间在导入配置中使用它们:

--connect=jdbc:postgresql://xxx.x.x/DBNAME?sslrootcert=/???/??/root.crt&sslcert=/???/??/postgresql.crt&sslkey=/???/??/postgresql.key.der

【问题讨论】:

  • Dataproc 不包含 PostgreSQL,您是否尝试从 Dataproc 连接到外部 PostgreSQL?还有上面的代码 sn-p 是什么?它是 PySpark 工作吗?
  • @Dagang,是的,我正在尝试运行 sqoop 作业以连接到外部 PostgreSQL。数据需要从 PostgreSQL 传输到 GCS 存储桶
  • @大刚,我更新了一下评论
  • 我认为您想将其添加到 Java 的默认证书位置 ${JAVA_HOME}/jre/lib/security/cacerts,对于 Dataproc,它是 /usr/lib/jvm/adoptopenjdk-8-hotspot-amd64/jre/lib/security/cacerts

标签: postgresql ssl sqoop google-cloud-dataproc


【解决方案1】:

我认为您可以将服务器证书或其根 CA 证书添加到位于 ${JAVA_HOME}/jre/lib/security/cacerts 的 Dataproc 虚拟机,对于 Dataproc,它是 /usr/lib/jvm/adoptopenjdk-8-hotspot-amd64/jre/lib/security/cacerts。您可以使用初始化操作或创建自定义图像将证书放入目录中。

查看docquestion 了解更多详情。

【讨论】:

    猜你喜欢
    • 2022-01-11
    • 2021-12-03
    • 2020-01-03
    • 1970-01-01
    • 1970-01-01
    • 2017-09-27
    • 2023-01-29
    • 2016-12-24
    • 1970-01-01
    相关资源
    最近更新 更多