任何时候我重新启动群我都有这个问题
java.io.IOException: Incompatible clusterIDs in /hadoop/dfs/data:
namenode clusterID = CID-b25a0845-5c64-4603-a2cb-d7878c265f44;
datanode clusterID = CID-f90183ca-4d87-4b49-8fb2-ca642d46016c at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:777)
FATAL datanode.DataNode: Initialization failed for Block pool <registering>
(Datanode Uuid unassigned) service to namenode/10.0.0.7:8020. Exiting.
java.io.IOException: All specified directories are failed to load. at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:574)
我通过删除此泊坞窗卷来解决了这个问题
sudo docker volume inspect hadoop_datanode
[
{
"CreatedAt": "2018-05-10T19:35:31Z",
"Driver": "local",
"Labels": {
"com.docker.stack.namespace": "hadoop"
},
"Mountpoint": "/data0/docker_var/volumes/hadoop_datanode/_data",
"Name": "hadoop_datanode",
"Options": {},
"Scope": "local"
}
]
但是在这个卷中存在我放入hdfs的文件,所以这样,我必须在部署swarm时再将文件放入hdfs。我不确定这是解决这个问题的正确方法。 谷歌搜索我找到了一个解决方案,但我不知道如何在群重启之前应用它,这是解决方案:
问题在于属性名称为dfs.datanode.data.dir,它是dfs.dataode.data.dir的拼写错误。这会使属性失效 被识别,因此,默认位置 $ {hadoop.tmp.dir} / hadoop - $ {USER} / dfs / data用作数据目录。 hadoop.tmp.dir默认是/ tmp,每次重启时都是内容 此目录将被删除并强制datanode重新创建 启动时的文件夹。因此不兼容的clusterID。编辑这个 格式化namenode之前的hdfs-site.xml中的属性名称 启动服务。
我使用这个docker hub作为namenode: bde2020 / Hadoop的名称节点:2.0.0-hadoop2.7.4-java8
这对于datanode: bde2020 / Hadoop的数据节点:2.0.0-hadoop2.7.4-java8
感谢。