0

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

特别是,问题是这样的:

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

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

4

1 回答 1

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

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

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

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

于 2021-01-20T02:32:29.020 回答