Hadoop Distcp是否在块级别复制?

Hadoop Distcp是否在块级别复制?,hadoop,hdfs,cluster-computing,distcp,Hadoop,Hdfs,Cluster Computing,Distcp,集群之间/集群内的Distcp是Map Reduce作业。我的假设是,它在输入拆分级别复制文件,这有助于提高复制性能,因为一个文件将由多个并行处理多个“片段”的映射器复制。 然而,当我阅读Hadoop Distcp的文档时,Distcp似乎只在文件级工作。 请参阅此处:hadoop.apache.org/docs/current/hadoop-distcp/distcp.html 根据distcp文档,distcp将只拆分文件列表,而不是文件本身,并将列表的分区提供给映射者 谁能告诉我这到底是怎

集群之间/集群内的Distcp是Map Reduce作业。我的假设是,它在输入拆分级别复制文件,这有助于提高复制性能,因为一个文件将由多个并行处理多个“片段”的映射器复制。 然而,当我阅读Hadoop Distcp的文档时,Distcp似乎只在文件级工作。 请参阅此处:hadoop.apache.org/docs/current/hadoop-distcp/distcp.html

根据distcp文档,distcp将只拆分文件列表,而不是文件本身,并将列表的分区提供给映射者

谁能告诉我这到底是怎么回事

  • 附加问题:如果一个文件只分配给一个映射器,映射器如何在其运行的一个节点上查找所有输入拆分

对于大小为
~50G
的单个文件,将触发1个映射任务来复制数据,因为文件是
Distcp
中最精细的粒度级别

引述:

指定更多贴图时,为什么DistCp不能运行得更快?

在 目前,DistCp的最小工作单元是文件。i、 例如,一个文件 仅由一个贴图处理。将贴图数增加到一个值 超过文件数将不会带来任何性能好处。这个 启动的地图数将等于文件数

更新

文件的块位置是在mapreduce期间从namenode获得的。在Distcp上,如果可能,每个映射器都将在文件的第一个块所在的节点上启动。如果文件由多个拆分组成,如果在同一节点上不可用,则将从邻近区域获取这些拆分。

谢谢!您是说单个文件的拆分将由多个映射器并行复制吗?但根据distcp文档,distcp只会分割文件列表,而不是文件本身,并将列表的分区提供给映射者。我真的不明白这部分。请参考:@TianqiTong,你说得对,直到今天我还误以为Distcp使用的是典型的mapreduce进程。我已经更正了我的答案。谢谢您的更正!我已经更新了我的问题,所以其他人会开始喜欢它(希望如此)。但我不明白的另一件事是,映射器如何在单个节点上找到单个文件的所有部分。(我已经在描述中提到了)没有必要也不太可能在单个节点中找到所有的块,mapper将在必要时从其他节点获取这些块。文件的块位置是从namenode获得的。映射器将在文件的第一个块所在的节点上启动,如果在同一节点中可用,则将使用其余的块,否则将从邻居处获取。因此,这是否意味着在只有一个文件的情况下,distcp不会比cp提供任何性能改进?