排查 Dataproc Metastore 连接问题

本页面介绍了如何诊断和解决将 Dataproc 集群或 Dataproc Serverless 工作负载连接到受管理的 Dataproc Metastore 服务时出现的常见连接问题。

常见症状和错误消息

当 Dataproc 遇到与 Dataproc Metastore 的连接问题时,您可能会看到以下错误:

  • Unable to connect to Hive Metastore
  • Connection refused
  • Host unreachable
  • javax.jdo.JDOException或类似的数据库连接错误
  • 尝试列出数据库或表时,或者提交与 Metastore 交互的 Spark 或 Hive 作业时,出现超时错误。

常见原因和问题排查步骤

本部分概述了 Dataproc Metastore 连接问题发生的常见原因,并针对每种原因提供了具体的问题排查步骤。

1. 网络配置问题

网络配置错误是导致 Dataproc 工作负载与 Dataproc Metastore 之间连接失败的最常见原因。

  • Virtual Private Cloud 网络对等互联或 Private Service Access

    • Dataproc Metastore 实例通常通过 Virtual Private Cloud 网络对等互连连接(具体而言,是专用服务访问通道)使用专用 IP 地址范围进行访问。
    • 验证对等互连状态:验证 Dataproc 工作负载的虚拟私有云网络与 Dataproc Metastore 的服务提供方网络之间的虚拟私有云对等互连连接是否处于有效且正常的状态。您可以在Google Cloud 控制台中,依次前往 VPC 网络 > VPC 网络对等互连,查看此信息。
    • IP 地址范围分配:确认您的虚拟私有云网络中已为专用服务访问通道分配足够的 IP 地址范围。
  • 防火墙规则

    • 验证 Dataproc 工作负载的 Virtual Private Cloud 网络中的防火墙规则是否允许在 Dataproc Metastore 使用的端口(默认值为 9083)上发送出站流量。
    • 验证服务提供方网络侧没有过于严格的入站规则,以免阻止来自 Dataproc 工作负载的流量。
  • DNS 解析

    • 确认 Metastore 端点主机名(例如,your-metastore-endpoint.us-central1.dataproc.cloud.google.com)是否能从 Dataproc 集群或 Dataproc 无服务器环境中正确解析为专用 IP 地址。
    • Cloud DNS 专用区域或 DNS 转发方面的问题可能会导致解析失败。

问题排查步骤(网络)

  1. 检查 Dataproc Metastore 连接信息
    • 在 Google Cloud 控制台中,前往 Dataproc Metastore,然后选择您的实例。
    • 记下端点 URI 和它所连接的网络
  2. 验证 Virtual Private Cloud 对等互连或专用服务访问通道
    • 前往 VPC 网络 > VPC 网络对等互连。确认与 servicenetworking-googleapis-com 的对等互连连接为 ACTIVE
  3. 使用 Connectivity Tests:使用 Google Cloud的 Connectivity Tests 诊断从 Dataproc 工作负载子网中的 Compute Engine 虚拟机到 Dataproc Metastore 端点 IP 地址和端口的网络路径。
  4. 检查防火墙日志:如果怀疑是防火墙规则的问题,请分析Cloud 防火墙日志,看看是否有连接被拒绝。

2. IAM 权限

Dataproc 工作负载使用的服务账号需要具有适当的 IAM 角色才能访问 Dataproc Metastore。

  • 所需角色:服务账号必须具有 Dataproc Metastore 实例或项目的 Dataproc Metastore User 角色 (roles/datametastore.user)。
  • 服务代理权限:如果 Dataproc 隐式访问 Metastore,请验证 Dataproc 服务代理是否具有足够的权限。

问题排查步骤 (IAM)

  1. 确定服务账号:确定 Dataproc 集群或 Dataproc Serverless 批处理作业使用的服务账号。
  2. 验证 IAM 角色:在 Google Cloud 控制台中,前往 IAM 和管理 > IAM。 检查为 Dataproc Metastore 项目或实例中的服务账号分配的角色。如果缺少 roles/datametastore.user,则授予该权限。
  3. 如需详细了解服务账号配置,请参阅:

3. 端点配置不正确

必须使用正确的 Dataproc Metastore 端点 URI 配置 Dataproc 工作负载。

问题排查步骤(端点)

  1. 验证端点 URI:仔细检查 hive.metastore.uris Spark 属性或用于在工作负载提交中指定 Dataproc Metastore 端点的任何其他配置。验证它是否与 Dataproc Metastore 实例详情中的端点 URI 一致。

4. 其他注意事项

  • Metastore 状态:在 Google Cloud 控制台中,验证您的 Dataproc Metastore 实例是否处于 HEALTHY 状态。如果 Metastore 不正常,请先解决其内部问题。
  • 版本兼容性:虽然很少见,但请验证您的 Dataproc 映像版本与 Dataproc Metastore 版本之间是否存在已知的兼容性问题。
  • SQL 代理与托管服务:如果您使用 cloud-sql-proxy.sh 初始化操作将 Cloud SQL 用作 Metastore,请参阅 Cloud SQL 代理初始化操作 README 中的相关问题排查信息。

后续步骤