我在一个2 datanode Hadoop集群上运行K-means作业。当输入数据增长到足够大(1.5GB)时,我可以得到以下错误:
当前有2个datanode正在运行,且本次操作不排除任何节点,且本次操作不排除2个data节点。
这个操作正在写一个文件,我也得到了这个消息:文件XXX只能写入1个minReplication节点中的0个。
为什么任何datanode都被排除在这个操作之外?是因为他们忙于其他工作吗?在这种情况下,我该如何解决问题?
在K-means作业期间,数据节点上的磁盘空间似乎耗尽了。这就是导致节点被排除在文件写入之外的原因。似乎还有足够的空间,但是节点已经在90%的磁盘空间使用率下被排除。
简而言之:磁盘空间不足会导致节点无法进行文件写操作。
分享我的经验作为参考。
Failed to place enough replicas, still in need of 1 to reach 2 (unavailableStorages=[DISK]
org.apache.hadoop.net.NetworkTopology: Node 172.22.8.68:50010 is excluded, continuing.
由于hdfs的blockmanagement策略,整个机架的节点可能被排除。