本页面列出了导致 Dataproc 作业调度延迟的常见原因, 并提供有助于避免这些错误的信息。
概览
以下是导致 Dataproc 作业延迟的常见原因 (已遭限制):
- 正在运行的作业过多
- 系统内存用量高
- 可用内存不足
- 超出速率限制
通常,作业延迟消息将按以下格式发出:
Awaiting execution [SCHEDULER_MESSAGE]"
以下部分提供了针对具体问题的可能原因和解决方案 作业延迟场景
正在运行的作业过多
调度器消息:
Throttling job ### (and maybe others): Too many running jobs (current=xx max=xx)
原因:
已超出基于主虚拟机内存的并发作业数上限( 作业驱动程序在 Dataproc 集群主服务器虚拟机上运行)。 默认情况下,Dataproc 为每个应用预留 3.5GB 的内存 每 GB 1 个作业
示例:n1-standard-4
机器类型的内存为 15GB
。为开销预留了 3.5GB
,
还剩 11.5GB
个。向下舍入为整数,11GB
可用于最多 11 个并发作业。
解决方案:
监控日志指标(例如 CPU 用量和内存)以估算作业要求。
创建作业集群时:
系统内存过高或可用内存不足
调度器消息:
Throttling job xxx_____JOBID_____xxx (and maybe others): High system memory usage (current=xx%)
Throttling job xxx_____JOBID_____xxx (and maybe others): Not enough free memory (current=xx min=xx)
原因:
默认情况下,Dataproc 代理会在发生以下情况时限制作业提交:
内存使用量达到 90% (0.9)
)。达到此限制后,
。
在集群上安排另一个作业所需的可用内存量 是不够的。
解决方案:
创建集群时:
已超出作业速率限制
调度器消息:
Throttling job xxx__JOBID___xxx (and maybe others): Rate limit
原因:
Dataproc 代理已达到作业提交速率限制。
解决方案:
- 默认情况下,Dataproc 代理作业提交次数限制为
1.0 QPS
,您可以在创建集群时将其设置为其他值 使用dataproc:dataproc.scheduler.job-submission-rate
集群属性。
查看作业状态。
如需查看作业状态和详细信息,请参阅 作业监控和调试。