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