O nó de nome está no modo de segurança. Não é possível sair

122
root# bin/hadoop fs -mkdir t
mkdir: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot create directory /user/root/t. Name node is in safe mode.

não é capaz de criar nada em hdfs

eu fiz

root# bin/hadoop fs -safemode leave

Mas mostrando

safemode: Unknown command

qual é o problema?

Solução

Unmesha SreeVeni
fonte
2
No meu caso, foi no nó segura porque os recursos eram baixos (em execução no estivador)
pomber
@BrendenBrown, aqui está o link atualmente trabalhando para o Hadoop 3.2.0: hadoop.apache.org/docs/r3.2.0/hadoop-project-dist/hadoop-hdfs/…
Eugene Gr. Philippov
E aqui está o link atualmente funcionando para o Hadoop «stable» (atualmente 2.9.x): hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/…
Eugene Gr. Philippov

Respostas:

211

Para deixar com força o namenode sair do modo de segurança, o seguinte comando deve ser executado:

 bin/hadoop dfsadmin -safemode leave

Você está recebendo Unknown commanderro para o seu comando, pois -safemodenão é um subcomando para hadoop fs, mas é hadoop dfsadmin.

Além disso, após o comando acima, sugiro que você execute uma vez hadoop fsckpara que quaisquer inconsistências surgidas nos hdfs possam ser resolvidas.

Atualizar:

Use o hdfscomando em vez do hadoopcomando para distribuições mais recentes. O hadoopcomando está sendo preterido:

hdfs dfsadmin -safemode leave

hadoop dfsadminfoi descontinuado e, assim como o hadoop fscomando, todas as tarefas relacionadas a hdfs estão sendo movidas para um comando separado hdfs.

Amar
fonte
2
na verdade, por que isso exibe 'namenode está em modo de segurança'
Unmesha SreeVeni
1
Basicamente, o namenode entra no modo de segurança em situações incomuns, por exemplo, quando o disco está cheio, também na fase de inicialização. Leia mais aqui; hadoop.apache.org/docs/stable/hdfs_user_guide.html#Safemode
Amar
2
Estou usando o Hadoop 2.0.0-cdh4.1.1 Quando executei o hadoop dfsadmincomando, ele me deu o seguinte: ______ DEPRECATED: Use of this script to execute hdfs command is deprecated. Instead use the hdfs command for it. Safe mode is OFF ______ ... mas ainda funcionava. Parece que a sugestão de @ user3316017 abaixo é a sintaxe recomendada.
CJBS
Atualizei minha resposta de acordo com as novas distribuições, se alguém puder nos ajudar a estabelecer a versão exata do apache hadoop, pois, quando essas deprecações aparecerem, seria ótimo.
Amar
1
No caso em que o HDFS entra em modo de segurança novamente assim que o hdfs dfsadmin -safemode leavecomando é executado porque o cluster está cheio, às vezes é possível sair da situação encadeando imediatamente um comando para limpar as coisas, por exemplohdfs dfsadmin -safemode leave; hdfs dfs -rm -skipTrash /path/to/stuff/to/delete
Shadocko
27

tente isso, vai funcionar

sudo -u hdfs hdfs dfsadmin -safemode leave
Wesam Na
fonte
este comando funcionou para mim, pois pode exigir privilégios de superusuário ..
obrigado
7

Se você usa o Hadoop versão 2.6.1 acima, enquanto o comando funciona, ele reclama que está depreciado. Na verdade, eu não podia usar o hadoop dfsadmin -safemode leaveporque estava executando o Hadoop em um contêiner do Docker e esse comando falha magicamente quando executado no contêiner, então o que fiz foi isso. Eu verifiquei doc e encontrei dfs.safemode.threshold.pctna documentação que diz

Especifica a porcentagem de blocos que devem atender ao requisito mínimo de replicação definido por dfs.replication.min. Valores menores ou iguais a 0 significam não esperar por uma porcentagem específica de blocos antes de sair do modo de segurança. Valores maiores que 1 tornarão o modo de segurança permanente.

então mudei hdfs-site.xmlpara o seguinte (nas versões mais antigas do Hadoop, aparentemente você precisa fazer isso em hdfs-default.xml:

<configuration>
    <property>
        <name>dfs.safemode.threshold.pct</name>
        <value>0</value>
    </property>
</configuration>
ambodi
fonte
5

O namenode entra no modo de segurança quando há falta de memória. Como resultado, o HDFS se torna apenas legível. Isso significa que não é possível criar nenhum diretório ou arquivo adicional no HDFS. Para sair do modo de segurança, o seguinte comando é usado:

hadoop dfsadmin -safemode leave

Se você estiver usando o Cloudera Manager:

go to >>Actions>>Leave Safemode

Mas nem sempre resolve o problema. A solução completa está em criar algum espaço na memória. Use o seguinte comando para verificar o uso da memória.

free -m

Se você estiver usando cloudera, também poderá verificar se o HDFS está mostrando alguns sinais de problemas de saúde. Provavelmente, deve estar mostrando algum problema de memória relacionado ao namenode. Aloque mais memória, seguindo as opções disponíveis. Não tenho certeza de quais comandos usar para o mesmo se você não estiver usando o gerenciador de cloudera, mas deve haver uma maneira. Espero que ajude! :)

Amitesh Ranjan
fonte
5

Tente isto

sudo -u hdfs hdfs dfsadmin -safemode leave

verificar o status do modo de segurança

sudo -u hdfs hdfs dfsadmin -safemode get

Se ainda estiver no modo de segurança, um dos motivos seria o espaço insuficiente no nó, você pode verificar o uso do disco do nó usando:

df -h

se a partição raiz estiver cheia, exclua arquivos ou adicione espaço na sua partição raiz e tente novamente o primeiro passo.

Tarun Reddy
fonte
4

modo de segurança ativado significa (HDFS está no modo somente leitura)
modo de segurança desativado significa (HDFS está no modo gravável e legível)

Em Hadoop 2.6.0, podemos verificar o status do nó de nome com a ajuda dos comandos abaixo:

PARA VERIFICAR O Status do Nó de Nome

$ hdfs dfsadmin -safemode get

PARA ENTRAR NO MODO SEGURO:

$ hdfs dfsadmin -safemode enter

PARA SAIR DO modo SEGURO

~$ hdfs dfsadmin -safemode leave
Vishwajeet Singh
fonte
1
PARA FORÇAR A SAIR DO MODO SEGURO: ~ $ hdfs dfsadmin -safemode forceExit
ammills01
1

Execute o comando abaixo usando o usuário do sistema operacional HDFS para desativar o modo de segurança:

sudo -u hdfs hadoop dfsadmin -safemode leave
Mayank Gupta
fonte
0

use o comando abaixo para desativar o modo de segurança

$> hdfs dfsadmin -safemode leave

Azam Khan
fonte