Comprenez le calcul distribué
Pour comprendre de facon simple et intuitive le calcul distribué, un bon exemple est le projet SETI@home. Il s'agit d'un projet visant à "écouter" et analyser le ciel à la recherche de signes d'une possible vie intelligente dans l'Univers.
On pourrait penser que ce type de travaux scientifiques est réservé aux spécialistes de la NASA... et en un sens cela est vrai, en tout cas pour une partie de l'analyse des résultats. Mais pour une partie de l'analyse des résultats, un simple logiciel suffit.
On sait que la quantité de données à analyser est extrêmement importante, et qu'il faudrait acheter ou louer une puissance de calcul gigantesque (et donc générer des couts très importants) si la NASA gérait seule ces opérations.
Or, en ce qui concerne l'Espace, il existe de nombreux curieux, plus ou moins passionnés, plus ou moins "savants" et plus ou moins désireux d'apporter leur pierre à la recherche scientifique.
Pourquoi ne pas leur demander de "prêter" leur ordinateur afin de faire une partie des analyses ?
C'est justement ce que permet de faire le logiciel : en le téléchargant et en l'installant, vous pouvez mettre à contribution votre ordinateur personnel pour accélérer l'analyse des données.
Cette décomposition en temps et en espace se prête particulièrement bien à l'analyse distribuée, puisqu'il "suffit" d'assigner à chaque nœud une tâche correspondant à l'analyse d'une portion temporelle et spatiale des données.
Distinguez calcul parallèle et calcul distribué
Le fait que les ressources soient fournies par des volontaires éparpillés dans le monde introduit une différence significative avec le calcul parallèle dont vous avez peut-être l'habitude : lors d'un calcul réalisé en parallèle, différents threads d'exécutions sont exécutés en même temps et partagent une mémoire commune qui leur permettent de se synchroniser entre eux.
D'un côté, ce nouveau modèle de calcul résout un certain nombre de problèmes : par exemple, le passage à l'échelle s'effectue de manière horizontale c'est à dire qu'il suffit d'ajouter des nœuds au cluster pour augmenter sa capacité de calcul. Dans le modèle parallèle, on passe à l'échelle de manière verticale, en augmentant la puissance des processeurs. Mais avec le ralentissement de la loi de Moore, ce dernier modèle est remis en question.
Par ailleurs, le modèle distribué permet une plus grande tolérance aux pannes : lorsqu'un nœud du cluster subit une panne, il suffit d'affecter la tâche qu'il était en train de traiter à un autre nœud, alors que dans le modèle parallèle la machine sur laquelle le calcul est exécuté constitue un point unique de défaillance.
Cependant, cette stratégie de tolérance aux pannes nécessite de pouvoir recréer l'état du nœud en échec. ll s'agit d'une question d'autant plus complexes que nous parlons ici de données dont le volume est important.
Appréhendez MapReduce et Hadoop
Nous avons donné un exemple d'application de calcul distribué, mais cela n'est qu'un exemple. Il existe une infinité d'usages pour le calcul distribué.
Se pose alors une question, comment va t-on implémenter le code qui permet de gérer cette diversité de calculs différents et qui permet de répartir ces calculs sur plusieurs Noeuds.
Notons qu'il faut bien distinguer deux choses :
d'un coté, la partie calcul : "Comment les opérations informatiques vont etre effectuées?"
de l'autre la parie gestion : "Comment va ton piloter les différends noeuds du réseaux?"
Pour la premiere partie, à été inventé en 2004 chez Google un cadre générique de gestion des calucls qui s'appelle MapReduce.
En clair MapReduce est un modèle de programmation qui permet de décomposer des taches très complexes en opérations très simples, de sorte quelles puissent être distribués sur différents noeuds d'un cluster.
Et la partie gestion ?
Dans les faits, on utilise rarement MapReduce tout seul. En effet, MapReduce est comme une sorte de plan théorique de ce qu'il faut faire. Bien le comprendre est essentiel, mais il ne suffit pas pour pouvoir réellement distribuer des calculs.
Pour ce faire, il faut, en plus de MapReduce, une infrastructure pour "gérer" la répartition des calculs. Une sorte de manager des calculs qui affecte les calculs aux noeuds, récupère les résultats, relance un calcul si une panne est arrivée, et bien d'autres choses. L'outil le plus emblématique pour cela s'appelle Hadoop.
En résumé
L'implémentation du projet Seti@Home est un bon exemple de calcul distribué.
Il consiste en la répartition d'une énorme tache comprenant un gigantesque volume de donnés sur différents ordinateurs à travers le monde.
Cette méthode a de nombreux avantages, notamment : le passage à l'échèle horizontale et la résistance aux pannes.
Pour faire du calcul distribué, il est donc besoin de décomposer une tache importante en de multiples taches plus petites, et de gérer la répartition de ces calculs à travers les différends noeuds
Le modèle MapReduce et le framework Hadoop permettent d'implémenter des calculs distribués.