DataNode 启动失败(ClusterID不一致):Initialization failed for Block pool
ERROR org.apache.hadoop.hdfs.server.datanode.DataNode:Initialization failed for Block pool <registering>(Datanode Uuid 1098277a-8189-4b88-9a9b-31dbb7cdd27f) service to hadoop162/192.168.1.162:80
ERROR org.apache.hadoop.hdfs.server.datanode.DataNode:
Initialization failed for Block pool <registering>
(Datanode Uuid 1098277a-8189-4b88-9a9b-31dbb7cdd27f) service to hadoop162/192.168.1.162:8020. Exiting.
java.io.IOException: All specified directories have failed to load.
问题描述
开机启动集群时,发现有节点的DataNode没有启动。
确认配置信息没问题后,观察节点的中的datanode日志(配置文件中指定)发现:Initialization failed for Block pool
问题分析
在第一次格式化dfs后,启动并使用了hadoop,后来又重新执行了格式化命令(hdfs namenode -format),这时NameNode的clusterID会重新生成,而DataNode的clusterID 保持不变。
每次namenode format会重新创建一个namenodeId,而data目录包含了上次format时的id,namenode format清空了NameNode下的数据,但是没有清空datanode下的数据,导致启动时失败,所要做的就是每次fotmat前,清空data下的所有目录。
解决方法:
方法一:
停掉集群,删除问题节点的data目录下的所有内容。即hdfs-site.xml文件中配置的dfs.data.dir目录(我的目录:/opt/hadoopdata)。重新格式化NameNode。
方法二:
停掉集群,然后将出现问题的DataNode节点目录/opt/hadoopdata/dfs/data/current/下的VERSION中clusterID的修改为与NameNode中/opt/hadoopdata/dfs/name/current/下的VERSION中clusterID一致即可。
其实只需要把 data/current/VERSION中的clusterID改为和 name/current/VERSION中的clusterID一致。
更多推荐
所有评论(0)