GCP 中的 AWS Batch 模拟?

AWS Batch analog in GCP?

我使用的是 AWS 并且是 GCP 的新手。我经常使用的一项功能是 AWS Batch,它会在提交作业时自动创建一个 VM,并在作业完成后删除该 VM。是否有 GCP 对应物?根据我的研究,最接近的是 GCP Dataflow。 GCP 数据流文档让我找到了 Apache Beam。但是当我浏览这里的示例时 (link),感觉与 AWS Batch 完全不同。

关于在 GCP 中提交批处理作业有什么建议吗?我的要求是简单地从 Google Cloud Storage 检索数据,使用 Python 脚本分析数据,然后将结果放回 Google Cloud Storage。这个过程可能需要一整夜,我不希望虚拟机在工作完成但我正在睡觉时空闲。

根据“Map AWS services to Google Cloud Platform products”页面的官方说法,没有直接的等价物,但您可以将一些东西放在一起,这可能会让您更接近。

我不确定您是否可以选择 运行 您的 python 代码 Docker。那么 Kubernetes 控件可能会起到作用。来自 GCP docs:

Note: Beginning with Kubernetes version 1.7, you can specify a minimum size of zero for your node pool. This allows your node pool to scale down completely if the instances within aren't required to run your workloads. However, while a node pool can scale to a zero size, the overall cluster size does not scale down to zero nodes (as at least one node is always required to run system Pods).

因此,如果您正在 运行 连接其他托管实例,您可以向上或向下扩展到 0,但您的 Kubernetes 节点仍然处于活动状态并且 运行 连接 pods.

我猜您已经在使用“Creating API Requests and Handling Responses”之类的东西来获取 ID,您可以验证进程是否已启动、实例是否已创建以及负载是否正在处理。您可以使用相同的过程来提交该过程也已完成。这负责 python 脚本的实例创建和启动。

您可以使用 Cloud Pub/Sub。这可以帮助您跟踪它的状态:您可以修改 python 以通知任务完成吗?当您创建任务并启动实例时,您还可以报告 python 作业已完成,然后启动实例拆卸过程。

您可以做的另一件事是使用 Preemptible VM Instances 来降低成本,这样实例 运行 的成本为 1/2,并且无论如何 运行 最多可以使用 1 天。

希望对您有所帮助。

我认为 Cron 作业可以在这方面为您提供帮助,您可以借助 App 引擎、Pub/sub 和计算引擎来实现它。 Google Compute Engine 上的可靠任务调度在分布式系统中,例如 Google Compute Engine 实例的网络,可靠地调度任务具有挑战性,因为任何单个实例都可能由于自动缩放或网络分区而变得不可用。

Google App Engine 提供 Cron 服务。使用此服务进行调度并使用 Google 云 Pub/Sub 进行分布式消息传递,您可以构建一个应用程序来跨 Compute Engine 实例队列可靠地调度任务。

要查看详细信息,请在此处查看:https://cloud.google.com/solutions/reliable-task-scheduling-compute-engine

我建议查看 dsub。它是一个开源工具,最初由 Google 基因组学团队开发,用于在 Google 云上进行批处理。

最适合您在 GCP 中的用例的产品是 Cloud Task。我们将它用于类似的用例,我们从另一个 HTTP 服务器检索文件,并在经过一些处理后将它们存储在 Google 云存储中。

此 GCP documentation 详细描述了创建任务和使用它们的步骤。

您可以在 Cloud Tasks 中以编程方式安排任务,并且必须在 App Engine 中创建任务处理程序(辅助服务)。 在 App Engine 中

工作人员服务的某些限制 运行ning
  • 标准环境:

    • 自动缩放:任务处理必须在 10 分钟内完成。
    • 手动和基本缩放:请求最多 运行 24 小时。
  • 弹性环境:所有类型都有 60 分钟超时。

您可以使用 AI Platform Jobs 执行此操作,它现在可以 运行 任意 docker 图片:

gcloud ai-platform jobs submit training $JOB_NAME \
       --scale-tier BASIC \ 
       --region $REGION \ 
       --master-image-uri gcr.io/$PROJECT_ID/some-image

如果需要,您可以定义主实例类型甚至额外的工作实例。他们应该考虑创建一个没有 AI 流行语的同级产品,这样人们就可以更容易地找到这个功能。