Hadoop不使用一个节点来完成工作

时间:2014-03-06 07:58:59

标签: hadoop yarn

我有一个四节点YARN群集设置并运行。由于问题较小,我最近不得不格式化namenode。

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

我认为这可能是因为此节点没有任何数据可供使用。所以我尝试使用平衡器来平衡群集。这不起作用,平衡器告诉我群集是平衡的。

我错过了什么?

2 个答案:

答案 0 :(得分:0)

  1. 确保您的节点加入资源管理器。查看nodemanager登录问题节点,查看是否存在错误。查看resourcemanager Web UI(默认情况下为8088),确保该节点列在那里。

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

答案 1 :(得分:0)

在处理时,您的ApplicationMaster将使用NodeManager取消容器,而NodeManager依次会尝试获取最近的datanode资源。由于复制因子为3,因此HDFS会尝试在单个数据节点上放置1个完整副本,并将其余部分分布在所有数据节点上。

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

2)确保您的客户端(您将在其中提供-copyFromLocal命令的机器)上没有运行datanode。如果没有,HDFS将倾向于将大部分数据放在此节点中,因为它可以减少延迟。

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

4)使用hdfs dfsadmin -report检查数据节点的状态。