Avec l'arrivée de Hadoop et du phénomène "Big Data", qui fait référence à l'explosion des données, de nombreuses personnes sont à la recherche d'approches et de conseils pour convertir leurs implémentations existantes en implémentations basées sur MapReduce. Malheureusement, à l'exception notable de "Data-Intensive Text Processing with MapReduce" et "Mahout in Action", il existe très peu de publications sur la conception d'algorithmes MapReduce. Dans son nouvel article "MapReduce Patterns, Algorithms, and Use Cases", Ilya Katsov fournit un aperçu des problématiques qui peuvent être résolues à l'aide d'algorithmes de type MapReduce.
L'article commence par décrire une utilisation assez basique d'un algorithme MapReduce, qui permet d'exécuter de nombreux calculs de façon parallélisée. Cette utilisation de MapReduce est applicable à de nombreux cas d'utilisations qui nécessitent la mobilisation d'importants clusters de calcul et de traitement de données, comme par exemple les simulations physiques, l'analyse numérique, les tests de performance, etc. L'auteur présente ensuite un groupe d'algorithmes couramment utilisés pour l'analyse de logs, les ETL et le requêtage de données, et qui utilisent des fonctions de comptage, de somme, de filtrage, d'analyse, de validation et de tri.
Le second grand groupe de pattern MapReduce présenté par Ilya Katsov comprend plusieurs modèles relationnels souvent utilisés par les applications d'entrepôts de données. Ces modèles bénéficient des frameworks Hive et Pig et permettent d'exécuter des fonctions de sélection de données, projection de données, d'union, de différence, d'intersection et d’agrégation (groupBy). Une discussion est consacrée à l'implémentation de data joins et à l'ajout d'algorithmes tels que repartition joins et replicated joins.
L'article présente ensuite des algorithmes MapReduce de calcul plus complexes, comme le traitement de graphe, les algorithmes de recherche (breadth first search), le page rank et l'aggrégation de données qui peuvent être exploités dans l'analyse graphique, l'indexation de contenu Web et les applications de recherche plus généralistes. Il couvre également l'analyse de texte ainsi que des cas d'utilisations dans le domaine de l'analyse de marché. Cette partie couvre les modèles de conception pairs et stripes et compare leurs principaux avantages et inconvénients.
Enfin, Ilya Katsov fournit de nombreuses références vers des implémentations d'algorithmes MapReduce plus complexes touchant au domaine du Machine Learning.
La plupart des algorithmes décrits dans l'article sont accompagnés de pseudo-code et d'informations de base sur leur applicabilité, leur avantage et leur inconvénient respectifs.
Beaucoup de gens aujourd'hui rencontrent des difficultés à utiliser Hadoop et MapReduce pour résoudre les problématiques qu'ils rencontrent. Certains considèrent encore MapReduce comme une "approche technique à la recherche d'un problème commercial". Cet article vient combler un vide dans le domaine des algorithmes de MapReduce, des cas d'utilisation et des design patterns. Il montre la puissance de MapReduce, bien au-delà du traditionnel "count word", et présente les façons dont il peut être utilisé pour résoudre un large éventail de problèmes concrets.