排查 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。这通常是由于提交了许多同时运行的作业或驱动程序会消耗大量内存的作业(将大型数据集加载到内存的作业)而导致的。您可以通过重启(停止,然后启动)Dataproc 集群或稍后重试提交作业来解决此问题。注意:停止集群会导致所有正在运行的作业失败。

未找到任务

此错误表示集群是在作业运行时被删除的。您可以执行以下操作来确定执行删除操作的正文,并确认集群删除操作是在作业运行时发生的:

  • 查看 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

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