群集之间/群集内的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/