排查 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 集群或稍后重新尝试提交作业。注意:停止集群会导致所有正在运行的作业失败。

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