Kubernetes 上的批处理
Batch Processing on Kubernetes
这里有人有在 kubernetes 上进行批处理(例如 spring 批处理)的经验吗?这是个好主意吗?如果我们使用 kubernetes 自动缩放功能,如何防止批处理处理相同的数据?谢谢。
Anyone here have experience about batch processing (e.g. spring batch) on kubernetes ? Is it good idea ?
对于 Spring Batch,我们(Spring Batch 团队)确实有一些经验,我们将在以下谈话中分享:
运行 kubernetes 上的批处理作业可能很棘手:
- pods可能在处理中途被不同节点的k8s重新调度
- cron 作业可能会被触发 twice
- 等等
这需要开发人员进行额外的重要工作,以确保批处理应用程序具有容错能力(对节点故障、pod 重新调度等具有弹性)并且可以防止在集群环境中重复执行作业。
Spring Batch 会为您处理这些额外的工作,并且可以成为 运行 在 k8s 上批处理工作负载的不错选择,原因如下:
- 成本效率:Spring批处理作业在外部数据库中维护它们的状态,这使得可以从上次保存点重新启动它们 在 job/node 失败或 pod 重新调度的情况下
- 稳健性:由于集中式作业存储库,可以防止重复作业执行
- 容错: Retry/Skip 在出现暂时性错误的情况下失败的项目,例如对可能暂时关闭或正在重新安排的 Web 服务的调用云环境
我写了一篇博客post,其中我用代码示例详细解释了所有这些方面。您可以在这里找到它:Spring Batch on Kubernetes: Efficient batch processing at scale
How to prevent batch processing process same data if we use kubernetes auto scaling feature ?
使每个作业处理不同的数据集是可行的方法(例如,每个文件一个作业)。但是您可能对不同的模式感兴趣,请参阅 k8s 文档中的 Job Patterns。
这里有人有在 kubernetes 上进行批处理(例如 spring 批处理)的经验吗?这是个好主意吗?如果我们使用 kubernetes 自动缩放功能,如何防止批处理处理相同的数据?谢谢。
Anyone here have experience about batch processing (e.g. spring batch) on kubernetes ? Is it good idea ?
对于 Spring Batch,我们(Spring Batch 团队)确实有一些经验,我们将在以下谈话中分享:
运行 kubernetes 上的批处理作业可能很棘手:
- pods可能在处理中途被不同节点的k8s重新调度
- cron 作业可能会被触发 twice
- 等等
这需要开发人员进行额外的重要工作,以确保批处理应用程序具有容错能力(对节点故障、pod 重新调度等具有弹性)并且可以防止在集群环境中重复执行作业。
Spring Batch 会为您处理这些额外的工作,并且可以成为 运行 在 k8s 上批处理工作负载的不错选择,原因如下:
- 成本效率:Spring批处理作业在外部数据库中维护它们的状态,这使得可以从上次保存点重新启动它们 在 job/node 失败或 pod 重新调度的情况下
- 稳健性:由于集中式作业存储库,可以防止重复作业执行
- 容错: Retry/Skip 在出现暂时性错误的情况下失败的项目,例如对可能暂时关闭或正在重新安排的 Web 服务的调用云环境
我写了一篇博客post,其中我用代码示例详细解释了所有这些方面。您可以在这里找到它:Spring Batch on Kubernetes: Efficient batch processing at scale
How to prevent batch processing process same data if we use kubernetes auto scaling feature ?
使每个作业处理不同的数据集是可行的方法(例如,每个文件一个作业)。但是您可能对不同的模式感兴趣,请参阅 k8s 文档中的 Job Patterns。