迁移有界数据时使用哪些工具?

Which tools to use when migrating bounded data?

我最近开始从事两个不同内容管理系统之间的内容存储库迁移项目。

我们在源存储库中有大约 11 PB 的文档。我们希望通过查询源系统 API 并通过目标系统 API 保存,一次迁移所有文档。

我们将有一台独立的机器用于此迁移,并且应该能够管理(启动、停止、恢复)整个过程。

对于此类任务,您建议使用哪些平台和工具? Flink 的 Dataset API for bounded data 是否适合这项工作?

Flink 的 DataStream API 可能是比 DataSet API 更好的选择,因为流 API 可以 stopped/resumed 并且可以从故障中恢复。相比之下,DataSet API re运行s 从一开始就失败的作业,这不适合可能 运行 数天(或数周)的作业。

虽然 Flink 的流式处理 API 是为无界数据流设计的,但它也适用于有界数据集。

如果底层 CMS 可以支持并行迁移,Flink 将很容易适应这一点。 Async I/O feature 在这种情况下会有所帮助。但是,如果您打算连续进行迁移,那么我不确定您是否会从 Flink 或 Spark 这样的框架中获得很多好处。

基本上就是大卫上面说的。我认为您 运行 面临的主要挑战是跟踪进度,以便 checkpointing/savepointing(并因此重新启动)正常工作。

这假设您有一些相当有效和稳定的方法来枚举源系统中所有 1B 文档的唯一 ID。我们在之前的迁移项目中使用的一种方法(尽管不是 Flink)是使用文档创建时间戳作为 "event time".