Troppi errori di recupero - Amazon EMR

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Troppi errori di recupero

La presenza di messaggi di errore "Too many fetch-failures (Troppi errori fetch)" o "Error reading task output (Errore di lettura output attività)" nella fase o nei log del tentativo di attività indica che l'attività in esecuzione dipende dall'output di un'altra attività. Ciò si verifica spesso quando un'attività di riduzione viene accodata per l'esecuzione e richiede l'output di una o più attività di mappatura e tale output non è ancora disponibile.

L'output potrebbe non essere disponibile per diversi motivi:

  • L'attività preliminare è ancora in fase di elaborazione. Questa è spesso un'attività di mappatura.

  • I dati potrebbero non essere disponibili a causa di scarsa connettività di rete se i dati si trovano su un'istanza diversa.

  • Se si utilizza HDFS per recuperare l'output, potrebbe verificarsi un problema con HDFS.

La causa più comune di questo errore è che l'attività precedente è ancora in corso di elaborazione. Ciò è probabile soprattutto se gli errori si verificano durante il primo tentativo di esecuzione delle attività di riduzione. Puoi verificare se questo è il motivo esaminando il log syslog per la fase di cluster che restituisce l'errore. Se il syslog mostra che entrambe le attività di mappatura e riduzione stanno avanzando, significa che la fase di riduzione è iniziata mentre ci sono attività di mappatura non ancora completate.

Ti consigliamo di cercare nei log una percentuale di avanzamento della mappatura che raggiunge il 100% e quindi scende nuovamente a un valore più basso. Quando la percentuale di mappatura è pari al 100%, questo non significa che tutte le attività di mappatura sono state completate, ma semplicemente che Hadoop sta eseguendo tutte le attività di mappatura. Se questo valore scende nuovamente sotto il 100%, significa che un'attività di mappatura non è riuscita e, a seconda della configurazione, Hadoop potrebbe tentare di pianificare di nuovo l'attività. Se la percentuale della mappa rimane al 100% nei log, guarda le CloudWatch metriche, in particolareRunningMapTasks, per verificare se l'attività della mappa è ancora in fase di elaborazione. Puoi anche trovare queste informazioni utilizzando l'interfaccia Web Hadoop sul nodo master.

Se si verifica questo problema, puoi provare a eseguire una serie di operazioni:

  • Configura la fase di riduzione per aspettare più a lungo prima dell'avvio. A questo scopo, puoi modificare l'impostazione di configurazione Hadoop mapred.reduce.slowstart.completed.maps su un tempo più lungo. Per ulteriori informazioni, consulta Creazione di operazioni di bootstrap per l'installazione di software aggiuntivo.

  • Associa il conteggio del riduttore alla funzionalità del riduttore totale del cluster. A questo scopo, modifica l'impostazione di configurazione Hadoop mapred.reduce.tasks per il processo.

  • Utilizza un codice classe combiner per ridurre al minimo la quantità di output da recuperare.

  • Verifica che non ci siano problemi con il servizio Amazon EC2 che influenzano le prestazioni di rete del cluster. A questo scopo, puoi utilizzare il Service Health Dashboard.

  • Esamina le risorse di CPU e della memoria delle istanze nel cluster per verificare che l'elaborazione dei dati non stia sovraccaricando le risorse dei nodi. Per ulteriori informazioni, consulta Configurazione di hardware e reti cluster.

  • Controlla la versione di Amazon Machine Image (AMI) utilizzata nel cluster Amazon EMR. Se la versione è compresa tra 2.3.0 e 2.4.4, esegui l'aggiornamento a una versione più recente. Le versioni AMI nell'intervallo specificato utilizzano una versione di Jetty che potrebbe non essere in grado di fornire l'output dalla fase di mappatura. L'errore di recupero si verifica quando i riduttori non sono in grado di ottenere l'output dalla fase di mappatura.

    Jetty è un server HTTP open source utilizzato per le comunicazioni da macchina a macchina all'interno di un cluster Hadoop.