无论如何我可以为数据流作业使用抢占式实例吗?
Is there anyway I can use preemptible instance for dataflow jobs?
很明显,抢占式实例比非抢占式实例便宜。在我的组织项目中,每天有 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);
我找不到任何具有可抢占实例设置的管道选项。
是的,可以通过云数据流 (docs) 中的 灵活资源调度 来实现。请注意,有一些事情需要考虑:
- 延迟执行:作业已安排但不会立即执行(您可以看到数据流作业的新
QUEUED
status)。当资源在 六小时 window 内可用时,它们是 运行 机会主义的。这使得 FlexRS 适合降低 非时间关键型工作负载 的成本。另外,请务必在发送作业之前验证您的代码。
- 批处理作业:截至目前它只接受批处理作业并且需要启用自动缩放:
You cannot set autoscalingAlgorithm=NONE
- Dataflow Shuffle:需要启用。在这种情况下,没有数据存储在附加到 VM 的永久性磁盘上。这样,当发生抢占并收回资源时,无需重新分配数据。
- 地区:根据上一项,只能选择支持Dataflow Shuffle的地区。列表 here, turn-up for new regions will be announced in the release notes。截至目前,区域是在区域内自动选择的。
- 机器类型:FlexRS目前支持
n1-standard-2
(默认)和n1-highmem-16
.
- SDK:需要 2.12.0 或 Java 或 Python.[=61= 的更新版本]
- 配额:配额是预先保留的(即排队作业也消耗配额)。
为了 运行 它,使用 --flexRSGoal=COST_OPTIMIZED
并确保考虑到其余参数符合FlexRS需求。
FlexRS 作业采用统一折扣率,您可以在following link.
中比较定价详情
请注意,您可能会在非英语文档中看到 Beta 免责声明,但正如 release notes 中所阐明的那样,它是 普遍可用的。
很明显,抢占式实例比非抢占式实例便宜。在我的组织项目中,每天有 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);
我找不到任何具有可抢占实例设置的管道选项。
是的,可以通过云数据流 (docs) 中的 灵活资源调度 来实现。请注意,有一些事情需要考虑:
- 延迟执行:作业已安排但不会立即执行(您可以看到数据流作业的新
QUEUED
status)。当资源在 六小时 window 内可用时,它们是 运行 机会主义的。这使得 FlexRS 适合降低 非时间关键型工作负载 的成本。另外,请务必在发送作业之前验证您的代码。 - 批处理作业:截至目前它只接受批处理作业并且需要启用自动缩放:
You cannot set autoscalingAlgorithm=NONE
- Dataflow Shuffle:需要启用。在这种情况下,没有数据存储在附加到 VM 的永久性磁盘上。这样,当发生抢占并收回资源时,无需重新分配数据。
- 地区:根据上一项,只能选择支持Dataflow Shuffle的地区。列表 here, turn-up for new regions will be announced in the release notes。截至目前,区域是在区域内自动选择的。
- 机器类型:FlexRS目前支持
n1-standard-2
(默认)和n1-highmem-16
. - SDK:需要 2.12.0 或 Java 或 Python.[=61= 的更新版本]
- 配额:配额是预先保留的(即排队作业也消耗配额)。
为了 运行 它,使用 --flexRSGoal=COST_OPTIMIZED
并确保考虑到其余参数符合FlexRS需求。
FlexRS 作业采用统一折扣率,您可以在following link.
中比较定价详情请注意,您可能会在非英语文档中看到 Beta 免责声明,但正如 release notes 中所阐明的那样,它是 普遍可用的。