排查 Dataproc 作业问题

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

作业监控和调试

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

gcloud CLI

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

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

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

REST API

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

控制台

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

如需在 Logging 中查看 dataproc 代理日志,请从日志浏览器集群选择器中选择 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 是最可能的原因, 提交多个并发运行的作业或作业所产生的结果 其驱动程序会占用大量内存的作业 大型数据集嵌入内存中)。要解决此问题,请重新启动 (停止,然后开始) 或者稍后重新尝试提交作业。注意:停止集群会导致所有正在运行的作业失败。

  • 找不到任务:表示在执行作业时集群已被删除 。为避免出现此错误,请在提交作业之前,通过以下方式确认集群状态为 RUNNING:在 Google Cloud 控制台的集群页面上查看集群状态、运行 gcloud dataproc clusters describe 命令,或使用 clusters.get API 请求检查 ClusterStatus.State