HBase
 sql >> Base de données >  >> NoSQL >> HBase

Exécution spéculative dans Hadoop MapReduce

Dans cet article MapReduce Speculative Execution, vous allez explorer en détail l'exécution spéculative Hadoop. Vous apprendrez ce qu'est l'exécution spéculative, quel est son besoin, comment nous pouvons l'activer et la désactiver.

L'article explique également si cela est bénéfique ou non et comment cela fonctionne.

Qu'est-ce que l'exécution spéculative dans Hadoop ?

Le modèle MapReduce du framework Hadoop divise les tâches en tâches indépendantes et exécute ces tâches en parallèle afin de réduire le temps d'exécution global des tâches.

Cela rend l'exécution du travail sensible au facteur temps pour les tâches à exécution lente, car une seule tâche lente peut rendre la durée d'exécution du travail plus longue que prévu. Lorsqu'un travail se compose de milliers ou de centaines de tâches, la possibilité de quelques tâches dispersées est très réelle.

Les tâches peuvent être lentes pour diverses raisons, telles qu'une mauvaise configuration du logiciel ou une dégradation du matériel. Mais la cause qui ralentit l'exécution du travail est difficile à détecter car les tâches se terminent toujours avec succès, même si cela prend plus de temps que prévu.

Le framework Hadoop n'essaie pas de diagnostiquer ou de corriger les tâches lentes. Le framework essaie de détecter la tâche qui s'exécute plus lentement que la vitesse attendue et lance une autre tâche, qui est une tâche équivalente en tant que sauvegarde.

La tâche de sauvegarde est appelée tâche spéculative et ce processus est appelé exécution spéculative dans Hadoop.

Quel est le besoin d'exécution spéculative dans Hadoop ?

Dans le framework Hadoop, le fichier d'entrée est partitionné en plusieurs blocs, et ces blocs ont été stockés sur les différents nœuds du cluster Hadoop.

Lorsque le travail MapReduce est soumis par le client, il calcule le nombre d'InputSplits et exécute autant de mappeurs que le nombre d'InputSplits. Ces mappeurs (tâches de mappage) s'exécutent en parallèle sur les DataNodes, où résident les données fractionnées.

Maintenant, que se passe-t-il si les quelques DataNodes du cluster Hadoop n'exécutent pas les tâches aussi rapidement que les autres DataNodes en raison d'une panne matérielle ou de problèmes de réseau.

Ainsi, les tâches de carte exécutées sur ces DataNodes seront plus lentes que les tâches de carte exécutées sur les autres DataNodes. Le Reducer ne peut démarrer son exécution que lorsque les sorties intermédiaires de tous les mappers sont disponibles.

Ainsi, moins de tâches de carte lentes retarderont l'exécution du réducteur.

Si le réducteur s'exécute sur le nœud le plus lent, cela retardera également la sortie finale globale de la tâche.

Ainsi, afin de se prémunir contre de telles tâches lentes, le framework Hadoop démarre la même tâche sur l'autre nœud. Cette optimisation par le framework Hadoop est appelée exécution spéculative de la tâche.

Comment fonctionne l'exécution spéculative dans Hadoop ?

L'exécution spéculative ne lance pas les deux tâches en double de chaque tâche indépendante d'un travail à peu près au même moment afin qu'elles puissent s'affronter. Si le framework le faisait, cela entraînerait un gaspillage des ressources du cluster.

Au lieu de cela, le planificateur suit la progression de toutes les tâches du même type (telles que mapper et réduire) dans un travail, et ne lance que les doublons spéculatifs pour de petites proportions qui s'exécutaient plus lentement que la moyenne.

Lorsque la tâche est terminée avec succès, toutes les tâches en double en cours d'exécution ont été supprimées car elles n'étaient plus nécessaires.

Ainsi, si la tâche d'origine se termine avant la tâche spéculative, la tâche spéculative est supprimée. Si la tâche spéculative se termine avant la tâche d'origine, alors l'original est tué.

Notez que l'exécution spéculative est une optimisation. Il ne s'agit pas d'une fonctionnalité permettant d'exécuter les tâches MapReduce de manière plus fiable.

Comment configurer l'exécution spéculative dans Hadoop ?

Par défaut, l'exécution spéculative est activée pour la tâche Map ainsi que pour les tâches de réduction. Ses propriétés sont définies dans le mapred-site.xml fichier de configuration.

  • mapreduce.map.speculative :Si cette propriété est définie sur true, l'exécution spéculative de la tâche de carte est activée. Par défaut, c'est vrai.
  • mapreduce.reduce.speculative :Si cette propriété est définie sur true, l'exécution spéculative de la tâche de réduction est activée. Par défaut, c'est vrai.

Pourquoi voudriez-vous désactiver l'exécution spéculative ?

L'objectif principal de l'exécution spéculative est de réduire le temps d'exécution des tâches. Mais cela se fera au détriment de l'efficacité du cluster Hadoop.

Sur un cluster Hadoop occupé, cela peut réduire le débit global, car les tâches redondantes sont exécutées afin de réduire le temps d'exécution pour le travail unique.

Pour cette raison, certains administrateurs de cluster désactivent l'exécution spéculative sur le cluster Hadoop et demandent aux utilisateurs de l'activer explicitement pour les tâches individuelles.

Nous pouvons le désactiver pour les tâches de réduction, car toute tâche de réduction en double nécessite de récupérer les mêmes sorties de mappeur que la tâche d'origine, ce qui augmentera considérablement le trafic réseau sur le cluster.

L'exécution spéculative est-elle bénéfique ?

L'exécution spéculative dans Hadoop est bénéfique dans certains cas, car dans le cluster Hadoop ayant des centaines ou des milliers de nœuds, les problèmes tels que la congestion du réseau ou les pannes matérielles sont courants.

Il sera donc préférable d'exécuter des tâches parallèles ou dupliquées. Mais dans le cas où, si les deux tâches en double de chaque tâche indépendante d'un travail sont lancées à peu près au même moment, cela constituera un gaspillage des ressources du cluster.

Résumé

J'espère qu'après avoir lu cet article, vous avez clairement compris ce qu'est l'exécution spéculative dans Hadoop et pourquoi elle est nécessaire. Vous avez également vu comment nous pouvons le désactiver pour les tâches cartographiques et réduire les tâches individuellement.