2012-11-05 20 views
5

Stiamo riscontrando uno strano problema nel nostro cluster Hadoop. Abbiamo notato che alcuni dei nostri lavori falliscono con il file con eccezione non trovata [vedi sotto]. Fondamentalmente i file nella directory "tentativo_ *" e la directory stessa vengono eliminati mentre l'attività è ancora in esecuzione sull'host. Guardando in parte la documentazione di hadoop, vedo che la directory dei lavori viene cancellata quando ottiene una KillJobAction, ma non sono sicuro del motivo per cui viene cancellata mentre il lavoro è ancora in esecuzione.La directory dei lavori locali di Hadoop viene eliminata prima che il lavoro sia completato sui nodi di attività

La mia domanda è cosa potrebbe essere eliminata mentre il lavoro è in esecuzione? Qualunque idea o suggerimento su come eseguire il debug di questo sarebbe utile.

Grazie!

java.io.FileNotFoundException: <dir>/hadoop/mapred/local_data/taskTracker/<user>/jobcache/job_201211030344_15383/attempt_201211030344_15383_m_000169_0/output/spill29.out (Permission denied) 
    at java.io.FileInputStream.open(Native Method) 
    at java.io.FileInputStream.<init>(FileInputStream.java:120) 
    at org.apache.hadoop.fs.RawLocalFileSystem$TrackingFileInputStream.<init>(RawLocalFileSystem.java:71) 
    at org.apache.hadoop.fs.RawLocalFileSystem$LocalFSFileInputStream.<init>(RawLocalFileSystem.java:107) 
    at org.apache.hadoop.fs.RawLocalFileSystem.open(RawLocalFileSystem.java:177) 
    at org.apache.hadoop.fs.FileSystem.open(FileSystem.java:400) 
    at org.apache.hadoop.mapred.Merger$Segment.init(Merger.java:205) 
    at org.apache.hadoop.mapred.Merger$Segment.access$100(Merger.java:165) 
    at org.apache.hadoop.mapred.Merger$MergeQueue.merge(Merger.java:418) 
    at org.apache.hadoop.mapred.Merger$MergeQueue.merge(Merger.java:381) 
    at org.apache.hadoop.mapred.Merger.merge(Merger.java:77) 
    at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.mergeParts(MapTask.java:1692) 
    at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.flush(MapTask.java:1322) 
    at org.apache.hadoop.mapred.MapTask$NewOutputCollector.close(MapTask.java:698) 
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:765) 
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:369) 
    at org.apache.hadoop.mapred.Child$4.run(Child.java:259) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javax.security.auth.Subject.doAs(Subject.java:396) 
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1059) 
    at org.apache.hadoop.mapred.Child.main(Child.java:253) 
+0

Non è un errore di autorizzazione? –

+0

No. Abbiamo pensato che fosse così, ma i file stessi non esistono. –

+0

Da dove provengono i file? Il mio schema è quello di eliminare sempre la cartella di output prima di eseguire un lavoro (penso che sia necessario). Potrebbe succedere qui? –

risposta

0

ho avuto un errore simile ed ha trovato che questo errore permesso fu dovuta al programma Hadoop non essere in grado di creare o accedere ai file.

I file vengono creati all'interno di hdf o su qualsiasi file system locale. Se si trovano su un file system locale, provare a impostare le autorizzazioni su quella cartella, se si trovano nella cartella hdfs, quindi provare a impostare le autorizzazioni per quella cartella.

Se si esegue su Ubuntu quindi

provare a eseguire

chmod -R a = rwx // Hadoop/mapred/local_data/TaskTracker // jobcache/job_201211030344_15383/attempt_201211030344_15383_m_000169_0/uscita/

Problemi correlati