搭建了一个小的实验集群,一共4台机器,一台namenode,三台datenode。执行start-all,发现在namenode上没有报任何错误,但是启动后直接显示datenode数量为0。
到datenode上查看日志,发现有这么个错误: ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs。百度后发现出现这个问题一般是datenode中的数据文件出了问题。这时我想到自己的几台datenode是直接由namenode中的系统复制过来,而我并没有设置
hadoop.tmp.dir参数,也就是默认存储在/tmp目录中,这就跟直接namenode单机时存储的临时文件冲突了才造成了以上问题。解决方法也很简单,将tmp文件夹中的过期临时文件清楚,或者另外设置
hadoop.tmp.dir参数指定新的临时文件夹。这里我选择了后者,因为我发现/tmp目录下的文件经常会受到损坏。
解决了上面这个错误后,datenode终于有一个了,但是我有三台datenode&#