排查 Dataproc 作业问题

本页面提供的信息可帮助您监控和调试 Dataproc 作业,并了解 Dataproc 作业错误消息。

作业监控和调试

使用 Google Cloud CLI、Dataproc REST API 和 Google Cloud 控制台分析和调试 Dataproc 作业。

gcloud CLI

要检查正在运行的作业的状态,请执行以下操作:

gcloud dataproc jobs describe job-id \
    --region=region

如需查看作业驱动程序输出,请参阅查看作业输出

REST API

调用 jobs.get 检查作业的 JobStatus.StateJobStatus.SubstateJobStatus.detailsYarnApplication 字段。

控制台

如需查看作业驱动程序输出,请参阅查看作业输出

如需在 Logging 中查看 Dataproc 代理日志,请从 Logs Explorer 集群选择器中选择 Dataproc 集群→集群名称→集群 UUID

然后使用日志选择器选择 google.dataproc.agent 日志。

在 Logging 中查看作业日志

如果作业失败,您可以在 Logging 中访问作业日志

确定谁提交了作业

查找作业详情将显示谁在 submittedBy 字段中提交了该作业。例如,此作业输出显示 user@domain 向集群提交了示例作业。

...
placement:
  clusterName: cluster-name
  clusterUuid: cluster-uuid
reference:
  jobId: job-uuid
  projectId: project
status:
  state: DONE
  stateStartTime: '2018-11-01T00:53:37.599Z'
statusHistory:
- state: PENDING
  stateStartTime: '2018-11-01T00:33:41.387Z'
- state: SETUP_DONE
  stateStartTime: '2018-11-01T00:33:41.765Z'
- details: Agent reported job success
  state: RUNNING
  stateStartTime: '2018-11-01T00:33:42.146Z'
submittedBy: user@domain

错误消息

未获取任务

这表示主节点上的 Dataproc 代理无法从控制平面获取任务。此错误通常是由内存不足 (OOM) 或网络问题导致的。 如果作业之前已成功运行,并且您未更改网络配置设置,则 OOM 最有可能是问题的原因,该问题通常是由于提交多个并发运行的作业或驱动程序消耗大量内存的作业(例如,将大型数据集加载到内存中的作业)所导致。

未在主节点上找到任何处于活跃状态的代理

这表示主节点上的 Dataproc 代理处于非活跃状态,无法接受新作业。这通常是由于内存不足 (OOM) 或网络问题,或者主节点虚拟机健康状况不佳所导致。如果作业之前已成功运行,并且您未更改网络配置设置,则 OOM 最有可能是问题的原因,该问题通常是由于提交多个并发运行的作业或驱动程序消耗大量内存的作业(将大型数据集加载到内存中的作业)所导致。

如需解决此问题,您可以尝试执行以下操作:

未找到任务

此错误表示集群在作业运行期间被删除。您可以执行以下操作来识别执行删除操作的主账号,并确认在作业运行时发生集群删除操作:

  • 查看 Dataproc 审核日志,以识别执行删除操作的主账号。

  • 使用 Logging 或 gcloud CLI 检查 YARN 应用的最后已知状态是否为 RUNNING

    • 在 Logging 中使用以下过滤条件:
    resource.type="cloud_dataproc_cluster"
    resource.labels.cluster_name="CLUSTER_NAME"
    resource.labels.cluster_uuid="CLUSTER_UUID"
    "YARN_APPLICATION_ID State change from"
    
    • 运行 gcloud dataproc jobs describe job-id --region=REGION,然后在输出中检查 yarnApplications: > STATE
  • 如果删除集群的主账号是 Dataproc 服务代理服务账号,请检查集群是否配置了小于作业时长的自动删除时长

为避免 Task not found 错误,请使用自动化功能以确保集群在所有正在运行的作业完成之前不会被删除。

设备上已没有剩余空间

Dataproc 会将 HDFS 和暂存数据写入磁盘。此错误消息表示创建集群时磁盘空间不足。如需分析和避免此错误,请执行以下操作:

  • 检查 Google Cloud 控制台的集群详情页面上的配置标签页下列出的集群主磁盘大小。对于使用 n1-standard-4 机器类型的集群,建议的磁盘大小下限为 1000 GB;对于使用 n1-standard-32 机器类型的集群,建议的磁盘大小下限为 2 TB

  • 如果集群磁盘大小小于建议的大小,请重新创建集群,至少具有建议的磁盘大小。

  • 如果磁盘大小为建议的大小或更大,请使用 SSH 连接到集群主虚拟机,然后在主机虚拟机上运行 df -h 以检查磁盘利用率,以确定是否需要额外的磁盘空间。

  • 收集和检查磁盘指标