AWS批处理在GCP中的类比?

18

我之前使用过AWS,现在开始接触GCP。我经常使用的一个功能是AWS Batch,它可以在作业提交时自动创建虚拟机,作业完成后删除虚拟机。是否有GCP的类似功能?根据我的研究,最接近的是GCP Dataflow。GCP Dataflow文档引导我使用Apache Beam。但当我按照这里的示例进行操作 (链接) 时,感觉与AWS Batch完全不同。

有关在GCP中提交批处理作业的建议吗?我的需求只是从Google Cloud Storage检索数据,使用Python脚本分析数据,然后将结果放回Google Cloud Storage。这个过程可能需要一整晚时间,并且我不想在作业完成后让虚拟机空闲浪费资源。


这应该是被接受的答案:https://dev59.com/uFUK5IYBdhLWcg3w0Sx1#73038771 - mkumar118
6个回答

12

您可以使用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时髦用语的兄弟产品,以便人们可以更轻松地找到这个功能。


10

1
这应该是被接受的答案。 - mkumar118

8

我建议你查看dsub。这是一个开源工具,最初由Google Genomics团队开发,用于在Google Cloud上进行批处理。


有趣的工具! - GuSuku
这个工具似乎是最直接的,需要对使用AWS Batch的典型工作流程进行最少的修改。我现在没有使用GCP(难以相信已经过去1.5年了),所以实际上没有测试过这个工具,但当我回到GCP时一定会尝试它。 - Hung-Yi Wu

3

根据 "将AWS服务映射到Google Cloud Platform产品" 页面的官方说法,没有直接的等价物,但您可以组合一些东西来接近。

我不确定您是否或者是否有选项在Docker中运行Python代码。那么Kubernetes控件可能会起作用。来自 GCP文档:

注意:从Kubernetes版本1.7开始,您可以为节点池指定最小大小为零。如果节点内的实例不需要运行工作负载,则此允许您的节点池完全缩小。但是,虽然节点池可以缩小至零大小,但整个群集大小不会缩小至零个节点(因为至少需要一个节点来运行系统Pod)。

因此,如果您正在运行其他托管实例,您可以随时将其缩放到和从0,但是Kubernetes节点仍处于活动状态并运行Pods。

我猜你已经在使用像“创建API请求和处理响应”这样的东西来获取一个ID,以便验证进程已经启动,实例已经创建,并且有效载荷正在处理。你可以使用同样的过程来提交进程完成的信息。这样就完成了实例的创建和Python脚本的启动。
你可以使用Cloud Pub/Sub。这可以帮助你跟踪该状态:你能修改你的Python代码来通知任务完成吗?当你创建任务并启动实例时,你也可以报告Python作业已经完成,然后启动实例拆除过程。
另一件可以降低成本的事情是使用Preemptible VM Instances,这样实例运行的成本将减半,并且最多运行一天。
希望能有所帮助。

2

在GCP中最适合您的用例的产品是Cloud Task。我们正在使用它来检索来自另一个HTTP服务器的文件,并在一些处理后将它们存储在Google Cloud Storage中。

此GCP文档详细描述了创建任务并使用它们的步骤。

您可以在Cloud Tasks中以编程方式安排任务,并且必须在应用程序引擎中创建任务处理程序(工作服务)。某些限制对于在App Engine上运行的工作服务:

  • 标准环境:

    • 自动缩放:任务处理必须在10分钟内完成。
    • 手动和基本缩放:请求可以运行长达24小时。
  • 灵活的环境:所有类型都有60分钟的超时时间。


欢迎来到StackOverflow。请考虑在此处提供一些文档链接中与问题相关的信息,以便回答该问题。 - sao

0

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

Google App Engine提供了Cron服务。使用此服务进行调度以及使用Google Cloud Pub/Sub进行分布式消息传递,您可以构建一个应用程序,以可靠地安排计算引擎实例群中的任务。

如需详细了解,请查看此处:https://cloud.google.com/solutions/reliable-task-scheduling-compute-engine


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接