Tous les produits
Search
Centre de documentation

MaxCompute:MapReduce

Dernière mise à jour :Aug 21, 2026

Cette rubrique décrit les interfaces de programmation MapReduce prises en charge par MaxCompute ainsi que leurs limites.

Qu'est-ce que MapReduce

MapReduce est un framework de calcul distribué classique. Il utilise une approche « diviser pour régner » afin de scinder les problèmes vastes ou complexes en sous-problèmes plus petits et gérables. Il résout ces sous-problèmes, puis fusionne les résultats pour obtenir la solution finale. Par rapport aux frameworks de programmation parallèle traditionnels, MapReduce offre des avantages tels qu'une tolérance aux pannes élevée, une facilité d'utilisation et une bonne extensibilité. Lorsque vous implémentez des programmes parallèles avec MapReduce, vous n'avez pas besoin de prendre en compte les détails sous-jacents d'un cluster distribué, tels que le stockage des données ou les mécanismes de communication entre les nœuds. Cela simplifie la programmation distribuée.

La figure suivante illustre le flux de travail de MapReduce.MapReduce

MaxCompute propose deux interfaces de programmation MapReduce :

  • MaxCompute MapReduce : il s'agit de l'API native MaxCompute. Cette version s'exécute rapidement et simplifie le développement car elle n'expose pas le système de fichiers.

  • MaxCompute extended MapReduce (MR2) : cette version prend en charge une logique de planification des tâches plus complexe et son implémentation est cohérente avec l'interface native MaxCompute. Par rapport au MapReduce traditionnel, ce modèle étendu modifie la planification sous-jacente et les modèles d'E/S afin d'éviter les opérations d'E/S redondantes lors de l'exécution des tâches.

Ces versions sont largement cohérentes en termes de Termes, de Soumission de tâche, d'Entrées et sorties et d'Utilisation des ressources, mais leurs SDK Java diffèrent. Pour plus d'informations, consultez le Tutoriel Hadoop Map/Reduce.

Remarque

Vous ne pouvez pas utiliser MapReduce pour lire ou écrire des données dans une table externe.

MapReduce

Scénarios

MapReduce prend en charge les scénarios suivants :

  • Recherche : exploration Web, index inversés et PageRank.

  • Analyse des journaux d'accès Web :

    • Analysez et exploitez le comportement des utilisateurs, tel que la navigation et les achats, pour fournir des recommandations personnalisées.

    • Analysez les modèles d'accès des utilisateurs.

  • Analyse statistique de textes :

    • Comptage de mots et analyse TF-IDF (term frequency-inverse document frequency) de romans populaires.

    • Analyse statistique et analyse des citations de documents académiques et de brevets.

    • Analyse des données Wikipedia.

  • Exploitation de grandes quantités de données, telles que des données non structurées, des données spatio-temporelles et des données d'image.

  • Apprentissage automatique : apprentissage supervisé, apprentissage non supervisé et algorithmes de classification, tels que les arbres de décision et les machines à vecteurs de support (SVM).

  • Traitement du langage naturel :

    • Entraînement et prédiction basés sur le big data.

    • Construction de matrices de cooccurrence de mots, extraction d'ensembles fréquents et détection de documents en double basés sur un corpus.

  • Recommandations publicitaires : prédiction des taux de clics (CTR) et des taux de conversion (CVR).

Description du processus MapReduce

Un programme MapReduce traite les données en deux étapes principales : une étape map suivie d'une étape reduce. Vous pouvez définir la logique de traitement pour ces étapes, mais elle doit respecter les conventions du framework MapReduce. Le flux complet de traitement des données de MapReduce est le suivant :

  1. Données d'entrée : avant l'opération map, les données d'entrée sont partitionnées en blocs de données de taille égale. Chaque bloc de données sert d'entrée à un worker map. Cela permet à plusieurs workers map de s'exécuter simultanément.

  2. Étape Map : chaque worker map lit et traite son bloc de données attribué. Il attribue ensuite une clé à chaque enregistrement de sortie. Cette clé détermine quel worker reduce recevra l'enregistrement.

    Remarque

    Les enregistrements de données ayant la même clé sont envoyés au même worker reduce. Un seul worker reduce peut recevoir des enregistrements de données ayant des clés différentes.

  3. Phase Shuffle : avant la phase Reduce, le framework MapReduce trie les données par clé, ce qui regroupe les données ayant la même clé. Si vous spécifiez une Combine Operation (Combiner), le framework appelle le Combiner pour agréger les données ayant la même clé. Vous pouvez personnaliser la logique du Combiner. Dans MaxCompute, contrairement au protocole classique du framework MapReduce, les paramètres d'entrée et de sortie du Combiner doivent être cohérents avec ceux de la phase Reduce. Cette partie du processus est également communément appelée Shuffle.

  4. Étape Reduce : les enregistrements de données ayant la même clé sont envoyés au même worker reduce. Un seul worker reduce peut recevoir des données provenant de plusieurs workers map. Chaque worker reduce effectue une opération reduce sur les enregistrements de données ayant la même clé, en les convertissant en une seule valeur.

  5. Données de sortie : les résultats sont générés.

