集群之间/集群内的distcp是map reduce作业。我的假设是,它在输入拆分级别复制文件,这有助于提高复制性能,因为一个文件将由多个并行处理多个“片段”的Map器复制。然而,当我阅读hadoopdistcp的文档时,似乎distcp只能在文件级工作。请参阅:hadoop.apache.org/docs/current/hadoop-distcp/distcp.html
根据distcp文档,distcp只对文件列表进行拆分,而不是对文件本身进行拆分,并将列表的分区交给Map者。
有人能告诉我这到底是怎么回事吗?
附加问题:如果一个文件只分配给一个Map器,那么Map器如何在运行它的节点上找到所有的输入拆分?
1条答案
按热度按时间dwbf0jvd1#
对于单个文件
~50G
大小,则会触发1个Map任务来复制数据,因为文件的粒度是Distcp
.引用文件:
当指定了更多的Map时,为什么distcp不能运行得更快?
目前,distcp的最小工作单元是文件。i、 例如,一个文件只由一个Map处理。如果将Map数增加到超过文件数的值,则不会对性能产生任何好处。启动的Map数量将等于文件数量。
更新
文件的块位置是在mapreduce期间从namenode获得的。在distcp上,如果可能的话,每个Map器将在文件的第一个块所在的节点上启动。如果文件由多个拆分组成,如果在同一节点上不可用,则将从邻近区域获取这些拆分。