каждый раз, когда я перезагружал рой, у меня эта проблема
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 проверяет 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, поэтому при развертывании роя таким образом я должен снова помещать файлы в hdfs. Я не уверен, что это правильный способ решить эту проблему.
Погуглил Я нашел одно решение, но я не знаю, как применить его до перезагрузки роя, вот решение:
Проблема связана с именем свойства dfs.datanode.data.dir. Это ошибка в качестве dfs.dataode.data.dir. Это делает недействительным свойство из
и, как следствие, местоположение по умолчанию
$ {hadoop.tmp.dir} / hadoop - $ {USER} / dfs / data используется в качестве каталога данных.
По умолчанию hadoop.tmp.dir - это / tmp, при каждой перезагрузке содержимое
этот каталог будет удален и заставит datanode воссоздать
папка при запуске. И, таким образом, несовместимые ID кластера. Редактировать это
имя свойства в hdfs-site.xml перед форматированием наменода и
запуск услуг.
Я использую этот док-концентратор для namenode:
bde2020 / Hadoop-NameNode: 2.0.0-hadoop2.7.4-java8
и это для датододы:
bde2020 / Hadoop-DataNode: 2.0.0-hadoop2.7.4-java8
спасибо.