如果我使用 distcp 在 2 个集群中复制数据,它是复制所有副本还是仅复制 1 个数据副本并将其复制到新集群上?
例如,我尝试从复制因子(RF)为 3 的集群复制 3gb 数据。 distcp 会复制完整的 3gb 数据,还是知道由于 RF 为 3,它只需要移动 1gb(一个副本)数据。最后在目标集群上,它查看 RF 并相应地复制数据。
如果我使用 distcp 在 2 个集群中复制数据,它是复制所有副本还是仅复制 1 个数据副本并将其复制到新集群上?
例如,我尝试从复制因子(RF)为 3 的集群复制 3gb 数据。 distcp 会复制完整的 3gb 数据,还是知道由于 RF 为 3,它只需要移动 1gb(一个副本)数据。最后在目标集群上,它查看 RF 并相应地复制数据。
原始数据大小很重要。如果原始数据为 1 GB,则复制因子 = 3 最多需要 3x1 GB。将数据从一个集群复制到另一个集群时,原始数据很重要。只有 1 GB 的原始数据会被复制到目标集群。
HDFS 在内部处理块的复制。它会注意到集群上的新数据并相应地复制那些复制不足的块,即副本比RF少。
当您使用 distcp 进行复制时,只会复制/复制实际数据(即数据的 1 个副本)。复制将由框架处理,就像将新数据写入 HDFS 时的处理方式一样。除此之外,如果 distcp 在 2 个集群之间,您还可以指定是否要在源处保留复制因子。
欲了解更多信息:
https ://hadoop.apache.org/docs/stable1/distcp.html