我有一个具有4个节点的全分布式Hadoop集群。当我把我的工作提交给Jobtracker,Jobtracker决定12个地图任务对我的工作来说很酷时,发生了一些奇怪的事情。12个映射任务总是在单个节点上运行,而不是在整个集群上运行。在我问这个问题之前,我已经做了以下事情:
- 尝试不同的工作
- 运行start-balance.sh以重新平衡群集
但是它不起作用,所以我希望有人能告诉我为什么以及如何修复它。
如果所有输入数据文件块都在该节点中,则具有优先级的调度器会对同一节点
显然,源数据文件现在位于一个数据节点中。这不可能是平衡器的错。从我所看到的,你的hdfs必须只有一个复制,否则你就不在一个完全分布式的Hadoop集群中。
检查您的输入是如何分割的。您可能只有一个输入拆分,这意味着只有一个节点将用于处理数据。您可以通过向stem添加更多的输入文件并将它们放置在不同的节点上来测试这一点,然后检查哪些节点正在进行工作。
如果不起作用,请检查以确保集群配置正确。具体而言,请检查名称节点是否在其slaves
文件中设置了指向其他节点的路径,并且每个从属节点的masters
文件中都设置了名称节点。