我正在使用AWS,并且是GCP的新手。我大量使用的功能之一是AWS Batch,它在提交作业时自动创建VM,并在完成作业时删除VM。是否有GCP对应方?根据我的研究,最接近的是GCP数据流。 GCP Dataflow文档将我引到了Apache Beam。但是,当我浏览此处的示例(link)时,感觉与AWS Batch完全不同。
关于在GCP中提交作业进行批处理的任何建议?我的要求是简单地从Google Cloud Storage检索数据,使用Python脚本分析数据,然后将结果返回给Google Cloud Storage。该过程可能需要一整夜,并且我不希望虚拟机在工作完成后处于空闲状态,但我正在睡觉。
答案 0 :(得分:4)
您可以使用AI平台作业来执行此操作,该平台现在可以运行任意docker映像:
gcloud ai-platform jobs submit training $JOB_NAME \
--scale-tier BASIC \
--region $REGION \
--master-image-uri gcr.io/$PROJECT_ID/some-image
如果需要,您可以定义主实例类型,甚至可以定义其他工作程序实例。他们应该考虑创建一个没有AI专业术语的兄弟产品,以便人们可以更轻松地找到此功能。
答案 1 :(得分:2)
根据“ Map AWS services to Google Cloud Platform products”页面的说法,虽然没有直接的对等词,但您可以放一些东西来使自己接近。
我不确定您是否曾经或是否可以在Docker中运行python代码。然后,Kubernetes控件可能会成功。来自GCP docs:
注意:从Kubernetes 1.7版本开始,您可以为节点池指定最小大小为零。如果不需要运行其中的实例,则可以使节点池完全缩小。但是,尽管节点池可以扩展到零大小,但是群集的整体大小却不能缩减到零节点(因为运行系统Pod总是需要至少一个节点)。
因此,如果您仍在运行其他托管实例,则可以在0上下缩放,但您的Kubernetes节点仍处于活动状态并且正在运行Pod。
我猜您已经在使用“ Creating API Requests and Handling Responses”之类的东西来获取ID,您可以验证该进程已启动,已创建实例并且有效负载正在处理中。您可以使用相同的过程来提交该过程也已完成。这样就可以完成实例的创建和python脚本的启动。
您可以使用Cloud Pub/Sub。那可以帮助您跟踪状态:可以修改python以通知任务完成吗?创建任务并启动实例时,还可以报告python作业已完成,然后启动实例拆卸过程。
降低成本的另一种方法是使用Preemptible VM Instances,以使实例以1/2的成本运行,并且无论如何最多可以运行1天。
希望有帮助。
答案 2 :(得分:1)
我认为Cron职位可以在这方面为您提供帮助,您可以在App引擎,Pub / sub和Compute引擎的帮助下实施该工作。在Google Compute Engine上进行可靠的任务调度在分布式系统(例如Google Compute Engine实例的网络)中,可靠地调度任务是一项挑战,因为任何单个实例都可能由于自动扩展或网络分区而变得不可用。
Google App Engine提供Cron服务。使用此服务进行调度,并使用Google Cloud Pub / Sub进行分布式消息传递,您可以构建应用程序以可靠地调度整个Compute Engine实例队列中的任务。
有关详细信息,您可以在此处查看:https://cloud.google.com/solutions/reliable-task-scheduling-compute-engine
答案 3 :(得分:1)
我建议签出dsub。这是Google Genomics团队最初开发的一种开源工具,用于在Google Cloud上进行批处理。
答案 4 :(得分:1)
最适合您在GCP中使用的产品是Cloud Task。我们将其用于类似的用例,即从另一台HTTP服务器检索文件,并经过一些处理将其存储在Google Cloud Storage中。
此GCP documentation详细描述了创建任务和使用任务的步骤。
您需要在Cloud Tasks中以编程方式计划任务,并且必须在App Engine中创建任务处理程序(工作者服务)。 某些限制适用于在App Engine中运行的工作程序服务
标准环境:
弹性环境:所有类型的超时时间均为60分钟。