我有一个四节点的YARN集群正在运行。由于较小的问题,我最近不得不格式化namenode。Hadoop不使用一个节点作业
后来我运行Hadoop的PI示例来验证每个节点仍在参与计算,他们都这样做。然而,当我开始自己的工作时,其中一个节点根本没有被使用。
我想这可能是因为这个节点没有任何数据可以工作。所以我试图用平衡器来平衡集群。这不起作用,平衡器告诉我集群是平衡的。
我错过了什么?
我有一个四节点的YARN集群正在运行。由于较小的问题,我最近不得不格式化namenode。Hadoop不使用一个节点作业
后来我运行Hadoop的PI示例来验证每个节点仍在参与计算,他们都这样做。然而,当我开始自己的工作时,其中一个节点根本没有被使用。
我想这可能是因为这个节点没有任何数据可以工作。所以我试图用平衡器来平衡集群。这不起作用,平衡器告诉我集群是平衡的。
我错过了什么?
在处理时,您的ApplicationMaster会与NodeManager取消容器,而NodeManager反过来会尝试获取最近的datanode资源。由于您的复制因子为3,因此HDFS会尝试将1整个副本放在单个数据节点上,并将其余数据分配到所有数据节点。
1)将复制因子更改为1(因为您只是试图进行基准测试,因此减少复制不应该是一个大问题)。
2)确保你的客户端(机器从你将给你的-copyFromLocal命令)没有运行datanode。否则,HDFS将倾向于将大部分数据放置在此节点中,因为它会减少延迟。
3)使用dfs.blocksize
属性控制文件分发。
4)使用hdfs dfsadmin -report
检查datanodes的状态。
2)解决了问题... – FAS
确保您的节点是资源管理器的joinig。查看问题节点上的nodemanager日志,看看是否有错误。查看资源管理器Web UI(默认情况下为8088),确保节点在那里列出。
确保节点将足够的资源带到池中以便能够运行作业。在节点上的yarn-site.xml中检查yarn.nodemanager.resource.cpu-vcores
和yarn.nodemanager.resource.memory-mb
。内存应该大于容器请求的最小内存(请参阅yarn.scheduler.minimum-allocation-mb
)。
1.是节点加入集群并列在rm web ui中。 2.节点配备6个内核和12GB内存,应该足够多;特别是因为它在群集重置之前工作得很好 – FAS
确保节点使用可用的RAM。配置可能会覆盖它。另外,确保节点也是HDFS集群的一部分,datanode已启动,运行并连接(由namenode列出)。如果不在namenode列表中,它不应该阻止它运行作业,但不太可能被拾取。 –
什么是HDFS复制因子?为什么你认为集群中的所有节点都必须用于工作? – rVr
复制因子是3;因为这会加速CPU的大量计算? – FAS
那么如果簇大小为4且复制因子为3,那么第4个节点如何能够输入数据块(以运行任务)? – rVr