hadoop distcp副本在块级别



群集之间/内部之间的分布是地图降低作业。我的假设是,它在输入拆分级别上复制文件,帮助复制性能,因为文件将由多个在多个"零件"并行的映射器复制。但是,当我浏览Hadoop DistCP的文档时,DistCP似乎只能在文件级别上工作。请参考:hadoop.apache.org/docs/current/hadoop-distcp/distcp.html

根据DISTCP DOC,DISTCP只能将文件本身而不是文件列出,并将列表的分区分配给映射。

任何人都可以说出这将如何工作吗?

  • 其他问题:如果仅将文件分配给一个映射器,则映射器如何在运行的一个节点上找到所有输入拆分?

对于~50G大小的一个文件,将触发1个地图任务以复制数据,因为文件是Distcp中最好的粒度级别。

引用文档:

为什么DISTCP在指定更多地图时不会更快地运行?

在目前,DistCP的最小工作单位是一个文件。即文件仅通过一张地图处理。将地图的数量增加到值超过文件数将不会产生性能益处。这启动的地图数将等于文件数量。

更新
文件的块位置是从MapReduce期间从Namenode获得的。在DISTCP上,如果可能的话,将在文件的第一个块中启动每个映射器。如果文件由多个拆分组成,则如果在同一节点上不可用的话,它们将从附近获取。

最新更新