datanode起不来的原因可以是:进行了namenode格式化操作。
每次进行namenode格式化都会清空namenode文件存放目录下的文件并产生一个新的clusterID,但不会清空datanode文件存放目录下的文件,也就是datanode文件存放目录下保存的clusterID还是之前的clusterID,这导致namenode下的clusterID和datanode下的clusterID不一致,无法建立起通信,所以datanode都起不来。
namenode格式化后namenode下产生的新的clusterID:
namenode格式化后datanode下的clusterID还是之前的:
解决办法:
将namenode下的新的clusterID复制替换掉datanode下的clusterID即可。