使用 gcpdiag
工具
gcpdiag
是一种开源工具。它不是官方支持的 Google Cloud 产品。
您可以使用 gcpdiag
工具来帮助识别和修复 Google Cloud
项目问题。有关详情,请参阅
GitHub 上的 gcpdiag 项目。
gcpdiag
工具可帮助您发现以下 Dataproc
排查集群创建问题:
- 缺货错误:评估 Logs Explorer 日志,以发现以下区域中的缺货情况 区域和可用区
- 配额不足:检查 Dataproc 中的配额可用性 集群项目。
- 网络配置不完整:执行网络连接测试。
包括检查必要的防火墙规则以及外部和内部 IP
配置。如果集群已被删除,则
gcpdiag
工具无法 执行网络连接检查。 - 跨项目配置不正确:检查跨项目服务 账号,并审核其他角色和组织政策的执行情况。
- 缺少共享 VPC IAM 角色:如果 Dataproc 集群使用 共享 VPC 网络,检查是否添加所需服务 账号角色。
- 初始化操作失败:评估 Logs Explorer 日志来发现初始化操作脚本的失败和超时。
如需查看 gcpdiag
个集群创建步骤的列表,请参阅
可能的步骤。
运行 gcpdiag
命令
您可以在以下位置通过 Cloud Shell 运行 gcpdiag
命令:
Google Cloud 控制台或 Docker 容器中。
Google Cloud 控制台
- 完成,然后复制以下命令。
- 打开 Google Cloud 控制台并激活 Cloud Shell。 打开 Cloud 控制台
- 粘贴复制的命令。
- 运行
gcpdiag
命令,该命令会下载gcpdiag
Docker 映像。 然后执行诊断检查。如果适用,请按照输出说明操作 修复未通过的检查。
gcpdiag runbook dataproc/cluster-creation \
--project=PROJECT_ID \
--parameter cluster_name=CLUSTER_NAME \
--parameter OPTIONAL_FLAGS
Docker
您可以
gcpdiag
使用封装,gcpdiag
Docker 容器。Docker 或
必须安装 Podman。
- 复制以下命令并在本地工作站上运行。
curl https://gcpdiag.dev/gcpdiag.sh >gcpdiag && chmod +x gcpdiag
- 执行
gcpdiag
命令。./gcpdiag runbook dataproc/cluster-creation \ --project=PROJECT_ID \ --parameter cluster_name=CLUSTER_NAME \ --parameter OPTIONAL_FLAGS
查看此 Runbook 的可用参数。
替换以下内容:
- PROJECT_ID:包含资源的项目的 ID
- CLUSTER_NAME:目标的名称 项目中的 Dataproc 集群
- OPTIONAL_PARAMETERS:添加一个或多个
以下可选参数。如果需要执行上述操作,
集群已被删除
cluster_uuid
:目标 Dataproc 的 UUID 集群service_account
:Dataproc 集群 虚拟机服务账号subnetwork
:Dataproc 集群子网 完整 URI 路径internal_ip_only
:True 或 Falsecross_project
:跨项目 ID(如果 Dataproc 集群使用虚拟机服务账号 在其他项目中
实用标志:
--project
:PROJECT_ID--universe-domain
:如果适用, 值得信赖的合作伙伴主权云 托管资源的域名--parameter
或-p
:Runbook 参数
如需查看所有 gcpdiag
工具标志的列表和说明,请参阅
gcpdiag
使用说明。
了解并修复集群创建错误
本部分列出了 Dataproc 错误消息及其常见原因 和解决方案。
操作超时:在至少 2 个必需 datanode/节点管理器中,只有 0 个正在运行。
原因:主节点无法创建集群,因为它不能与工作器节点通信。
解决方案:
- 检查防火墙规则警告。
- 确保防火墙规则已正确设置。如需了解详情,请参阅 默认 Dataproc 防火墙规则概览。
- 执行连接测试 来决定 来阻止主节点与工作器节点之间的通信
“
projects/{projectId}/regions/{region}/subnetworks/{subnetwork}
”所需的compute.subnetworks.use
权限原因:当您尝试设置 Dataproc 时,可能会发生此错误 另一个项目中的 VPC 网络与 Dataproc 服务代理 服务账号对共享 VPC 没有必要的权限 托管该网络的项目
解决方案:按照创建使用另一个项目中的 VPC 网络的集群中列出的步骤。
可用区“
projects/zones/{zone}
”没有足够的资源来处理请求“(resource type:compute)
”原因:用于创建集群的可用区没有足够的资源。
解决方案:
- 在其他可用区创建集群。
- 使用 Dataproc 自动选择可用区 功能。
已超出配额错误
CPUS/CPUS_ALL_REGIONS 配额不足
“DISKS_TOTAL_GB”不足配额
“IN_USE_ADDRESSES”数量不足配额原因:您的 CPU、磁盘或 IP 地址请求超出了您的可用配额。
解决方案:从 Google Cloud 控制台。
初始化操作失败
原因:创建集群期间提供的初始化操作安装失败。
解决方案:
- 请参阅初始化操作注意事项和指南。
- 检查输出日志。错误消息应提供 Cloud Storage 中日志的链接。
未能初始化节点“{cluster-name}”:{component}
原因:Dataproc 组件未能初始化。
解决方案:请参阅:
集群创建失败:IP 地址空间已用尽
原因:预配请求的集群节点所需的 IP 地址空间为 不可用。
解决方案:
- 在其他子网或网络上创建集群。
- 减少网络用量以释放 IP 地址空间。
- 等待网络上有足够的 IP 空间。
初始化脚本错误消息:代码库 REPO_NAME 不再有发布文件
原因:Debian oldstable 反向移植存储库被完全清除。
解决方案:
在初始化脚本中运行
apt-get
的代码之前,添加以下代码。oldstable=$(curl -s https://deb.debian.org/debian/dists/oldstable/Release | awk '/^Codename/ {print $2}'); stable=$(curl -s https://deb.debian.org/debian/dists/stable/Release | awk '/^Codename/ {print $2}'); matched_files="$(grep -rsil '\-backports' /etc/apt/sources.list*)" if [[ -n "$matched_files" ]]; then for filename in "$matched_files"; do grep -e "$oldstable-backports" -e "$stable-backports" "$filename" || \ sed -i -e 's/^.*-backports.*$//' "$filename" done fi
网络无法访问:dataproccontrol-REGION.googleapis.com/...*
原因:Dataproc 集群 VPC 网络可能没有 路由至互联网。 在集群虚拟机上运行的 Dataproc 代理 需要连接到互联网的路由才能访问 Dataproc Control API 来获取作业和报告状态。系统生成的默认路由 但互联网上的文件可能已被删除
解决方案:
将连接到互联网的路由添加到集群 VPC 网络:
0.0.0.0/0
(适用于 IPv4)和 适用于 IPv6 的::/0
和--next-hop-gateway=default-internet-gateway
。 添加防火墙规则以实现访问权限控制。