Hadoop Distcp执行时Mapper运行位置与资源占用来源咨询
关于Hadoop Distcp的两个核心问题解答
嘿,我来帮你把这两个Distcp的关键问题说清楚:
1. Mapper任务运行在源集群还是目标集群?
默认情况下,Distcp是作为一个MapReduce作业提交到目标集群的ResourceManager进行调度的,所以所有的Mapper任务都会运行在目标集群的NodeManager节点上。这些Mapper会主动从源集群的DataNode拉取数据,再写入到目标集群的对应位置。
当然如果你的场景特殊,也可以通过指定源集群的ResourceManager来提交作业,但这不是常规用法——绝大多数迁移场景下,我们都会把Distcp作业放在目标集群执行,避免给源集群带来额外的计算压力。
2. 执行过程中占用的资源来自源集群还是目标集群?
- 计算资源(CPU、内存):完全来自目标集群,因为Mapper任务都在目标集群的节点上运行,这些资源由目标集群的ResourceManager分配和管理。
- 存储/网络资源:源集群会产生磁盘读IO和网络出口的负载(因为要把数据传输给目标集群的Mapper),但这不属于“计算资源”范畴,只是源集群的存储和网络带宽被占用;而目标集群则会有磁盘写IO和网络入口的负载,同时承担所有的计算资源开销。
简单总结:Distcp的核心计算压力在目标集群,源集群主要是提供数据读取和传输的资源消耗。
内容的提问来源于stack exchange,提问作者user8587005
相关产品推荐
相关产品推荐

