2014-03-06 43 views
0

我有一个四节点的YARN集群正在运行。由于较小的问题,我最近不得不格式化namenode。Hadoop不使用一个节点作业

后来我运行Hadoop的PI示例来验证每个节点仍在参与计算,他们都这样做。然而,当我开始自己的工作时,其中一个节点根本没有被使用。

我想这可能是因为这个节点没有任何数据可以工作。所以我试图用平衡器来平衡集群。这不起作用,平衡器告诉我集群是平衡的。

我错过了什么?

+0

什么是HDFS复制因子?为什么你认为集群中的所有节点都必须用于工作? – rVr

+0

复制因子是3;因为这会加速CPU的大量计算? – FAS

+0

那么如果簇大小为4且复制因子为3,那么第4个节点如何能够输入数据块(以运行任务)? – rVr

回答

0

在处理时,您的ApplicationMaster会与NodeManager取消容器,而NodeManager反过来会尝试获取最近的datanode资源。由于您的复制因子为3,因此HDFS会尝试将1整个副本放在单个数据节点上,并将其余数据分配到所有数据节点。

1)将复制因子更改为1(因为您只是试图进行基准测试,因此减少复制不应该是一个大问题)。

2)确保你的客户端(机器从你将给你的-copyFromLocal命令)没有运行datanode。否则,HDFS将倾向于将大部分数据放置在此节点中,因为它会减少延迟。

3)使用dfs.blocksize属性控制文件分发。

4)使用hdfs dfsadmin -report检查datanodes的状态。

+0

2)解决了问题... – FAS

0
  1. 确保您的节点是资源管理器的joinig。查看问题节点上的nodemanager日志,看看是否有错误。查看资源管理器Web UI(默认情况下为8088),确保节点在那里列出。

  2. 确保节点将足够的资源带到池中以便能够运行作业。在节点上的yarn-site.xml中检查yarn.nodemanager.resource.cpu-vcoresyarn.nodemanager.resource.memory-mb。内存应该大于容器请求的最小内存(请参阅yarn.scheduler.minimum-allocation-mb)。

+0

1.是节点加入集群并列在rm web ui中。 2.节点配备6个内核和12GB内存,应该足够多;特别是因为它在群集重置之前工作得很好 – FAS

+0

确保节点使用可用的RAM。配置可能会覆盖它。另外,确保节点也是HDFS集群的一部分,datanode已启动,运行并连接(由namenode列出)。如果不在namenode列表中,它不应该阻止它运行作业,但不太可能被拾取。 –

相关问题