MapReduce

Le MapReduce est un cadre de logiciel de mis en application par le Google pour soutenir des calculs parallèles au-dessus de grands (Terabyte de plus considérablement que 100 ) ensembles de données sur les faisceaux incertains des ordinateurs. Ce cadre est en grande partie pris de la carte et le réduisent des fonctions de utilisées généralement dans la programmation fonctionnelle .

Des réalisations de MapReduce ont été écrites en C++ , Java et d'autres langues.

Flux de données

La partie gelée du cadre de MapReduce est une grande sorte distribuée. Les points chauds, que l'application définit, sont :
un lecteur des travaux de
une fonction de la carte de
une fonction de la cloison de
un comparent la fonction de
un réduisent la fonction de
un Editeur des sorties de

Lecteur des travaux

Le lecteur des travaux de divise l'entrée en 16MB aux fentes 128MB et le cadre assigne une fente à chaque fonction de la carte de . Le lecteur des travaux de lit les données du stockage stable (typiquement un système de fichiers distribué comme système de fichiers de Google ) et produit des paires de clef/valeur.

Un exemple commun lira un annuaire complètement des dossiers des textes et renverra chaque ligne comme disque.

Fonction de carte

Chaque fonction de la carte de obtient la série de paires de clef/valeur ; traite chacun ; et produit de 0 paires ou plus de clef/valeur de rendement. Les types d'entrée et de rendement des cartes peuvent être (et être souvent) différents entre eux.

Si l'application fait un compte de mot, la fonction de carte diviserait la ligne en mots et produirait le mot comme clef et 1 comme valeur.

Fonction de cloison

Le rendement de toutes les cartes sont assignés au détail réduit par la fonction de la cloison du des applications. La fonction de la cloison de est donnée la clef et le nombre de réduit et les retours l'index du désiré réduisent .

Un défaut typique est de hacher la clef et le modulo le nombre de réduit .

Fonction de comparaison

L'entrée pour chaque réduisent est tirée de la machine où la carte de a fonctionné et a assorti using la fonction de la comparaison du de l'application.

Réduire la fonction

Le cadre appelle le de l'application réduisent la fonction de une fois pour chaque clef unique dans l'ordre assorti. Le réduisent peut réitérer par les valeurs qui sont associées à cette clef et a produit 0 paires ou plus de clef/valeur.

Dans l'exemple de compte de mot, le réduisent la fonction de prend les valeurs d'entrée, les additionne et produit d'un à sortie unique du mot et de la somme finale.

Editeur des sorties

L'Editeur des sorties de écrit le rendement de la réduction au stockage stable, habituellement un système de fichiers distribué, tel que le système de fichiers de Google .

Distribution et fiabilité

MapReduce réalise la fiabilité en partageant dehors un certain nombre d'opérations sur l'ensemble de données à chaque noeud dans le réseau ; on s'attend à ce que chaque noeud fasse rapport périodiquement avec les travaux et les mises à jour de statut terminés. Si un noeud tombe silencieux pour plus longtemps que cet intervalle, le noeud principal (semblable au serveur principal dans le système de fichiers de Google ) enregistre le noeud comme mort, et envoie le noeud assigné le travail à d'autres noeuds. Les différentes opérations emploient des opérations atomiques du pour des sorties de dossier de nomination comme vérification pour s'assurer qu'il n'y a pas fonctionnement contradictoire parallèle de fils ; quand des dossiers sont retitrés, il est possible de les copier également à un autre nom en plus du nom de la tâche (tenant compte d'effets secondaires ).

Les opérations de réduction actionnent plus ou moins la même manière, mais en raison de leurs propriétés inférieures en ce qui concerne des opérations parallèles, les tentatives de noeud principal de programmer ramènent des opérations sur le même noeud, ou qu'étroitement comme possible au noeud contenant les données étant opéré ; cette propriété est souhaitable pour Google car elle conserve la largeur de bande.

Utilisations

MapReduce est utile dans une étendue des applications large, incluant : " ; Grep distribué , sorte distribuée, inversion de lien-graphique de Web, limite-vecteur de par centre serveur, stat de notation d'accès de Web, construction de l'index inversé , document groupant, étude de machine , " statistique de la traduction automatique … ; Le plus de manière significative, quand MapReduce était de finition, il a été employé pour régénérer complètement l'index de Google du World Wide Web , et a remplacé les programmes ad hoc du vieux qui ont mis à jour l'index et ont couru les diverses analyses.

Les entrées stables et les sorties de MapReduce sont habituellement stockées dans un système de fichiers distribué. Les données passagères sont habituellement stockées sur le disque local et cherché à distance par réduit.

Réalisations

Le cadre de Google MapReduce de est mis en application dans le C++ avec des interfaces dans le python et le Java .
MapReduce a été également mis en application pour le moteur à bande large de cellules de le projet de Hadoop de *The est une exécution libre de Java MapReduce de de source ouverte.
Le Concurrent de quart est une version simpified du cadre, mise en application dans le C++ , utilisé pour distribuer une tâche entre les noyaux multiples de processeur.
Random links:Jacksonville, Missouri | Bruits de maïs | Perte de bas niveau | Musée de Greenwood | Engagement de national des Barbade | MapReduce