Maison > Problème commun > Comment s'appelle le processus de tri effectué par le système ?

Comment s'appelle le processus de tri effectué par le système ?

青灯夜游
Libérer: 2023-01-13 00:35:45
original
1674 Les gens l'ont consulté

MapReduce garantit que l'entrée de chaque réducteur est triée par clé, et le processus de tri effectué par le système est appelé shuffle. La phase de lecture aléatoire comprend principalement la combinaison, le groupe, le tri, la partition dans la phase de cartographie et le tri par fusion dans la phase de réduction.

Comment s'appelle le processus de tri effectué par le système ?

L'environnement d'exploitation de ce tutoriel : système Windows 7, ordinateur Dell G3.

MapReduce garantit que l'entrée de chaque réducteur est triée par clé, et le processus de tri effectué par le système est appelé shuffle. Nous pouvons le comprendre comme l'ensemble du projet dans lequel la carte génère une sortie et digère les entrées pour les réduire.

Côté carte : chaque mapperTask dispose d'un tampon mémoire en anneau utilisé pour stocker la sortie de la tâche map. Une fois le seuil atteint, un thread d'arrière-plan écrit le contenu dans un nouveau fichier d'écriture de débordement dans le répertoire spécifié sur le. disk. , partition, sort et combineur doivent être transmis avant d’écrire sur le disque. Une fois le dernier enregistrement écrit, fusionnez tous les fichiers écrits en débordement en un seul fichier partitionné et trié.

Côté réduction : peut être divisé en étape de copie, étape de tri, étape de réduction

Étape de copie : le fichier de sortie de la carte est situé sur le disque local du tracker de tâches exécutant la tâche de carte et réduit les résultats la sortie via http Pour la partition du fichier, tasktracker exécute la tâche de réduction pour le fichier de partition. Tant qu'une tâche de mappage est terminée, la tâche de réduction commence à copier la sortie.

Phase de tri : Un terme plus approprié est la phase de fusion, car le tri est effectué côté carte. Cette étape fusionnera la sortie de la carte, conservera son ordre et effectuera une boucle.

L'étape finale est l'étape de réduction. La fonction de réduction est appelée pour chaque clé de la sortie triée. La sortie de cette étape est écrite directement dans le système de fichiers de sortie, généralement HDFS. ,

Description de la phase de mélange

La phase de mélange comprend principalement la combinaison, le groupe, le tri, la partition de la phase de carte et le tri par fusion de la phase de réduction. Après la lecture aléatoire à l'étape Map, les données de sortie seront enregistrées dans des fichiers en fonction des partitions réduites et le contenu des fichiers sera trié selon le tri défini. Une fois la phase de cartographie terminée, l'ApplicationMaster sera informé, puis l'AM demandera à la réduction d'extraire les données et effectuera le processus de lecture aléatoire du côté réduction pendant le processus d'extraction.

Remarque : les données de sortie de l'étape Map sont stockées sur le disque exécutant le nœud Map. Il s'agit d'un fichier temporaire et n'existe pas sur HDFS. Une fois que Réduire a extrait les données, le fichier temporaire sera supprimé. S'il existe sur HDFS, il sera supprimé. Cela entraîne une perte d'espace de stockage (trois copies seront générées).

  • Combiner défini par l'utilisateur

    Combiner peut réduire le nombre de résultats de sortie intermédiaires dans l'étape Map et réduire la surcharge du réseau. Par défaut, il n'y a pas de Combiner. Le Combiner défini par l'utilisateur doit être une sous-classe de Réducteur. La sortie de la Map est utilisée comme entrée pour dire, l'entrée et la sortie du Combiner doivent être identiques.

    Vous pouvez définir la classe de traitement du combinateur via job.setCombinerClass. Le framework MapReduce ne garantit pas que la méthode de cette classe sera appelée.

    Remarque : Si l'entrée et la sortie de réduire sont les mêmes, vous pouvez directement utiliser la classe de réduction comme combinateur

  • Partitionneur défini par l'utilisateur

    Le partitionneur est utilisé. Déterminez quel nœud est le réducteur de traitement correspondant à la sortie Le nombre de réduction par défaut de la tâche MapReduce est 1. À l'heure actuelle, le partitionneur n'a aucun effet. Cependant, lorsque nous modifions le nombre de réduction en multiple, le partitionneur déterminera le numéro de nœud de la réduction correspondant à la clé (en commençant à 0). ).

    Vous pouvez spécifier la classe Partitioner via la méthode job.setPartitionerClass Par défaut, HashPartitioner est utilisé (la méthode hashCode de key est appelée par défaut).

  • Groupe défini par l'utilisateur

    GroupingComparator est utilisé pour regrouper la sortie de Map dans > La classe, pour le dire franchement, est utilisée pour déterminer si key1 et key2 appartiennent au même groupe. S'il s'agit du même groupe, les valeurs de sortie de la carte sont combinées.

    Nécessite que notre classe personnalisée implémente l'auto-interface RawComparator, et la classe de comparaison peut être spécifiée via la méthode job.setGroupingComparatorClass. Par défaut, WritableComparator est utilisé, mais la méthode compareTo de la clé est finalement appelée à des fins de comparaison.

  • Tri défini par l'utilisateur

    SortComparator est la classe de clé utilisée pour trier la sortie à quel groupe key1 appartient et à quel groupe key2 appartient vient en premier et lequel vient en dernier.

    Nécessite que notre classe personnalisée implémente l'auto-interface RawComparator, et la classe de comparaison peut être spécifiée via la méthode job.setSortComparatorClass. Par défaut, WritableComparator est utilisé, mais la méthode compareTo de la clé est finalement appelée à des fins de comparaison.

  • Mélange du réducteur défini par l'utilisateur

    Lorsque le côté réduction extrait les données de sortie de la carte, un mélange (tri par fusion) sera effectué et le cadre MapReduce est fourni en mode plug-in De manière personnalisée, nous pouvons spécifier des règles de lecture aléatoire personnalisées en implémentant l'interface ShuffleConsumerPlugin et en spécifiant le paramètre mapreduce.job.reduce.shuffle.consumer.plugin.class, mais en général, la classe org par défaut est utilisée directement .apache.hadoop.mapreduce.task.reduce.Shuffle.

Pour plus de connaissances sur la programmation, veuillez visiter : Vidéo de programmation ! !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal