很明显,抢占式实例比非抢占式实例便宜。每天有 400-500 个数据流作业在我的组织项目中运行。其中有些工作对时间敏感,而另一些则不然。那么有什么方法可以将抢占式实例用于非时间限制作业,这将减少我整体管道执行的成本。目前,我正在使用以下指定的配置运行数据流作业。
options.setTempLocation("gs://temp/");
options.setRunner(DataflowRunner.class);
options.setTemplateLocation("gs://temp-location/");
options.setWorkerMachineType("n1-standard-4");
options.setMaxNumWorkers(20);
options.setWorkerCacheMb(2000);
我无法找到任何具有抢占式实例设置的管道选项。
是的,可以通过云数据流(文档(中的灵活资源调度来实现。请注意,需要考虑一些事项:
-
延迟执行:作业已计划且不会立即执行(可以看到数据流作业的新
QUEUED
状态(。当资源在六小时内可用时,它们会机会运行。这使得 FlexRS 适合降低非时间关键型工作负载的成本。此外,请务必在发送作业之前验证代码。
批处理作业: - 截至目前,它仅接受批处理作业,并且需要启用自动缩放:
无法设置自动缩放算法 = 无
- 数据流随机播放:需要启用它。如果是这样,则不会在附加到 VM 的永久磁盘上存储任何数据。这样,当发生抢占并重新声明资源时,无需重新分发数据。 地域
- :根据上项,只能选择支持数据流洗牌的地域。在此处列出,新区域的开通将在发行说明中公布。截至目前,区域会自动在区域内选择。
- 计算机类型:FlexRS 当前支持
n1-standard-2
(默认(和n1-highmem-16
。 - SDK:Java 或 Python 需要2.12.0或更高版本。 配额
- :配额是预先保留的(即排队的作业也会消耗配额(。
为了运行它,请使用--flexRSGoal=COST_OPTIMIZED
并确保考虑到其余参数符合 FlexRS 需求。
统一折扣率应用于 FlexRS 作业,您可以在以下链接中比较定价详细信息。
请注意,您可能会在非英语文档中看到 Beta 免责声明,但正如发行说明中所述,它已正式发布。