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

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

谁能告诉我这将如何工作?

  • 另一个问题:如果一个文件仅分配给一个映射器,那么该映射器如何在其运行的一个节点上找到所有输入拆分?
  • 最佳答案

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

    更新
    在mapreduce期间从namenode获取文件的块位置。在Distcp上,如果可能,将在文件第一个块所在的节点上启动每个Mapper。如果文件由多个拆分组成,则如果在同一节点上不可用,则将从邻居中获取它们。

    关于hadoop - Hadoop Distcp是否在块级别复制?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42351668/

    10-12 18:25