【问题标题】:Deploy small batch job using python numpy and pandas on GCP在 GCP 上使用 python numpy 和 pandas 部署小批量作业
【发布时间】:2019-10-12 05:52:45
【问题描述】:

我有一个小的日常计算工作,从 BigQuery 导入数据,使用 Python 数值计算库(pandas、numpy)处理然后将结果写入外部表(另一个项目的 Firestore 或 MySQL)

在 GCP 上部署它的推荐方式是什么?

我们的 devops 建议我们不要仅仅为了批处理作业而创建单个 vm。他们不希望自己管理 VM 基础架构,并且应该有支持批处理作业的服务。他们坚持让我使用 Dataflow。但我认为 Dataflow 的分布式特性有点矫枉过正。

非常感谢,


2019 年 10 月 14 日更新:

我正在考虑将批处理作业 docker 化并部署到 K8 集群。缺点是集群应该托管多个作业以值得设置和维护工作。有人可以就这种方法的可行性和适用性给我建议吗?


2019 年 10 月 15 日更新:

感谢 Alex Titov 在https://googlecloud-community.slack.com/archives/C0G6VB4UE/p1571032864020000 发表的评论。根据他的建议,我将把我的工作分解为多个小的 Cloud Functions 组件,并通过 Cloud Scheduler 和/或 Cloud Composer 将它们作为管道链接在一起。

【问题讨论】:

  • 您有什么要求?约束?你需要多少内存?你跑了多长时间?重试策略是什么?有很多解决方案,但根据这个元素,正确的可能是建议!
  • 感谢@guillaumeblaquiere。批处理作业的大小非常适合安装了 Python 及其数据处理和机器学习库的 VM。运行时间最长可达 1-2 小时。重试可以在应用程序逻辑中处理,而在生成 VM 时失败应该向作业所有者发送警报。

标签: python pandas google-cloud-platform batch-processing google-cloud-dataflow


【解决方案1】:

Cloud Dataflow 完全符合您的要求,因此它比虚拟机更易于管理、扩展和构建。事先只问自己几个问题,如果它们不适用,请使用 Dataflow:

  • 我是否希望仅限于特定的云提供商(在本例中为 GCP)
  • 在这个项目中,是否使用了其他云服务,或者它们只是使用来自云的基础设施(保持一致性)。另外,我们希望项目朝着什么方向发展? (使用自定义或云解决方案)
  • 我想要绝对控制这个批处理软件处理工具吗?如果是这样,您可能没有使用 Dataflow
  • 其他考虑因素,例如成本、部署时间、启动时间

如果所有答案都倾向于云服务,那么就使用它。

【讨论】:

  • 感谢@Horatiu Jeflea: - 这里我们只选择谷歌作为我们的云服务提供商。 - 方向是轻松部署许多类似的小批量作业(我们的分析师发现在 Python pandas、numpy 而不是 Apache Beam 甚至 Spark 中使用输入大小更方便) - 运行时间最长可达 1-2 小时,成本绝对是一个问题,但现在我们首先需要选择
【解决方案2】:

如果您将工作容器化,则有 2 个无服务器解决方案可以运行它。当 Cloud Run 可以持续超过 15 分钟(在路线图中,但没有发布日期)时,一天,第三个将可用

  1. 使用Cloud Build。考虑正确设置timeout。事实上,Cloud Build 是为运行任何容器而设计的。我wrote an article on this

  2. 使用AI-Platform。一位(伟大的)谷歌员工有released an article on this

这两种解决方案都很棒,您可以选择运行容器的底层虚拟机的机器类型。得益于此,您无需管理 K8S 集群并在不使用时为其付费。

【讨论】:

  • 感谢 @guillaumeblaquiere,我们的开发人员说他们会看看 Cloud Build。
猜你喜欢
  • 2021-01-22
  • 1970-01-01
  • 2019-04-24
  • 2020-05-30
  • 2018-08-22
  • 1970-01-01
  • 2021-06-15
  • 2023-03-13
  • 1970-01-01
相关资源
最近更新 更多