2013-04-04 4 views
94
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 qualsiasi cosa in HDFSIl nodo nome è in modalità provvisoria. Non in grado di lasciare

ho fatto

root# bin/hadoop fs -safemode leave 

Ma mostrando

safemode: Unknown command 

qual è il problema?

Solution

+0

http://hadoop.apache.org/docs/stable/hdfs_user_guide.html#Safemode potrebbe essere d'aiuto. –

+0

Hey Sree, per favore non mettere [risolto] nel titolo. Questo riempie le domande e rende più difficile la loro analisi. Invece, se c'è una risposta che risolve il tuo problema, contrassegnalo come risposta accettata facendo clic sulla casella accanto alla risposta. Questo cambia il colore anche sulla pagina principale in modo che la gente sappia che ha risposto. Spero che questo ti aiuti! – jmort253

+0

ok jmort253.sorry ho incluso [risolto] in ogni domanda. ok vil rimuovere. Come ho modificato per tutte le domande il mio privilegio è andato.ora ho il permesso di modificare che solo da domani. È bello se modifico domani –

risposta

166

Al fine di consentire con forza il safemode congedo NameNode, a seguito di comando deve essere eseguito:

bin/hadoop dfsadmin -safemode leave 

Hai trovato Unknown command errore per il comando come -safemode non è un sub-comando per la hadoop fs, ma è di hadoop dfsadmin.

Inoltre, dopo il comando precedente, suggerirei di eseguire una volta hadoop fsck in modo da risolvere eventuali incoerenze introdotte negli hdf.

Aggiornamento:

Usa hdfs comando invece di hadoop comando per le distribuzioni più recenti. Il comando hadoop è sconsigliato:

hdfs dfsadmin -safemode leave 

hadoop dfsadmin è stato deprecato e così è hadoop fs comando, tutti i compiti legati HDFS vengono spostati ad un comando separato hdfs.

+1

in realtà perché questo visualizza 'namenode è in safemode' –

+1

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

+1

Sto usando Hadoop 2.0.0-cdh4.1.1 Quando ho eseguito il comando 'hadoop dfsadmin', mi ha dato questo: ' ______ DEPRECATO: L'uso di questo script per eseguire il comando hdfs è deprecato. Usa invece il comando hdfs per questo. La modalità provvisoria è OFF '______ ... ma è ancora in esecuzione. Sembra che il suggerimento di @ user3316017 di seguito sia la sintassi consigliata. – CJBS

2

NameNode entra in safemode quando c'è carenza di memoria. Di conseguenza, l'HDFS diventa leggibile solo. Ciò significa che non è possibile creare directory o file aggiuntivi in ​​HDFS. Per uscire dalla modalità provvisoria, il comando viene utilizzata la seguente:

hadoop dfsadmin -safemode leave 

Se si utilizza 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. Utilizzare il seguente comando per verificare l'utilizzo della memoria.

free -m 

Se si utilizza cloudera, è anche possibile controllare se l'HDFS mostra segni di cattiva salute. Probabilmente deve mostrare qualche problema di memoria relativo al namenode. Assegna più memoria seguendo le opzioni disponibili. Non sono sicuro quali comandi utilizzare per lo stesso se non si utilizza il gestore cloudera, ma deve esserci un modo. Spero che sia d'aiuto!:)

22

provare questo, funzionerà

sudo -u hdfs hdfs dfsadmin -safemode leave 
+0

questo comando ha funzionato per me in quanto può richiedere il privilegio del superutente..grazie @wesam – nik

+0

questo funziona se l'accesso negato per utente root – hisi

5

Se si utilizza Hadoop versione 2.6.1 di cui sopra, mentre il comando funziona, si lamenta che la sua ammortizzati. In realtà non potevo usare lo hadoop dfsadmin -safemode leave perché stavo eseguendo Hadoop in un contenitore Docker e quel comando non riesce magicamente quando viene eseguito nel contenitore, quindi quello che ho fatto è stato questo. Ho controllato doc e trovato dfs.safemode.threshold.pct nella documentazione che dice

specifica la percentuale di blocchi che dovrebbero soddisfare il requisito minimo replica definito da dfs.replication.min. Valori inferiori a uguale o uguale a 0 non devono attendere alcuna percentuale particolare di blocchi prima di uscire da safemode. Valori superiori a 1 renderanno permanente la modalità sicura.

così ho cambiato il hdfs-site.xml nei seguenti (Nelle versioni Hadoop più vecchie, a quanto pare è necessario farlo in hdfs-default.xml:

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

Eseguire il comando di seguito utilizzando l'utente HDFS sistema operativo per disabilitare la modalità sicura:

sudo -u hdfs hadoop dfsadmin -safemode leave 
0

uso sotto il comando per disattivare la modalità sicura

$> hd fs dfsadmin -safemode lasciare

1

Prova questo stato

sudo -u hdfs hdfs dfsadmin -safemode leave 

controllo di safemode

sudo -u hdfs hdfs dfsadmin -safemode get 

Se è ancora in modalità provvisoria, quindi uno dei motivi sarebbe non abbastanza spazio nel vostro nodo, è possibile controllare l'utilizzo del disco del nodo utilizzando:

df -h 

se la partizione di root è piena, eliminare i file o aggiungere spazio nella partizione di root e riprovare il primo passaggio.

Problemi correlati