【问题标题】:Migrating from Google App Engine Mapreduce to Apache Beam从 Google App Engine Mapreduce 迁移到 Apache Beam
【发布时间】:2021-01-16 20:25:49
【问题描述】:

我一直是 Google App Engine 的 Mapreduce 库的长期用户,用于处理 Google Datastore 中的数据。 Google 不再支持它,它在 Python 3 中根本不起作用。我正在尝试将我们较旧的 Mapreduce 作业迁移到 Google 的 Dataflow / Apache Beam 运行器,但the official documentation 很糟糕,它只是描述了 Apache Beam,它确实如此不告诉你如何迁移。

尤其是这样的问题:

  1. 在 Mapreduce 中,作业将在您现有的已部署应用程序上运行。但是在 Beam 中,您必须创建和部署自定义 Docker 映像才能为 Dataflow 构建环境,对吗?
  2. 要在 Mapreduce 中创建一个新的作业模板,您只需要编辑一个 yaml 文件并部署它。要在 Apache Beam 中创建一个,您需要创建自定义 runner 代码,一个部署到谷歌云存储的模板文件,并与 docker 镜像链接,对吗?

以上内容准确吗?如果是这样,通常情况下使用 Dataflow 比使用 Mapreduce 困难得多吗?是否有任何库或提示可以使这更容易?

【问题讨论】:

    标签: google-app-engine mapreduce apache-beam google-dataflow


    【解决方案1】:
    1. 从技术角度来说,这是正在发生的事情,但除非您有一些特定的高级用例,否则您不需要手动设置任何自定义 Docker 映像。 Dataflow 在后台做一些工作来在自定义容器上运行您的用户代码和依赖项,以便它可以在他们的 VM 上执行您的用户编写的代码和依赖项。

    2. 在 Dataflow 中,编写作业模板主要需要使用您选择的语言(Java 或 Python)编写一些管道代码,并可能编写一些元数据。编写代码后,创建和暂存模板本身与运行普通 Dataflow 作业没有太大区别。有一个page documenting the process

    我同意 Mapreduce 到 Beam 迁移的页面非常稀疏且无益,尽管我想我明白为什么会这样。从 Mapreduce 迁移到 Beam 并不是简单的 1:1 迁移,只是语法发生了变化。这是一个不同的管道模型,很可能需要在一定程度上重写您的代码以进行迁移。完全涵盖所有内容的迁移指南最终会重复大多数现有文档。

    因为听起来您的大部分问题都与设置和执行 Beam 管道有关,所以我鼓励您从 Dataflow quickstart in your chosen language 开始。它不会教您如何编写管道,但会教您如何设置环境以编写和运行管道。快速入门中的链接可将您引导至 Apache Beam 教程,这些教程教您 Beam API 以及如何编写自己的管道,这些链接对于在 Beam 中重写您的 Mapreduce 代码很有用。

    【讨论】:

    • Beam 的设置和使用比 mapreduce 复杂得多。我知道 Beam 提供了更多的功能和灵活性,但我会想念 mapreduce。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-22
    • 2012-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多