Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 如何将大数据从GCS复制到S3?_Amazon S3_Google Cloud Storage_Google Cloud Dataflow - Fatal编程技术网

Amazon s3 如何将大数据从GCS复制到S3?

Amazon s3 如何将大数据从GCS复制到S3?,amazon-s3,google-cloud-storage,google-cloud-dataflow,Amazon S3,Google Cloud Storage,Google Cloud Dataflow,如何将几TB的数据从GCS复制到S3 GCS中有一个很好的“传输”功能,允许将数据从S3导入GCS。但是,如何以另一种方式导出(除了将数据生成作业转移到AWS之外) 问:为什么不gsutil? 是的,gsutil支持s3://,但传输受到该机器网络吞吐量的限制。如何更容易地并行进行 我尝试了Dataflow(现在又称apachebeam),这很好用,因为它很容易在100个节点上并行化,但没有看到简单的“从这里复制到那里”功能 更新:另外,Beam似乎在启动管道之前,在单个线程中计算本地计算机上的

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

GCS中有一个很好的“传输”功能,允许将数据从S3导入GCS。但是,如何以另一种方式导出(除了将数据生成作业转移到AWS之外)

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

我尝试了Dataflow(现在又称apachebeam),这很好用,因为它很容易在100个节点上并行化,但没有看到简单的“从这里复制到那里”功能

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

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

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

缺点是它编写的代码可能包含bug等,而不是使用GCS“Transfer”之类的内置解决方案。

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

谢谢,但是如何让多个GCE实例处理不同的对象集呢?如果我只运行
gsutil-mcp
,它们都将复制相同的文件。也许
gsutil-mrsync
是无种族的(我怀疑它,因为它首先构建了一个要同步的对象列表),但这些GCE实例仍将检查/传输同一对象N次。您可以使用类似于:gsutil-m cp gs://your bucket/a*s3://your bucket gsutil-m cp gs://your bucket/b*s3://your bucket等的方法在多个实例上分片副本,其中您可以在单独的实例上运行每个命令。以上假设对象名称按英文字母第一个字母大致均匀分布。如果没有,您可能需要调整命令。