Hadoop没有';不要将一个节点用于作业
我已经建立了一个四节点的纱线集群并开始运行。由于一个较小的问题,我最近不得不格式化namenode 后来,我运行了Hadoop的PI示例,以验证每个节点仍在参与计算,它们都参与了计算。但是,当我现在开始自己的作业时,其中一个节点根本没有被使用 我想这可能是因为这个节点没有任何数据可以处理。因此,我尝试使用平衡器来平衡集群。这不起作用,平衡器告诉我集群是平衡的 我错过了什么Hadoop没有';不要将一个节点用于作业,hadoop,yarn,Hadoop,Yarn,我已经建立了一个四节点的纱线集群并开始运行。由于一个较小的问题,我最近不得不格式化namenode 后来,我运行了Hadoop的PI示例,以验证每个节点仍在参与计算,它们都参与了计算。但是,当我现在开始自己的作业时,其中一个节点根本没有被使用 我想这可能是因为这个节点没有任何数据可以处理。因此,我尝试使用平衡器来平衡集群。这不起作用,平衡器告诉我集群是平衡的 我错过了什么 确保您的节点正在加入resourcemanager。查看问题节点上的nodemanager日志,查看是否存在错误。查看res
在处理过程中,您的应用程序管理员将与NodeManager协商容器,而NodeManager反过来将尝试获取最近的datanode资源。由于复制系数为3,HDFS将尝试在单个datanode上放置1个完整副本,并将其余副本分发到所有datanode 1) 将复制因子更改为1(因为您只是尝试进行基准测试,所以减少复制应该不是一个大问题) 2) 确保您的客户端(从中发出-copyFromLocal命令的计算机)上没有运行datanode。否则,HDFS将倾向于将大部分数据放在该节点中,因为这样可以减少延迟 3) 使用
dfs.blocksize
属性控制文件分发
4) 使用
hdfs dfsadmin-report
检查数据节点的状态您的hdfs复制系数是多少?为什么您认为集群中的所有节点都必须用于作业;因为这将加快CPU非常繁重的计算?那么,如果集群大小为4,复制因子为3,第四个节点如何拥有输入的数据块(用于运行任务)?因为HDFS不需要将所有复制放在同一个节点组合上,或者我错了吗?I节点A、B、C上的图像文件1;节点B、C、D上的文件2。。。然后每个节点都会有一些工作要做。是节点已加入群集,并在rm web ui中列出。2.节点配备6个内核和12gb RAM,应该足够了;特别是因为它在集群重置之前工作得非常好,请确保节点使用可用的RAM。配置可能会覆盖它。另外,确保该节点也是HDFS集群的一部分,datanode已启动、运行并已连接(按namenode列出)。如果不在namenode列表中,则不应阻止其运行作业,但不太可能被拾取。