HBase
 sql >> Database >  >> NoSQL >> HBase

Esecuzione speculativa in Hadoop MapReduce

In questo articolo sull'esecuzione speculativa di MapReduce, esplorerai in dettaglio l'esecuzione speculativa di Hadoop. Imparerai cos'è l'esecuzione speculativa, di cosa ha bisogno, come possiamo abilitarla e disabilitarla.

L'articolo spiega anche se è vantaggioso o meno e come funziona.

Cos'è l'esecuzione speculativa in Hadoop?

Il modello MapReduce nel framework Hadoop suddivide i lavori in attività indipendenti ed esegue queste attività in parallelo per ridurre il tempo complessivo di esecuzione dei lavori.

Ciò rende l'esecuzione del lavoro sensibile al tempo per le attività a esecuzione lenta perché solo una singola attività lenta può rendere l'intero tempo di esecuzione del lavoro più lungo del previsto. Quando un lavoro è composto da migliaia o centinaia di attività, la possibilità di poche attività sfalsate è molto reale.

Le attività possono essere lente a causa di vari motivi, ad esempio un'errata configurazione del software o il degrado dell'hardware. Ma la causa che rallenta l'esecuzione del lavoro è difficile da rilevare perché le attività continuano a essere completate correttamente, anche se richiede più tempo del previsto.

Il framework Hadoop non tenta di diagnosticare o correggere le attività a esecuzione lenta. Il framework tenta di rilevare l'attività che è in esecuzione a una velocità inferiore alla velocità prevista e avvia un'altra attività, che è un'attività equivalente a un backup.

L'attività di backup è nota come attività speculativa e questo processo è noto come esecuzione speculativa in Hadoop.

Qual ​​è la necessità di un'esecuzione speculativa in Hadoop?

Nel framework Hadoop, il file di input è partizionato in più blocchi e tali blocchi sono stati archiviati su diversi nodi nel cluster Hadoop.

Quando il processo MapReduce viene inviato dal client, calcola il numero di InputSplit ed esegue tanti mappatori quanti sono il numero di InputSplit. Questi mappatori (attività di mappatura) vengono eseguiti in parallelo sui DataNode, dove risiedono i dati divisi.

Ora, cosa succede se i pochi DataNode nel cluster Hadoop non eseguono le attività alla stessa velocità degli altri DataNode a causa di guasti hardware o problemi di rete.

Quindi le attività della mappa in esecuzione su quei DataNode saranno più lente rispetto alle attività della mappa in esecuzione sugli altri DataNode. Il Riduttore può iniziare la sua esecuzione solo quando sono disponibili le uscite intermedie di tutti i mappatori.

Pertanto, il minor numero di attività mappa a esecuzione lenta ritarderà l'esecuzione di Reducer.

Se il riduttore è in esecuzione sul nodo più lento, ciò ritarderà anche l'output finale del lavoro complessivo.

Quindi, per proteggersi da tali attività a esecuzione lenta, il framework Hadoop avvia la stessa attività sull'altro nodo. Questa ottimizzazione da parte del framework Hadoop è chiamata esecuzione speculativa dell'attività.

Come funziona l'esecuzione speculativa in Hadoop?

L'esecuzione speculativa non avvia le due attività duplicate di ogni attività indipendente di un lavoro all'incirca nello stesso momento in modo che possano gareggiare a vicenda. Se il framework lo fa, porterebbe allo spreco delle risorse del cluster.

Invece, lo scheduler tiene traccia dell'avanzamento di tutte le attività dello stesso tipo (come mappare e ridurre) in un lavoro e avvia solo i duplicati speculativi per piccole proporzioni che erano più lente della media.

Quando l'attività viene completata correttamente, tutte le attività duplicate in esecuzione vengono terminate poiché non erano più necessarie.

Quindi, nel caso in cui l'attività originale venga completata prima dell'attività speculativa, l'attività speculativa viene interrotta. Se l'attività speculativa termina prima dell'attività originale, l'originale viene terminato.

Nota che l'esecuzione speculativa è un'ottimizzazione. Non è una funzionalità per rendere i lavori MapReduce eseguiti in modo più affidabile.

Come configurare l'esecuzione speculativa in Hadoop?

Per impostazione predefinita, l'esecuzione speculativa è abilitata per l'attività Mappa così come per le attività di riduzione. Le sue proprietà sono impostate in mapred-site.xml file di configurazione.

  • mapreduce.map.speculative :se questa proprietà è impostata su true, l'esecuzione speculativa dell'attività di mappatura è abilitata. Per impostazione predefinita, è vero.
  • mapreduce.reduce.speculative :se questa proprietà è impostata su true, l'esecuzione speculativa dell'attività di riduzione è abilitata. Per impostazione predefinita, è vero.

Perché mai vorresti disattivare l'esecuzione speculativa?

L'obiettivo principale dell'esecuzione speculativa è ridurre i tempi di esecuzione del lavoro. Ma ciò avverrà a scapito dell'efficienza del cluster Hadoop.

In un cluster Hadoop occupato, ciò può ridurre il throughput complessivo perché le attività ridondanti vengono eseguite per ridurre il tempo di esecuzione per il singolo lavoro.

Per questo motivo, alcuni amministratori di cluster disattivano l'esecuzione speculativa sul cluster Hadoop e la fanno attivare esplicitamente dagli utenti per i singoli lavori.

Possiamo disattivarlo per le attività di riduzione perché qualsiasi attività di riduzione duplicata richiede di recuperare gli stessi output del mappatore dell'attività originale, il che aumenterà significativamente il traffico di rete sul cluster.

L'esecuzione speculativa è vantaggiosa?

L'esecuzione speculativa in Hadoop è vantaggiosa in alcuni casi perché nel cluster Hadoop con centinaia o migliaia di nodi, i problemi come la congestione della rete o il guasto dell'hardware sono comuni.

Quindi eseguire attività parallele o duplicate sarà migliore. Ma nel caso, se le due attività duplicate di ogni attività indipendente di un lavoro vengono avviate all'incirca nello stesso momento, sarà uno spreco di risorse del cluster.

Riepilogo

Spero che dopo aver letto questo articolo, tu abbia capito chiaramente cos'è l'esecuzione speculativa in Hadoop e perché è necessaria. Hai anche visto come possiamo disabilitarlo per le attività sulla mappa e ridurre le attività individualmente.