Google Dataflow 限制所有工作的工人总数

问题描述 投票:0回答:1

我们正在使用 Google Dataflow (Apache Beam + Java) 运行批处理数据作业(连接到 BigQuery)。为了限制成本,我们使用 BigQuery 预留(例如,预留 3000 个(任意数量)个槽位)。

问题是,当多个作业同时运行时,我们无法控制所有作业总共会产生多少个工作线程。这可能会导致 BigQuery 抛出类似

Exceeded rate limits: too many api requests per user per method for this user_method (JobService.query)
的错误。

有没有办法设置 Google Dataflow 中可以在所有作业中使用的工作人员总数?

根据我的研究,我们可以使用以下方式:

  1. Dataflow 将并发运行作业限制为 25,我们可以请求更改此值。
  2. 启动作业时使用
    --maxNumWorkers=120
    标志 因此 25 * 120 = 3000 名工人,并且不会超出限制。但这并不理想,因为有些工作可能无法充分利用所有 120 名工人。

因此,我想找到一个更直接的解决方案。

java google-cloud-dataflow apache-beam
1个回答
0
投票

下面的文档中有一个表格描述了您可以设置来管理资源利用率的管道选项。

可以看到maxnumworkers中提到了

如果未指定,Dataflow 服务默认确定适当的工作人员数量。

© www.soinside.com 2019 - 2024. All rights reserved.