Il nodo del nome è in modalità provvisoria. Non posso andarmene


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.

non in grado di creare nulla in hdfs

L'ho fatto

root# bin/hadoop fs -safemode leave

Ma mostrando

safemode: Unknown command

qual è il problema?

Soluzione



2
Nel mio caso, era in un nodo sicuro perché le risorse erano basse (in esecuzione su finestra mobile)
pomber

@BrendenBrown, ecco il collegamento attualmente funzionante per Hadoop 3.2.0: hadoop.apache.org/docs/r3.2.0/hadoop-project-dist/hadoop-hdfs/…
Eugene Gr. Philippov

Ed ecco il collegamento attualmente funzionante per la «stabile» di Hadoop (attualmente 2.9.x): hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/…
Eugene Gr. Philippov

Risposte:


211

Per consentire forzatamente al namenode di lasciare la modalità di sicurezza, è necessario eseguire il seguente comando:

 bin/hadoop dfsadmin -safemode leave

Stai ricevendo un Unknown commanderrore per il tuo comando perché -safemodenon è un sottocomando per hadoop fs, ma è di hadoop dfsadmin.

Anche dopo il comando sopra, ti suggerirei di eseguire una volta in hadoop fsckmodo che eventuali incongruenze insinuate negli hdfs possano essere risolte.

Aggiornare:

Usa il hdfscomando invece del hadoopcomando per le distribuzioni più recenti. Il hadoopcomando è stato deprecato:

hdfs dfsadmin -safemode leave

hadoop dfsadminè stato deprecato, così come il hadoop fscomando, tutte le attività relative a hdf vengono spostate in un comando separato hdfs.


2
in realtà perché questo mostra 'namenode is in safemode'
Unmesha SreeVeni

1
Fondamentalmente namenode entra in modalità provvisoria in situazioni insolite, ad esempio quando il disco è pieno, anche in fase di avvio. Leggi di più qui; hadoop.apache.org/docs/stable/hdfs_user_guide.html#Safemode
Amar

2
Sto usando Hadoop 2.0.0-cdh4.1.1 Quando ho eseguito il hadoop dfsadmincomando, mi ha dato questo: ______ DEPRECATED: Use of this script to execute hdfs command is deprecated. Instead use the hdfs command for it. Safe mode is OFF ______ ... ma continuava a funzionare. Sembra che il suggerimento di @ user3316017 di seguito sia la sintassi consigliata.
CJBS,

Aggiornata la mia risposta in base alle nuove distribuzioni, se qualcuno può aiutarci a stabilire la versione esatta di apache hadoop da quando queste deprecazioni sono entrate in scena, sarebbe fantastico.
Amar

1
Nel caso in cui HDFS ritorni in modalità provvisoria non appena hdfs dfsadmin -safemode leaveviene eseguito il comando perché il cluster è pieno, a volte è possibile uscire dalla situazione concatenando immediatamente un comando per ripulire le cose, ad esempiohdfs dfsadmin -safemode leave; hdfs dfs -rm -skipTrash /path/to/stuff/to/delete
Shadocko

27

prova questo, funzionerà

sudo -u hdfs hdfs dfsadmin -safemode leave

questo comando ha funzionato per me in quanto può richiedere il privilegio di superutente..grazie @wesam
NikhilP


7

Se usi Hadoop versione 2.6.1 sopra, mentre il comando funziona, si lamenta che è deprezzato. In realtà non potevo usare il hadoop dfsadmin -safemode leaveperché stavo eseguendo Hadoop in un container Docker e quel comando fallisce magicamente quando viene eseguito nel container, quindi quello che ho fatto è stato questo. Ho controllato il documento e ho trovato dfs.safemode.threshold.pctnella documentazione che dice

Specifica la percentuale di blocchi che devono soddisfare il requisito di replica minimo definito da dfs.replication.min. Valori minori o uguali a 0 significano non attendere una particolare percentuale di blocchi prima di uscire dalla modalità sicura. Valori maggiori di 1 renderanno permanente la modalità provvisoria.

quindi ho cambiato il hdfs-site.xmlseguente (nelle versioni precedenti di Hadoop, a quanto pare è necessario farlo in hdfs-default.xml:

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

5

Namenode entra in modalità sicura quando c'è carenza di memoria. Di conseguenza, l'HDFS diventa solo leggibile. Ciò significa che non è possibile creare alcuna directory o file aggiuntivo nell'HDFS. Per uscire dalla modalità di sicurezza, viene utilizzato il seguente comando:

hadoop dfsadmin -safemode leave

Se stai usando cloudera manager:

go to >>Actions>>Leave Safemode

Ma non sempre risolve il problema. La soluzione completa sta nel creare un po 'di spazio nella memoria. Usa il seguente comando per controllare l'utilizzo della memoria.

free -m

Se stai usando cloudera, puoi anche controllare se l'HDFS mostra alcuni segni di cattiva salute. Probabilmente deve mostrare qualche problema di memoria relativo al namenode. Assegna più memoria seguendo le opzioni disponibili. Non sono sicuro di quali comandi usare per lo stesso se non stai usando cloudera manager, ma ci deve essere un modo. Spero che sia d'aiuto! :)


5

Prova questo

sudo -u hdfs hdfs dfsadmin -safemode leave

controllare lo stato della modalità di sicurezza

sudo -u hdfs hdfs dfsadmin -safemode get

Se è ancora in modalità di sicurezza, uno dei motivi sarebbe la mancanza di spazio sufficiente nel tuo nodo, puoi controllare l'utilizzo del disco del nodo usando:

df -h

se la partizione root è piena, elimina i file o aggiungi spazio nella partizione root e riprova il primo passaggio.


4

modalità provvisoria attiva (HDFS è in modalità di sola lettura)
modalità sicura significa disattivata (HDFS è in modalità scrivibile e leggibile)

In Hadoop 2.6.0, possiamo controllare lo stato del nodo del nome con l'aiuto dei seguenti comandi:

PER CONTROLLARE lo stato del nodo del nome

$ hdfs dfsadmin -safemode get

PER ENTRARE IN MODALITÀ SICURA:

$ hdfs dfsadmin -safemode enter

PER LASCIARE la modalità SICURA

~$ hdfs dfsadmin -safemode leave

1
PER FORZARE L'ABBONAMENTO IN MODALITÀ SICURA: ~ $ hdfs dfsadmin -safemode forceExit
ammills01

1

Eseguire il comando seguente utilizzando l'utente del sistema operativo HDFS per disabilitare la modalità provvisoria:

sudo -u hdfs hadoop dfsadmin -safemode leave

0

utilizzare il comando seguente per disattivare la modalità provvisoria

$> hdfs dfsadmin -safemode leave

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.