本页面介绍了提交,执行和完成 Dataproc 作业所涉及的步骤顺序。文中还讨论了作业限制和调试。
Dataproc 作业流程
- 用户将作业提交到 Dataproc。
- JobStatus.State 被标记为
PENDING
。
- JobStatus.State 被标记为
- 作业等待被
dataproc
代理获取。- 如果作业被获取,那JobStatus.State 会被标记为
RUNNING
。 - 如果由于代理故障、Compute Engine 网络故障或其他原因而未获取作业,则作业将被标记为
ERROR
。
- 如果作业被获取,那JobStatus.State 会被标记为
- 代理获取作业后,代理会验证 Dataproc 集群的主节点上是否有足够的可用资源来启动驱动程序。
- 如果没有足够的可用资源,作业会被延迟(限制)。
JobStatus.Substate 将作业显示为
QUEUED
,Job.JobStatus.details 提供有关延迟原因的信息。
- 如果没有足够的可用资源,作业会被延迟(限制)。
JobStatus.Substate 将作业显示为
- 如果有足够的可用资源,
dataproc
代理会启动作业驱动程序流程。- 在此阶段,通常有一个或多个应用在 Apache Hadoop YARN 中运行。但是,在驱动程序扫描完 Cloud Storage 目录或执行完其他启动作业任务之前,Yarn 应用可能无法启动。
dataproc
代理会定期向 Dataproc 发送有关作业进度、集群指标以及与作业关联的 Yarn 应用的最新动态(请参阅作业监控和调试)。- Yarn 应用完成。
- 在驱动程序执行任何作业完成任务(例如实质化集合)时,作业会继续被报告为
RUNNING
。 - 主线程中未处理或未捕获的故障可能会使驱动程序处于僵化状态(标记为
RUNNING
,但不提供与故障原因有关的信息)。
- 在驱动程序执行任何作业完成任务(例如实质化集合)时,作业会继续被报告为
- 驱动程序退出。
dataproc
代理向 Dataproc 报告作业已完成。- Dataproc 将作业报告为
DONE
。
- Dataproc 将作业报告为
作业并发
在创建集群时,您可以使用 dataproc:dataproc.scheduler.max-concurrent-jobs 集群属性配置并发 Dataproc 作业数量的上限。如果未设置此属性值,则并发作业数量上限的计算公式为 max((masterMemoryMb - 3584) / masterMemoryMbPerJob, 5)
。masterMemoryMb
由主虚拟机的机器类型确定。masterMemoryMbPerJob
默认为 1024
,不过您可以在创建集群时使用 dataproc:dataproc.scheduler.driver-size-mb 集群属性对其进行配置。
后续步骤
- 请参阅排查作业问题