hadoop不使用一个节点来完成任务

omhiaaxx  于 2021-06-04  发布在  Hadoop
关注(0)|答案(2)|浏览(280)

我已经准备好了一个四节点的Yarn集群。由于一个较小的问题,我最近不得不格式化namenode。
后来我运行hadoop的pi示例来验证每个节点仍然参与计算,他们都参与了。但是,当我现在开始自己的作业时,其中一个节点根本没有被使用。
我想这可能是因为这个节点没有任何数据要处理。所以我试着用均衡器来平衡集群。这不起作用,平衡器告诉我集群是平衡的。
我错过了什么?

368yc8dk

368yc8dk1#

在处理过程中,您的应用程序管理员将与nodemanager协商容器,而nodemanager反过来将尝试获取最近的datanode资源。由于您的复制因子是3,hdfs将尝试在单个datanode上放置一个完整副本,并将其余副本分布到所有datanode上。
1) 将复制因子更改为1(因为您只是尝试进行基准测试,所以减少复制应该不是一个大问题)。
2) 确保您的客户机(从中发出-copyfromlocal命令的计算机)上没有运行datanode。否则,hdfs会倾向于将大部分数据放在这个节点中,因为这样可以减少延迟。
3) 使用控制文件分发 dfs.blocksize 财产。
4) 使用检查datanodes的状态 hdfs dfsadmin -report .

beq87vna

beq87vna2#

确保您的节点正在加入resourcemanager。查看问题节点上的nodemanager日志,看看是否有错误。查看resourcemanagerwebui(默认情况下为:8088),确保节点列在那里。
确保节点将足够的资源带到池中,以便能够运行作业。检查 yarn.nodemanager.resource.cpu-vcores 以及 yarn.nodemanager.resource.memory-mb 在节点上的yarn-site.xml中。内存应该大于容器请求的最小内存(请参阅 yarn.scheduler.minimum-allocation-mb ).

相关问题