首页 > 解决方案 > 为什么我们需要 distcp 命令将数据从 hdfs 复制到 s3,而我们可以直接将数据写入 s3 位置?

问题描述

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

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

标签: amazon-web-servicesapache-sparkhadoopamazon-s3pyspark-dataframes

解决方案


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

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

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

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

希望它能消除你的疑惑


推荐阅读