【问题标题】:How to copy Big Data from GCS to S3?如何将大数据从 GCS 复制到 S3?
【发布时间】:2019-07-10 21:37:30
【问题描述】:

如何将几TB的数据从GCS复制到S3?

GCS 中有一个不错的“传输”功能,允许将数据从 S3导入到 GCS。但是如何进行 export,另一种方式(除了将数据生成作业移动到 AWS)?

问:为什么不gsutil? 是的,gsutil 支持s3://,但传输受到该机器网络吞吐量的限制。并行如何更容易?

我尝试了 Dataflow(现在又名 Apache Beam),它可以正常工作,因为它很容易在一百个节点上进行并行化,但看不到有简单的“只需将其从这里复制到那里”功能。

更新:此外,Beam 似乎在启动管道之前在单个线程中计算本地计算机上的源文件列表。就我而言,这大约需要 40 分钟。将它分发到云上会很好。

更新 2:到目前为止,我倾向于使用两个自己的脚本:

  • 脚本 A:列出所有要传输的对象,并将每个对象的传输任务排入 PubSub 队列。
  • 脚本 B:执行这些传输任务。在云(例如 Kubernetes)上运行,许多实例并行

缺点是它编写的代码可能包含错误等,而不是使用像 GCS "Transfer" 这样的内置解决方案。

【问题讨论】:

    标签: amazon-s3 google-cloud-storage google-cloud-dataflow


    【解决方案1】:

    您可以使用在 Compute Engine(或 EC2)实例上运行的 gsutil(其可用网络带宽可能比您的本地计算机更高)。 使用 gsutil -m cp 将并行复制对象,但仍将按顺序复制单个对象。

    【讨论】:

    • 谢谢,但是如何让那些多个GCE实例来处理不同的组对象呢?如果我只运行gsutil -m cp,它们都会复制相同的文件。也许gsutil -m rsync 没有竞争(我对此表示怀疑,因为它首先构建了一个要同步的对象列表),但是 N 个 GCE 实例仍将检查/传输同一个对象 N 次。
    • 你可以使用类似的方式在多个实例之间分片副本: gsutil -m cp gs://your-bucket/a* s3://your-bucket gsutil -m cp gs://your- bucket/b* s3://your-bucket 等,您可以在单独的实例上运行每个命令。以上假设您的对象名称按英文字母第一个字母大致均匀分布。如果没有,您可能需要调整命令。
    猜你喜欢
    • 2016-10-15
    • 2020-01-04
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    • 1970-01-01
    • 2018-04-04
    • 2018-09-12
    • 1970-01-01
    相关资源
    最近更新 更多