Remarque

Cette section fournit une brève introduction au framework MapReduce. Pour plus d'informations, consultez Présentation des fonctions.

La section suivante utilise l'exemple WordCount pour expliquer les concepts de chaque étape dans MaxCompute MapReduce.

Supposons qu'un fichier nommé a.txt existe et que chaque ligne du fichier contienne un seul chiffre. L'objectif est de compter le nombre d'occurrences de chaque chiffre. Dans ce contexte, chaque chiffre est un « mot » et le nombre d'occurrences est le « count ». Pour ce faire, MaxCompute MapReduce suit le processus illustré dans la figure ci-dessous.

Procedure

  1. Données d'entrée : le fichier texte est partitionné. Les données de chaque partition servent d'entrée à un worker map.

  2. Étape Map : le worker map traite l'entrée. Pour chaque chiffre reçu, il définit le count à 1 et produit une paire <Word, Count>. Le word est utilisé comme clé pour les données de sortie.

  3. Shuffle > Combine et tri : au début de la phase shuffle, la sortie de chaque worker map est d'abord triée par clé (le word). Après le tri, une opération combiner est effectuée. Les counts pour la même clé (word) sont agrégés pour former une nouvelle paire <Word, Count>. Ce processus est appelé combine and sort.

  4. Shuffle > Attribution aux reducers : à la fin de la phase shuffle, les données sont envoyées aux reducers. Après qu'un worker reduce a reçu les données, il les trie à nouveau par clé.

  5. Étape Reduce : chaque worker reduce traite les données en utilisant la même logique que le combiner. Il agrège les counts pour la même clé (word) afin d'obtenir le résultat final.

  6. Données de sortie.

Remarque

Toutes les données MaxCompute sont stockées dans des tables. Par conséquent, les entrées et sorties de MaxCompute MapReduce doivent être des tables. Vous ne pouvez pas spécifier le format de sortie. Aucune interface de type système de fichiers n'est fournie.

Limites

Extended MapReduce (MR2)

Par rapport au MapReduce natif MaxCompute, la manière dont vous écrivez des fonctions telles que Map et Reduce dans MR2 est sensiblement la même. La principale différence réside dans la façon dont les tâches sont exécutées. Pour un exemple, consultez Exemple de pipeline.

Contexte du modèle MR2

Le modèle MapReduce traditionnel exige qu'après chaque cycle d'opérations MapReduce, les données résultantes soient stockées dans un système de fichiers distribué, tel que Hadoop Distributed File System (HDFS) ou une table MaxCompute. Un flux de travail MapReduce comprend généralement plusieurs tâches MapReduce. Une fois chaque tâche terminée, ses données intermédiaires doivent être écrites sur un disque. Cependant, une tâche map ultérieure pourrait n'avoir besoin de lire ces données qu'une seule fois avant la prochaine phase shuffle. Ce processus crée des opérations d'E/S disque redondantes.

La logique de calcul et de planification de MaxCompute prend en charge des modèles de programmation plus complexes. Pour remédier à cette situation, MaxCompute vous permet d'exécuter une opération reduce directement après une autre opération reduce, sans opération map intermédiaire. Par conséquent, MaxCompute propose un modèle MapReduce étendu qui permet d'enchaîner plusieurs opérations reduce après une opération map, telles que Map > Reduce > Reduce.

Comparaison avec Hadoop Chain Mapper et ChainReducer

Hadoop Chain Mapper et ChainReducer prennent également en charge des opérations map ou reduce sérialisées similaires. Cependant, ils sont fondamentalement différents du modèle MapReduce étendu (MR2) de MaxCompute.

Chain Mapper et ChainReducer sont basés sur le modèle MapReduce traditionnel. Ils vous permettent uniquement d'ajouter une ou plusieurs opérations map après l'opération map ou reduce originale. Vous ne pouvez pas ajouter d'opération reduce. L'avantage de cette approche est que vous pouvez réutiliser la logique métier mapper existante pour diviser une opération map ou reduce en plusieurs étapes mapper. Toutefois, cela ne modifie pas fondamentalement la planification sous-jacente ni les modèles d'E/S.