Hadoop DataNode está me dando um ID incompatível de namespace

1

Quando executo o script start-all.sh do meu nó mestre, alguns dos meus DataNodes não são iniciados; o arquivo de log relata uma IOException Java: IDs de namespace incompatíveis em / tmp / $ MY_USER_NAME.

    
por ILikeFood 28.06.2012 / 20:07

2 respostas

1

Quando o NameNode é formatado, um ID de namespace é gerado, o que essencialmente identifica aquela instância específica do sistema de arquivos distribuído. Quando os DataNodes se conectam primeiro ao NameNode, eles armazenam esse ID de namespace junto com os blocos de dados, porque os blocos precisam pertencer a um sistema de arquivos específico.

Se um DataNode se conectar posteriormente a um NameNode, e o ID do espaço para nome que o NameNode declara não corresponder ao ID do namespace armazenado no DataNode, ele se recusará a operar com o erro "ID incompatível do namespace". Isso significa que o DataNode foi conectado a um NameNode diferente, e os blocos que ele está armazenando não pertencem a esse sistema de arquivos distribuído.

Isso geralmente significa que você perdeu seus metadados NameNode de alguma forma. Se você tiver várias instalações HDFS, seu DataNode pode estar se conectando ao NameNode incorreto. Se você tiver apenas uma única instalação, o seu NameNode está sendo executado com um diretório de metadados diferente ou, de alguma forma, você perdeu os metadados e iniciou com um sistema de arquivos recém-formatado (o que só deve acontecer executando hadoop namenode -format ). Tente encontrar os metadados NameNode corretos ou restaure-os de um backup.

    
por 28.06.2012 / 21:02
0

Toda vez que o NameNode reformata, gera um novo ID de namespace e algumas de suas máquinas não recebem o memorando. A maneira mais fácil de corrigir esse problema é reformatando o sistema de arquivos distribuído; Recupere todos os arquivos que puder do HDFS e, em seguida, execute rm -Rf /tmp/hadoop-$MY_USER_NAME em cada servidor (o caminho do diretório pode ser diferente dependendo da sua configuração). Em seguida, execute hadoop namenode -format do seu servidor mestre. Depois disso, bin/start-all.sh deve fazer o truque.

    
por 28.06.2012 / 20:07

Tags