为啥我们需要 distcp 命令将数据从 hdfs 复制到 s3,而我们可以直接将数据写入 s3 位置?

Posted

技术标签:

【中文标题】为啥我们需要 distcp 命令将数据从 hdfs 复制到 s3,而我们可以直接将数据写入 s3 位置?【英文标题】:Why we need distcp command to copy data from hdfs to s3, when we can directly write the data to s3 location?为什么我们需要 distcp 命令将数据从 hdfs 复制到 s3,而我们可以直接将数据写入 s3 位置? 【发布时间】:2019-10-11 08:44:00 【问题描述】:

请帮助我理解 distcp 的使用,我们使用的是 s3,在一些脚本中我可以看到他们直接将数据写入 s3,并且很多情况下将数据写入 hdfs,然后使用 distcp 将数据复制到 s3。

那么什么时候使用distcp,什么时候可以直接写入云端呢?

【问题讨论】:

你的问题没有太大意义。您可以使用 HDFS 或 S3 来存储数据。两者都有合法的用例和不同的权衡。数据操作可以使用 Hadoop 中的完全限定路径直接寻址 S3 或 HDFS。您甚至可以将 Hadoop 配置为使用 S3 作为默认 FS。 【参考方案1】:

首先你需要很清楚为什么要使用distcp。

Distcp主要用于跨hadoop集群传输。假设您在加利福尼亚有两个远程 hadoop 集群 1,其他 1 在亚利桑那州,cluster1 是您的主要集群,cluster2 是您的次要集群,这意味着您正在 cluster1 上进行所有处理,并在处理完成后将新数据转储到 cluster2集群2。

在此场景中,您将 distcp(复制)您的数据从 cluster1 到 cluster2,因为两个集群不同,您可以非常快速地复制数据,因为它使用映射器并行复制数据。因此,您可以将 distcp 视为类似于 ftp,用于跨不同服务器进行本地数据复制。

在您的情况下,我认为您提到的 hdfs 是您将数据复制到 aws s3 的其他 hadoop cluser,反之亦然。

希望能解开你的疑惑

【讨论】:

以上是关于为啥我们需要 distcp 命令将数据从 hdfs 复制到 s3,而我们可以直接将数据写入 s3 位置?的主要内容,如果未能解决你的问题,请参考以下文章

使用 S3DistCp 将文件从 HDFS 复制到 EMR 集群上的 S3

HDFS常用命令

HDFS数据快速拷贝方案:FastCopy

HDFS数据迁移解决方案之DistCp工具的巧妙使用

至少一个文件系统不支持 ACL:Distcp HDFS

HDFS数据迁移解决方案之DistCp工具的巧妙使用