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.
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
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
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
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
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!