INEX. Informatique en Nuage : Expérimentations et Vérification. Livrable n M2.1 ÉTUDE ET PARALLÉLISATION. Jérôme Richard

Dimension: px
Commencer à balayer dès la page:

Download "INEX. Informatique en Nuage : Expérimentations et Vérification. Livrable n M2.1 ÉTUDE ET PARALLÉLISATION. Jérôme Richard"

Transcription

1 INEX Informatique en Nuage : Expérimentations et Vérification Livrable n M2.1 ÉTUDE ET PARALLÉLISATION D ALGORITHMES POUR L ANALYSE DE GRANDS GRAPHES DE RÉSEAUX SOCIAUX Jérôme Richard Univ. Orléans, INSA Centre Val de Loire, LIFO EA 4022, France

2 2 INEX

3 1 ère année de Master informatique Université Orléans ( ) É tude et paralle lisation d algorithmes pour l analyse de grands graphes de re seaux sociaux Jérôme Richard Tuteur de stage : Nicolas Dugué et Anthony Perez

4 Table des matières Introduction... 3 Présentation... 3 Environnement de travail... 3 Sujet du stage... 4 Analyse... 5 Pregel... 5 Giraph... 7 Exemple d'application... 7 MPI Travail réalisé Mise en place de l environnement de développement Applications Giraph Programmes complémentaires Programme MPI Fonctionnement Résultat des tests et comparatif Détail du contenu du SVN Bilan... 18

5 Introduction À la fin d'une première année de Master, chaque étudiant peut réaliser s'il le souhaite un stage facultatif. Cette expérience permet de mettre en application les connaissances acquises durant la formation, mais aussi de les étendre et de se confronter au monde du travail. J'ai eu la chance de pouvoir effectuer mon stage de troisième année de licence au LIFO avec l'équipe PaMDA et de pouvoir retenter l'expérience cette année au sein d'une autre équipe du laboratoire. Ce stage m'offre une nouvelle chance de travailler dans le domaine de la recherche, mais aussi de travailler sur de nouvelles branches de l'informatique telle que la manipulation de grand graphe dans un environnement distribué hétérogène. Présentation Environnement de travail Le LIFO accueille chaque année des étudiants qui effectuent des stages. Doctorants, professeurs et maîtres de conférences se partagent les bureaux. Au cours de mon stage, j ai travaillé en étroite collaboration avec mon tuteur Nicolas Dugué et avec l'aide d'anthony Perez. J'ai aussi travaillé avec d'administrateur système Sébastien Guibert qui m'a aidé à mettre en place des outils nécessaires au bon déroulement de mon stage sur les machines du LIFO. Au début de mon stage, on m'a confié des accès à un cluster de calcul et à un environnement Cloud installé et configuré me permettant par la suite de lancer d'effectuer des tests d'algorithmes répartis (pouvant parfois durer plusieurs heures à plusieurs jours). On m a aussi fourni un accès à un serveur de versionnage qui m'a permis de régulièrement sauvegarder mon travail et d'éviter ainsi des problèmes de pertes de données liés au stage. Les serveurs étant accessible depuis internet, j'ai pu effectuer une petite partie du stage chez moi où j'ai pu travailler dans un environnement plus calme et plus familier, communiquant par mail avec mon tuteur et l'administrateur réseau en cas de problèmes. Afin de réaliser mes tests sur des données réelles, on a mis à ma disposition des graphes de réseaux sociaux comme celui de Twitter ou le LiveJournal de Stanford.

6 Sujet du stage Depuis quelques années, dans les secteurs de l Internet, de l analyse décisionnelle ou encore de la génétique sont collectées et analysées des données de plus en plus volumineuses et complexes. Ce phénomène connu sous le nom de Déluge des données (ou très souvent sous l anglicisme Big Data) soulève de nombreuses problématiques. En particulier, être capable de stocker, partager et analyser de telles quantités de données constitue un enjeu d étude essentiel. Dans de nombreux cas, ces données peuvent être représentées en utilisant la théorie des graphes. Cette dernière est particulièrement appropriée pour étudier les réseaux sociaux, où les connexions entre utilisateurs peuvent facilement être représentées et analysées en utilisant des graphes, le plus souvent orientés. Cependant, le nombre d utilisateurs des réseaux sociaux sur Internet a littéralement explosé récemment, ce qui aboutit à la création de graphes de très grande taille, dont les propriétés structurelles sont difficiles à étudier. Afin de pouvoir analyser efficacement des réseaux d une telle taille, le parallélisme et la distribution des algorithmes au sein d un parc de serveurs ou d un Cloud devient nécessaire. Ainsi, de nombreux framework spécifiques au développement d algorithmes de graphes distribués inspirés de l approche Pregel sont nés : Apache Giraph, Apache Hama, HipG, Signal/Collect. Ceux-ci forcent à implémenter les algorithmes selon un modèle précis et donc à les repenser partiellement. En revanche, ils prennent en charge la parallélisation de l algorithme automatiquement. L objectif de départ dans lequel s inscrivait ce stage était le développement d une librairie parallèle d algorithmes destinée à l analyse de grands graphes de réseaux sociaux dont les axes étaient les suivants : Dans un premier temps, il s agissait d évaluer les frameworks spécifiques au développement d algorithmes de graphes distribués inspirés de l approche Pregel selon la facilité de programmation qu ils offrent, la souplesse de leur modèle et leur efficacité. Dans un second temps, je devais développer des algorithmes de graphe distribués destinés à l analyse de réseaux sociaux (détection de communautés, de structures de graphe, mesures de centralités, algorithme de flot). Enfin, je devais appliquer ces algorithmes sur grands graphes de réseaux sociaux et valider les résultats en terme d efficacité et de simplicité d implémentation.

7 Analyse Avant de parler du framework Giraph sur lequel j'ai principalement travaillé, il est nécessaire de détailler le modèle Pregel sur lequel il repose. En effet, de nombreux algorithmes de graphes supposent que l'ensemble du graphe traité réside en mémoire et traite ce graphe séquentiellement. Seulement, certains graphes sont tellement grands qu'il est impossible de les stocker en mémoire. De plus, le temps de calcul de ces algorithmes peut vite exploser sur ces grands graphes. Il est alors nécessaire de redéfinir l'algorithme pour qu'il fonctionne sur un environnement distribué. C'est-à-dire, décomposer le graphe en plusieurs partitions et les manipuler en parallèle sur plusieurs machines pour accélérer le traitement et réduire alors la limitation de la mémoire fixée par une seule machine. Il existe des framework se basant sur des modèles connus comme le MapReduce ou des dérivés qui ont de nombreux avantages comme celui de pouvoir traiter de gros volumes de données dans un environnement distribué de manière relativement simple. Néanmoins, ce modèle s'adapte difficilement à la manipulation de graphe en pratique. Afin de simplifier la programmation d'algorithme de graphe dans un environnement distribué, un nouveau modèle a été créé : Pregel. Pregel Dans le modèle Pregel, le plus petit élément manipulable est un nœud. Ce nœud possède un identifiant, des propriétés, des arcs sortants (avec des propriétés) qui pointe sur des nœuds (via leurs identifiants) et un état (actif ou non). Chaque nœud détient en plus une boite-aux-lettres de messages reçus, lui permettant de lire des messages provenant d autres nœuds qui peuvent être connecté. Un nœud peut aussi envoyer des messages à d autres nœuds. Seuls les nœuds actifs travaillent. Un nœud actif peut s'endormir, il devient alors inactif et sera réveillé lorsqu'il recevra un message. Le traitement du graphe prend fin lorsque tous les nœuds sont inactifs. Fondamentalement, chaque nœud actif va donc lire des messages dans sa boite-aux-lettres puis les traiter et finalement retransmettre d'autres messages à ces voisins si nécessaire.

8 Figure 1 Structure d un nœud dans le modèle Pregel Le graphe est décomposé en multiple groupe appelés partitions et chacune contient un grand nombre de nœuds et chaque partition est traitée de manière séquentielle. Le modèle d'exécution utilisé est le BSP (Bulk Synchronous Processing). Dans ce modèle, une multitude de tâche s'exécute en parallèle sous forme de séquences appelées supersteps. Dans chaque superstep, les tâches commencent par recevoir tous les messages provenant des tâches du superstep précédent, les traitent et peuvent envoyer d'autres messages. La transmission des messages se fait de manière asynchrone et simultanée sur toutes les tâches. Les messages envoyés lors d'un superstep ne seront pas accessible avant le superstep suivant. Lorsque toutes les tâches se sont terminées, un nouveau superstep peut être démarré et ainsi de suite jusqu'à ce qu'une condition d'arrêt soit vraie. Figure 2 - Fonctionnement du modèle BSP Dans le modèle Pregel, chaque tâche d'un superstep va traiter une partition du graphe.

9 Giraph Apache Giraph est un framework de traitement de graphe conçu pour être hautement scalable et donc pouvoir traiter de gros volumes de données. Giraph est une alternative open-source à Google Pregel et implémente le même modèle. Le framework ajoute quelques fonctionnalités supplémentaires à Pregel comme le contrôle du processus maître, des agrégateurs partagés, la possibilité de faire des traitements en dehors des limitations de la mémoire (out-of-core computation), etc. Il existe des alternatives à Giraph comme Neo4j et GraphLab ne se basant pas sur les mêmes framework ni sur les mêmes modèles, mais Giraph propose des fonctionnalités avancées et semble avoir de bonnes performances en pratique 1. Il est bon de noter que Giraph utilise plusieurs sous-projets dont Hadoop (infrastructure basée sur le modèle MapReduce) qui lui permet entre-autre de lire et écrire des fichiers via un système de fichier distribué nommé HDFS. De plus, cela permet aux applications Giraph d être lancé de la même manière que les applications Hadoop. Afin de simplifier l'explication du fonctionnement de Giraph, nous allons détailler un exemple d'application Giraph simple. Exemple d'application La recherche de composantes connexes est un des algorithmes les plus simples qui peut s'appliquer sur un graphe et qui peut se paralléliser sans difficulté. C est donc sur ce type d algorithme que nous allons nous orienter pour réaliser cet exemple. Pour commencer, nous allons supposer que nous disposons d'un graphe d'entrée contenant juste des arcs orientés et nœuds identifiés par des entiers écrits sous la forme de liste d'adjacence. Afin que Giraph puisse charger le graphe d entrée, nous devons lui spécifier comment le lire. Pour cela une classe de lecture de fichier doit être implémentée et doit hériter de «VertexInputFormat». 1

10 À la fin du traitement du graphe d entrée, un fichier de sortie va être créé par Giraph. Pour spécifier ce qu il doit contenir, une classe d écriture doit être implémentée elle aussi et doit hériter de «VertexOutputFormat». Les classes permettant de lire le graphe d entrée et écrire le fichier de sortie ne seront pas présentées ici car elles dépendent du type de fichier que l on veut lire/écrire et ne présentent pas un intérêt fondamental dans la compréhension d une application Giraph. Une fois la gestion des fichiers d entrées et de sorties terminée, il faut créer une classe qui va s occuper du traitement du graphe. Cette classe doit hériter de «Computation» et contiendra une méthode «compute» qui va appliquer une large partie du traitement à appliquer sur le graphe (dans le cas d algorithmes simples, c est ici que tout le traitement va se faire). Cette classe fournie des méthodes pratiques permettant par exemple de connaitre quel est le superstep en cours et la méthode «compute» à remplir fournie des informations complémentaires comme le nœud à traiter et les messages qui ont été reçus dessus. Ci-dessous, on peut voir un exemple de classe de traitement permettant de réaliser un test de connexité sur un graphe : public class VertexComputation extends Computation<LongWritable, LongWritable, NullWritable, LongWritable, LongWritable> public void compute(final Vertex<LongWritable, LongWritable, NullWritable> vertex, final Iterable<LongWritable> messages) { if(getsuperstep() == 0) { vertex.setvalue(vertex.getid()); sendmessagetoalledges(vertex, vertex.getid()); return; } long min = Long.MAX_VALUE; for(final LongWritable m : messages) if(m.get() < min) min = m.get(); if(vertex.getid().get() <= min) { vertex.votetohalt(); return; } } } final LongWritable newvalue = new LongWritable(min); vertex.setvalue(newvalue); sendmessagetoalledges(vertex, newvalue); Ici, chaque nœud va au début du traitement transmettre sa valeur à ses nœuds voisins directs et va s affecter comme valeur son identifiant (cela vient du fait qu il ne faut pas changer

11 l identifiant des nœuds, car c est le seul moyen de les identifier). Lors de l itération suivante, les nœuds vont recevoir des messages. Chacun de ces messages contient la valeur des voisins à une longueur N du nœud traité (où N est le numéro du superstep réalisé). On calcule la valeur minimum de ces voisins et on regarde ensuite si cette valeur est plus grande afin d affecter au nœud la nouvelle valeur plus grande si c est le cas. L itération suivante va ensuite retransmettre la nouvelle valeur dans le cas où le nœud est actif. En effet, la méthode «votetohalt» va permettre de rendre inactif le nœud et celui-ci ne sera donc pas traité à l itération suivante sauf s il reçoit un nouveau message. Cela évite ici de transmettre des messages inutilement et donc d accroitre les performances de l algorithme. Notez que les classes «Computation», «Vertex» et «Iterable» prennent des paramètres template. Ces paramètres sont des types devant étendre de l interface Writable. Les arguments pour ces trois classes sont définis de la manière suivante : Computation < VertexId, VertexData, EdgeData, IncomingMessage, OutgoingMessage > Vertex < VertexId, VertexData, EdgeData > Iterable < IncomingMessage > Où «VertexId» est le type d identifiant du nœud, «VertexData» est le type de donnée attachée au nœud, «EdgeData» est le type de donnée associée aux arcs sortants, «IncomingMessage» et «OutgoingMessage» sont le type de messages reçus et envoyés. Une dernière étape est nécessaire afin d avoir une application Giraph complète : programmer le processus maître. C est lui qui va s occuper du lancement des processus de traitement du graph (nommée Workers) et de la configuration générale de l application. Typiquement, cela se fait dans la fonction principale de l application. Ci-dessous, on peut voir un exemple de code utilisé pour réaliser notre application. Dans un premier temps, on extrait les arguments passés au programme. Puis, on crée une configuration Giraph où on définit quels sont les classes qui vont gérer le traitement, la lecture du graphe d entrée et le nombre de processus de traitement utilisé ainsi que le chemin où est stocké le graphe d entrée. Ensuite, on finit par créer une tâche Giraph configuré, nommée «Test Giraph» et on lui donne le chemin du fichier de sortie. On termine par lancer la tâche et quitter le programme en renvoyant 1 si le lancement ou le déroulement de la tâche a échoué et 0 dans le cas contraire.

12 public class Main { public static void main(string[] args) throws Exception { if(args.length!= 3) throw new IllegalArgumentException("This program needs 3 parameters: <input path> <output path> <number of workers>"); Path inputpath = new Path(args[0]); Path outputpath = new Path(args[1]); int nbworkers = Integer.parseInt(args[2]); GiraphConfiguration configuration = new GiraphConfiguration(); configuration.setcomputationclass(vertexcomputation.class); configuration.setvertexinputformatclass(vertexinputformat.class); configuration.setvertexoutputformatclass(vertexoutputformat.class); configuration.setworkerconfiguration(nbworkers, nbworkers, 100.f); GiraphFileInputFormat.addVertexInputPath(configuration, inputpath); GiraphJob job = new GiraphJob(configuration, "Test Giraph"); FileOutputFormat.setOutputPath(job.getInternalJob(), outputpath); if(!job.run(true)) System.exit(1); } } System.exit(0); Pour conclure, on peut voir que la programmation d une application Giraph est une tâche relativement simple. Le framework est vraiment adapté au traitement de graphe ce qui rend de nombreux algorithmes faciles à écrire. Cependant, il impose certaines contraintes en grande partie liées au modèle qui pousse généralement à repenser les algorithmes en partie ou totalement. MPI «MPI (The Message Passing Interface), conçue en , est une norme définissant une bibliothèque de fonctions, utilisable avec les langages C, C++ et Fortran. Elle permet d'exploiter des ordinateurs distants ou multiprocesseur par passage de messages. Elle est devenue de facto un standard de communication pour des nœuds exécutant des programmes parallèles sur des systèmes à mémoire distribuée. MPI a été écrite pour obtenir de bonnes performances aussi bien sur des machines massivement parallèles à mémoire partagée que sur des clusters d'ordinateurs hétérogènes à mémoire distribuée. Elle est disponible sur de très nombreux matériels et systèmes d'exploitation. Ainsi, MPI possède l'avantage par rapport aux plus vieilles bibliothèques de passage de messages d'être grandement portable (car MPI a été implantée sur presque toutes les architectures de

13 mémoires) et rapide (car chaque implantation a été optimisée pour le matériel sur lequel il s'exécute).» 2 Travail réalisé Mise en place de l environnement de développement Au début de mon stage, j ai dû mettre en place un environnement de développement Giraph afin d effectuer avec quelques tests, de mesurer les performances et la facilité de programmation du framework. C est avec l aide de l administrateur système que j ai à plusieurs reprises testé des versions de Giraph sans succès. Nous avons finalement décidé d utiliser la dernière version de Giraph qui est actuellement en développement (version dev) car c est la seule qui fonctionnait bien et qui restait récente. Après cette étape, j ai pris en main la plateforme de contrôle Cloud OpenNebula afin de créer ensuite ma première application Giraph. Applications Giraph La première application Giraph que j ai développé est le test de connexité que j ai présenté précédemment en tant qu exemple d application. J ai développé une seconde application qui consiste à appliquer un algorithme parallèle de détection cliques nommée PECO 3 (Parallel Enumeration of Cliques using Ordering) avec Giraph. L algorithme PECO se décompose en deux parties. Une première phase va réunir les arcs pointant vers un nœud sur le nœud en question en question. Une seconde phase va créer le graphe environnant (union des arcs entrant avec les arcs sortant) de chaque nœud puis va faire appel à une adaptation de l algorithme séquentiel Tomita 4 (modifié pour pouvoir mieux être utilisé dans un contexte parallèle). C est l algorithme Tomita qui va se charger d énumérer l ensemble des cliques maximales dans le sous graphe environnant. En faisant l union de toutes les cliques trouvées pour chaque sous graphes générés, on obtient l ensemble des cliques maximales du graphe d entrée. Lorsque j ai mis au point l application Giraph appliquant l algorithme PECO, j ai dû mettre au point un système de log afin de déboguer mon application plus simplement en voyant ce qui s y E. Tomita, A. Tanaka, and H. Takahashi. The worst-case time complexity for generating all maximal cliques and computational experiments. Theor. Comput. Sci., 363:28 42, October 2006.

14 passe et j ai utilisé des fonctionnalités plus avancées de Giraph en programmant mon propre type de donnée associé au nœud afin de stocker des données entre les superstep et mon propre type de message afin de communiquer des données plus complexes entre les nœuds. Il est important de faire attention à ce que tous les types données de l application présents dans les nœuds du graphe ou qui sont échangés entre les nœuds soient bien sérialisables, car dans le cas contraire cela causerait des bogues dans l application. En effet, Giraph peut avoir besoin de sérialiser ce type de données lorsque la mémoire disponible sur les machines de calculs n est plus suffisante pour effectuer la suite du traitement ou pour d autres raisons liées aux performances (déplacement d un nœud sur une machine qui le sollicite fortement afin de réduire le coût des communications réseau). L algorithme PECO est intéressant par sa simplicité de mise en place mais présente un défaut majeur : les graphes environnant des nœuds se chevauchent fortement. Cela signifie que les cliques maximales qui en résultent peuvent être dupliquées. Cela signifie aussi que certains calculs effectués en parallèle vont être dupliqués. Cela met en défaut l efficacité de l algorithme. De nombreux graphes issus de réseaux réels présentent des propriétés intéressantes. L une d elle est l hétérogénéité de leur densité. Pour étudier une telle propriété, il peut être intéressant de pouvoir reconnaitre des régions fortement connexes d un graphe. Ces régions contiennent souvent des cliques mais n en sont pas forcément une et bien que l énumération de cliques maximale puisse nous aider à localiser de telles régions, cela est difficile à faire. Il existe des algorithmes plus adaptés à ce problème permettant de faire ce type d analyse. La recherche de P-SCC (P strongly connected components) permet de résoudre relativement simplement le problème. Une P-SCC est un ensemble de nœuds de telle sorte que pour tout couple de nœuds dans le graphe la distance allerretour entre ces deux nœuds est inférieure ou égale à P. Sur de grands graphes, la recherche de composantes fortement connexes peut devenir difficile. Dans ce cas, les algorithmes se basant sur un simple parcours en profondeur limitée semblent être l une des solutions les plus pertinentes. J ai donc finalement mis au point une autre application Giraph permettant de réaliser une P- SCC sur chaque nœud. La recherche en profondeur étant difficilement adaptée au modèle Pregel, j ai finalement réalisé un algorithme effectuant, sur chaque nœud, deux recherches en largeur en profondeur limitée (de longueur deux fois plus petite) puis une recherche en profondeur limitée est appliquée localement sur le sous-graphe généré par l union les deux recherches en largeur afin d obtenir finalement la P-SCC. La première recherche en largeur a pour but de déterminer l ensemble des nœuds atteignables en effectuant la moitié de la distance aller-retour dans le sens de l aller. La seconde effectue le même calcul, mais dans le sens du retour. La recherche en profondeur locale sert à supprimer les nœuds résiduels qui ne sont pas à une distance aller-retour inférieur ou égal à P. La recherche en largeur étant appliqué localement, elle peut être appliquée rapidement. Les

15 deux recherches en largeurs successives ont pour but premier de limiter l explosion combinatoire engendré par une recherche en profondeur limitée sur des gros graphes. Programmes complémentaires Afin de mener mon stage à bien, j ai dû programmer de petits scripts utiles. L un des premiers scripts que j ai dû réaliser est un générateur de graphes. Sachant que j allais travailler sur des algorithmes de détection de cliques au début du stage, j ai mis au point un script python générant un graphe contenant un nombre paramétré de cliques de tailles paramétré elle aussi. Ces cliques sont reliées entre elle avec un certain nombre d arcs et le nombre d arc dépend d un paramètre définissant la densité du graphe. Un script comme celui-ci est très pratique pour vérifier simplement si un algorithme de détection de cliques fonctionne, car en pratique, les graphes aléatoires ou issus de réseau sociaux par exemple peuvent contenir des cliques qui se chevauchent et cela devient donc difficile de tester la validité d un algorithme de détection de clique sur des graphe de taille conséquente (plusieurs centaines de nœud à plusieurs dizaines de milliers). Durant la suite de mon stage, j ai été confronté à des graphes qui n étaient pas toujours dans le format requit par mes applications, c est-à-dire sous forme de listes d adjacences. Il est fréquent de trouver des graphes sous forme de listes d arcs. J ai donc programmé un script de conversion d un graphe sous forme de liste d arcs en un graphe sous forme de liste d adjacence. Le script suppose que le graphe d origine et de destination peuvent être stockés en mémoire. Afin de bien comprendre et de tester le fonctionnement d un algorithme, j ai parfois programmé un script l appliquant sur de petits graphes comme l algorithme des P-SCC que j ai ensuite réutilisé pour créer une application Giraph. Cela permettait de vérifier l application Giraph de manière plus simple. En effet, dans ce cas, il suffit juste de comparer le résultat du script avec celui de l application Giraph écrit dans le même format plutôt que de chercher à le comparer avec une solution existante qui est parfois difficile à trouver et qui peut être dans un format différent. Pour finir, j ai tenté de réaliser un algorithme de clustering de graphe qui avait pour but d accélérer le programme MPI que j ai réalisé à la fin de mon stage. L algorithme utilisé pour découper le graphe est plutôt simple. Voici le pseudo-code de l algorithme :

16 Fonction clustering (graphe, nombregroupes) tasnoeuds = tableau de taille nombregroupes contenant des listes vides numerotas = 1 taillemaxgroupe = taille(graphe) / nombregroupes + 1 Tant que graphe non vide noeud = nœud quelconque dans graphe limite = taillemaxgroupe - taille(tasnoeuds[numerotas]) listenoeuds = BFS_Limité(noeud, limite) tasnoeuds[numerotas] = tasnoeuds[numerotas] + listenoeuds Pour chaque nœud n dans listenoeuds Supprimer n de graphe Fin pour Si taille(tasnoeuds[numerotas]) >= taillemaxgroupe numerotas = numerotas + 1 Fin si Fin tant que Fin fonction Notez que la fonction BFS_Limité(N, L) réalise un parcours en largeur du nœud N en s arrêtant dès que L nœuds ont été parcourus et en renvoyant cette liste de nœuds parcourus. Programme MPI Fonctionnement Afin d évaluer la facilité de programmation, la souplesse et l efficacité de Giraph, j ai décidé de comparer ce framework avec MPI C++ en mettant au point une recherche de P-SCC. Afin d éviter de trop complexifier le programme MPI, j ai supposé qu il disposerait d assez d espace libre en mémoire sur chacune des machines où il sera exécuté. Le format de fichier lu est le même que pour l application Giraph : une liste d adjacence sous forme de fichier texte dans laquelle une ligne représente une entrée de la liste. Mais à l exception du programme Giraph, le programme MPI suppose que les entrées de la liste d adjacence sont triées en fonction du nœud source. On notera par N le nombre de processus MPI exécuté par l application (défini lors du lancement). La première chose que fait le programme MPI est de lire le fichier d entrée dans le processus maître pour lire le nombre de lignes et ainsi connaitre le nombre de nœuds présents dans le graphe. Une fois fait, le programme va découper le graphe en autant de partie qu il y a de processus MPI. Pour réaliser ça, le fichier d entrée est lu une seconde fois par le processus maître. Lors de la lecture les lignes sont envoyées au processus MPI distant de manière bufférisées. Une fois la lecture

17 terminée, le graphe d entrée est réparti sur tous les processus MPI de manière équitable. À ce moment chaque processus envoie à tous les autres l intervalle d identifiants de nœuds de graphe qu il détient afin que les autres processus puissent savoir sur quelle machine chaque nœud peut être. Une fois cette opération réalisée le traitement peut commencer. Lors du traitement des données, chaque processus MPI va initier un DFS (parcourt en profondeur) sur les nœuds qu il détient. Durant le parcourt du DFS, certains nœuds du graphe ne sont pas détenus par le processus et celui-ci commande donc au processus distant qui détient le nœud de continuer le DFS. Lorsque le DFS passe par le nœud source, c est qu il existe un chemin aller-retour vers le nœud et donc que l ensemble des nœuds du chemin font partie de la P-SCC du nœud source. Les nœuds du chemin sont donc stockés dans un ensemble formant une P-SCC partielle. Lorsque le DFS retourne à la source et ne peut plus traiter d autres nœuds, la P-SCC partielle devient une P-SCC totale et on peut initier le DFS d un autre nœud qui n aurait pas été déjà traité. Afin d accroitre les performances du programme, chaque processus démarre l exécution de plusieurs DFS en parallèle et bufférise les envois de données. Les processus MPI du programme effectue en somme, un DFS distribué sur chaque nœud du graphe. Les P-SCC partielles et totales des nœuds du graphe, pouvant être relativement grosses, sont stockées dans un fichier de solution sur le disque évitant ainsi une explosion de la quantité de mémoire nécessaire par les processus MPI. Lorsque tous les nœuds locaux à un processus sont traités, celui-ci envoie au processus maître qu il a terminé son travail, mais reste disponible afin d effectuer une partie des DFS des nœuds des autres processus. Lorsque tous les nœuds ont terminé leur travail, le processus maître le sait (car il compte le nombre de processus qui ont terminé leur travail et le nombre de processus total lancés) et demande à tous les processus de s arrêter. Le programme distribué prend alors fin lorsque tous les processus ont reçu et traité ce message. Résultat des tests et comparatif Après avoir programmé plusieurs applications Giraph, j ai testé la montée en charge du framework et j ai rencontré quelques problèmes sur l application la plus simple : le teste de connexité. Bien que l application se comporte bien sûr des graphes de tailles relativement grandes (environ 3 millions de nœuds et 117 millions d arcs) mais ne fonctionne plus sur des graphes de très grandes tailles (environ 52 millions de nœuds et 2 milliard d arcs). Selon les concepteurs de Giraph cela pourrait être un problème de charge mémoire générique à Java et ils encouragent donc l utilisation de bibliothèques permettant de réduire l occupation de mémoire dans les applications Java. Cependant, ce problème ne peut pas être résolu simplement par les utilisateurs sur des graphes

18 aussi gros, car il n est pas possible d utiliser ces bibliothèques sur des exemples aussi simples. Néanmoins, les concepteurs de Giraph travaillent activement sur le problème et tentent de limiter l impact du framework sur la mémoire et de gérer toujours de plus gros volume de données. Les prochaines versions de Giraph devraient donc permettre de lancer des applications comme un test de connexité sur des graphes de plusieurs milliards d arcs sans problème. Le programme MPI est présent en deux versions. La première version semble bien fonctionner mais est relativement lente sur des graphes de taille moyenne. La seconde version est bien plus rapide mais contient quelques bogues qui n apparaissent que lorsque plusieurs processus sont utilisés pour réaliser le traitement. Dû aux problèmes rencontrés avec Giraph et MPI, il est difficile de comparer les performances des deux frameworks. Néanmoins, on peut quand même voir que la programmation d application Giraph est bien plus simple, car si l on veut réaliser une application MPI traitant des graphes, il faut obligatoirement programmer la lecture du fichier en faisant attention à la mémoire et répartir ce fichier sur plusieurs processus. Ces opérations sont relativement lourdes et peuvent vite devenir complexes sur des gros graphes. De plus, si l on veut aussi faire attention à ne pas dépasser la limite de mémoire, il faut manipuler une grande partie des données temporaires sur le disque dur ce qui rend la programmation MPI bien plus complexe et donc moins accessible. Dans les deux cas, le débogage d applications distribuées est complexe, mais les applications MPI sont plus assujetties à des bogues (inter-blocage, problèmes de synchronisations, etc.) dû à la nature même du contrôle des communications dans un environnement hétérogène distribué. Détail du contenu du SVN L ensemble des fichiers du stage se trouve dans le dossier nommé «Giraph» présent à la racine du SVN. Dedans on y trouve l architecture de fichier suivante : Dossier «application» : contient la liste des applications Giraph réalisées faisant référence à la partie «Applications Giraph» du rapport (contenant un script d upload configurable permettant de compiler et d envoyer rapidement une application Giraph sur le serveur). Dossier «doc» : contient la liste des documents trouvés ou utilisés durant le stage (thèse, rapports, etc.). Dossier «script» : contient la liste des scripts réalisés faisant référence à la partie «Programmes complémentaires» du rapport.

19 Dossier «server-scripts» : contient des scripts pouvant être utile pour le lancement de tâches Giraph ou l administration des machines virtuelles Cloud. o «broadcast.sh» : Exécute une commande passée en paramètre sur toutes les machines virtuelles Cloud en parallèle. o «init.sh» : Script de lancement et d initialisation d Hadoop (nettoie les logs des applications Giraph et du HDFS puis lance Hadoop en formatant le HDFS ensuite) o «end.sh» : Script d arrêt d Hadoop (arrête Hadoop de manière sûr). o «testmin.sh», «testpeco.sh» et «testpscc.sh» : Scripts permettant de tester simplement des tâche Giraph (envoi les données sur le HDFS, lance Giraph en mesurant le temps d exécution, affiche le résultat et nettoie le HDFS). o «clean_dfs.sh» : Sous script permettant de nettoyer le DFS Hadoop. o «clean_logs.sh» : Sous-script nettoyant les logs généré par les applications Giraph. Fichier «notes» : notes décrivent quelques règles à suivre ou observations faites lorsqu on programme avec Giraph. Afin d éviter de répéter plusieurs fois la structure d une application Giraph je ne vais présenter que la structure de l application la plus complète : celle qui applique les P-SCC : Dossier «sample_data» : Contient des jeux de données d exemple pour l application. Dossier «src» : Contient les sources de l application. o Dossier «main» : Contient les sources du programme de l application. Dossier «assembly» Fichier «compile.xml» : Précise comment l archive JAR va être construite. Suite de dossiers «java/lifo/giraph/test» Fichier «Arc» : Classe définissant un arc dans un graphe. Fichier «Logger» : Classe permettant de logger du texte durant l exécution de l application pour savoir ce qu elle fait. Fichier «Main» : Classe principale permettant de démarrer la tâche Giraph. Fichier «Message» : Classe définissant les messages qui transite entre les nœuds du graphe traité. Fichier «VertexComputation» : Classe contenant l algorithme qui traite le graphe. Fichier «VertexData» : Classe définissant les données associé à un nœud du graphe traité.

20 Fichier «VertexInputFormat» : Classe spécifiant comment lire le graphe d entrée. Fichier «VertexOutputFormat» : Classe spécifiant comment générer le fichier de sortie. Fichier «makefile» : Fichier permettant de compiler simplement l application en lançant uniquement la commande «make» sous Linux (lance Maven en interne). Fichier «pom.xml» : Fichier de configuration de projet pour Maven précisant comment compiler le projet. Bilan Dans un premier temps nous avons étudié le fonctionnement du modèle de calcul Prégel, dédié à la programmation de graphe. Puis, nous avons détaillé un exemple d application Giraph, une implémentation open-source de Pregel où nous avons vu qu il est possible de réaliser simplement des programmes appliquant des algorithmes distribués de traitement de graphe. Finalement, nous avons entrevu la technologie MPI, un standard de communication pour des machines exécutant des algorithmes distribués. Dans un second temps, j ai décrit le fonctionnement des applications Giraph et MPI que j ai réalisées en tentant finalement de comparer les deux technologies, où malgré quelques problèmes techniques, on remarque que la programmation MPI n est pas adaptée à l implémentation d algorithmes s appliquant graphe (en particulier lorsque le format est une liste d adjacence), surtout en raison de sa complexité. Il aurait été intéressant de tester des alternatives au framework Giraph se basant sur MPI en C++ par exemple, comme GraphLab, ou encore se basant sur des systèmes relationnels comme Neo4j. Ces technologies semblent être des alternatives pertinentes à Giraph et comme lui, elles semblent disposer d un avenir prometteur.

Programmation parallèle et distribuée

Programmation parallèle et distribuée Programmation parallèle et distribuée (GIF-4104/7104) 5a - (hiver 2015) Marc Parizeau, Département de génie électrique et de génie informatique Plan Données massives («big data») Architecture Hadoop distribution

Plus en détail

Programmation parallèle et distribuée (Master 1 Info 2015-2016)

Programmation parallèle et distribuée (Master 1 Info 2015-2016) Programmation parallèle et distribuée (Master 1 Info 2015-2016) Hadoop MapReduce et HDFS Note bibliographique : ce cours est largement inspiré par le cours de Benjamin Renaut (Tokidev SAS) Introduction

Plus en détail

Certificat Big Data - Master MAthématiques

Certificat Big Data - Master MAthématiques 1 / 1 Certificat Big Data - Master MAthématiques Master 2 Auteur : Sylvain Lamprier UPMC Fouille de données et Medias Sociaux 2 / 1 Rich and big data: Millions d utilisateurs Millions de contenus Multimedia

Plus en détail

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture API04 Contribution Apache Hadoop: Présentation et application dans le domaine des Data Warehouses Introduction Cette publication a pour but de présenter le framework Java libre Apache Hadoop, permettant

Plus en détail

Architecture des calculateurs

Architecture des calculateurs Chapitre 1 Architecture des calculateurs 1.1 Introduction Ce paragraphe n a pas la prétention de présenter un cours d informatique. D une manière générale, seuls les caractéristiques architecturales qui

Plus en détail

Programmation parallèle et distribuée

Programmation parallèle et distribuée Programmation parallèle et distribuée (GIF-4104/7104) 5a - (hiver 2014) Marc Parizeau, Département de génie électrique et de génie informatique Plan Mégadonnées («big data») Architecture Hadoop distribution

Plus en détail

MISE A JOUR : 04 FEVRIER 2011 PROCÉDURE D INSTALLATION. Cegid Business COMMENT INSTALLER CEGID BUSINESS V8 SOUS WINDOWS XP, VISTA ET 7

MISE A JOUR : 04 FEVRIER 2011 PROCÉDURE D INSTALLATION. Cegid Business COMMENT INSTALLER CEGID BUSINESS V8 SOUS WINDOWS XP, VISTA ET 7 PROCÉDURE D INSTALLATION Cegid Business V8 COMMENT INSTALLER CEGID BUSINESS V8 SOUS WINDOWS XP, VISTA ET 7 Sommaire 1. Introduction 2. Installation de SQL Server 2005 ou 2008 3. Installation de Cegid Business

Plus en détail

Rapport de stage. Simulation d'algorithmes auto-stabilisants

Rapport de stage. Simulation d'algorithmes auto-stabilisants Université Joseph Fourier Département Licence Sciences & Technologies Rapport de stage Simulation d'algorithmes auto-stabilisants DIAKITE Moussa Laboratoire d'accueil : Verimag Directeur du laboratoire

Plus en détail

Plan. Pourquoi Hadoop? Présentation et Architecture. Démo. Usages

Plan. Pourquoi Hadoop? Présentation et Architecture. Démo. Usages 1 Mehdi LOUIZI Plan Pourquoi Hadoop? Présentation et Architecture Démo Usages 2 Pourquoi Hadoop? Limites du Big Data Les entreprises n analysent que 12% des données qu elles possèdent (Enquête Forrester

Plus en détail

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril 2010 1 / 15

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril 2010 1 / 15 MapReduce Malo Jaffré, Pablo Rauzy ENS 16 avril 2010 Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril 2010 1 / 15 Qu est ce que c est? Conceptuellement Données MapReduce est un framework de calcul distribué

Plus en détail

Plan de cette partie. Implantation des SGBD relationnels. Définition et fonctionnalités. Index. Coûts pour retrouver des données

Plan de cette partie. Implantation des SGBD relationnels. Définition et fonctionnalités. Index. Coûts pour retrouver des données Implantation des SGBD relationnels Université de Nice Sophia-Antipolis Version 3.4 25//06 Richard Grin Plan de cette partie Nous allons étudier (très rapidement!) quelques éléments de solutions utilisés

Plus en détail

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique Institut Supérieure Aux Etudes Technologiques De Nabeul Département Informatique Support de Programmation Java Préparé par Mlle Imene Sghaier 2006-2007 Chapitre 1 Introduction au langage de programmation

Plus en détail

Gestion d une école. FABRE Maxime FOUCHE Alexis LEPOT Florian

Gestion d une école. FABRE Maxime FOUCHE Alexis LEPOT Florian Gestion d une école FABRE Maxime 2015 Sommaire Introduction... 2 I. Présentation du projet... 3 1- Lancement de l application... 3 Fonctionnalités réalisées... 4 A. Le serveur... 4 1 - Le réseau... 4 2

Plus en détail

IFT630 Processus concurrents et parallélisme. Projet final Rapport. Présenté à Gabriel Girard

IFT630 Processus concurrents et parallélisme. Projet final Rapport. Présenté à Gabriel Girard IFT630 Processus concurrents et parallélisme Projet final Rapport Présenté à Gabriel Girard par Alexandre Tremblay (06 805 200) Pierre-François Laquerre (05 729 544) 15 avril 2008 Introduction Après plusieurs

Plus en détail

Freestyle : Sculpting Meshes with Self-Adaptive Topology

Freestyle : Sculpting Meshes with Self-Adaptive Topology Freestyle : Sculpting Meshes with Self-Adaptive Topology Rapport Recette Étudiants : Charles Garibal, Maxime Robinot, Mathieu Dachy Tuteur : Loïc Barthe 20/02/2015 1 I) Introduction Rappel : Objectif du

Plus en détail

Système d exploitation

Système d exploitation Chapitre 2 Système d exploitation 2.1 Définition et rôle Un ordinateur serait bien difficile à utiliser sans interface entre le matériel et l utilisateur. Une machine peut exécuter des programmes, mais

Plus en détail

Cours Administration BD

Cours Administration BD Faculté des Sciences de Gabès Cours Administration BD Chapitre 2 : Architecture Oracle Faîçal Felhi felhi_fayssal@yahoo.fr 1 Processus serveur 1 Mémoire PGA Architecture SGBD Oracle Processus serveur 2

Plus en détail

Configurer Apache STORM. Version 1.0. avec plusieurs nœuds esclaves

Configurer Apache STORM. Version 1.0. avec plusieurs nœuds esclaves Configurer Apache STORM avec plusieurs nœuds esclaves Version 1.0 Rédacteur : Philippe Lacomme (placomme@isima.fr) Date : 24 aout 2015 Liste des modifications / Installation réalisée sur : Ubuntu 15.04

Plus en détail

Big Graph Data Forum Teratec 2013

Big Graph Data Forum Teratec 2013 Big Graph Data Forum Teratec 2013 MFG Labs 35 rue de Châteaudun 75009 Paris, France www.mfglabs.com twitter: @mfg_labs Julien Laugel MFG Labs julien.laugel@mfglabs.com @roolio SOMMAIRE MFG Labs Contexte

Plus en détail

ASSEMBLAGE ET ÉDITION DES LIENS

ASSEMBLAGE ET ÉDITION DES LIENS ASSEMBLAGE ET ÉDITION DES LIENS Mewtow 11 novembre 2015 Table des matières 1 Introduction 5 2 La chaine d assemblage 7 2.1 Résolution des symboles.............................. 7 2.2 Relocation.....................................

Plus en détail

Contribution à la mise en service d'une ferme de serveurs connectée à une grille de calcul pour la physique des hautes énergies

Contribution à la mise en service d'une ferme de serveurs connectée à une grille de calcul pour la physique des hautes énergies Contribution à la mise en service d'une ferme de serveurs connectée à une grille de calcul pour la physique des hautes énergies Charlier Fabrice 2è licence en informatique Année Académique 2005-2006 Plan

Plus en détail

TP1. Outils Java Eléments de correction

TP1. Outils Java Eléments de correction c sep. 2008, v2.1 Java TP1. Outils Java Eléments de correction Sébastien Jean Le but de ce TP, sur une séance, est de se familiariser avec les outils de développement et de documentation Java fournis par

Plus en détail

Gestion du serveur WHS 2011

Gestion du serveur WHS 2011 Chapitre 15 Gestion du serveur WHS 2011 Les principales commandes Windows Home Server 2011 reprend l ergonomie de Windows 7 et intègre les principales commandes de Windows Server 2008 R2. Les commandes

Plus en détail

MISE A JOUR : 04 FEVRIER 2011 PROCÉDURE D INSTALLATION. Cegid Business COMMENT INSTALLER CEGID BUSINESS V9 SOUS WINDOWS XP, VISTA ET 7

MISE A JOUR : 04 FEVRIER 2011 PROCÉDURE D INSTALLATION. Cegid Business COMMENT INSTALLER CEGID BUSINESS V9 SOUS WINDOWS XP, VISTA ET 7 PROCÉDURE D INSTALLATION Cegid Business V9 COMMENT INSTALLER CEGID BUSINESS V9 SOUS WINDOWS XP, VISTA ET 7 Sommaire 1. Introduction 2. Installation de SQL Server 2005 ou 2008 3. Installation de Cegid Business

Plus en détail

ARCHITECTURES DES SYSTÈME DE BASE DE DONNÉES. Cours Administration des Bases de données M Salhi

ARCHITECTURES DES SYSTÈME DE BASE DE DONNÉES. Cours Administration des Bases de données M Salhi ARCHITECTURES DES SYSTÈME DE BASE DE DONNÉES Cours Administration des Bases de données M Salhi Architectures des Système de base de données Systèmes centralisés et client-serveur Server System Architectures

Plus en détail

UT Installation et paramétrage logiciel de sauvegarde INSTALLATION ET PARAMETRAGE LOGICIEL DE SAUVEGARDE. Groupe PROGMAG

UT Installation et paramétrage logiciel de sauvegarde INSTALLATION ET PARAMETRAGE LOGICIEL DE SAUVEGARDE. Groupe PROGMAG GUIDE UTILISATION POINT DE VENTE INSTALLATION ET PARAMETRAGE LOGICIEL DE SAUVEGARDE SOMMAIRE 1 Créer une tâche de sauvegarde... 4 1.1 Paramètres de la tâche... 4 1.1.1 Nommer la tâche... 4 1.1.2 Emplacement

Plus en détail

Besoin de concevoir des systèmes massivement répartis. Comment tester le système? Solution. Évaluation de systèmes répartis à large échelle

Besoin de concevoir des systèmes massivement répartis. Comment tester le système? Solution. Évaluation de systèmes répartis à large échelle Besoin de concevoir des systèmes massivement répartis. Évaluation de systèmes répartis à large échelle Sergey Legtchenko Motivation : LIP6-INRIA Tolérance aux pannes Stockage de données critiques Coût

Plus en détail

Tsoft et Groupe Eyrolles, 2005, ISBN : 2-212-11623-3

Tsoft et Groupe Eyrolles, 2005, ISBN : 2-212-11623-3 Tsoft et Groupe Eyrolles, 2005, ISBN : 2-212-11623-3 Configuration requise ForestPrep DomainPrep Installation interactive 5 Installation sans surveillance Module 5 : Installation d Exchange Server 2003

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse IFT287 Exploitation de base de données relationnelles et orientées objet Laboratoire Mon premier programme Java en Eclipse Comment faire? Nous allons utiliser l environnement de travail proposé par Eclipse

Plus en détail

TME 1 - Hadoop, une plate-forme open-source de MapReduce. Installation et prise en main

TME 1 - Hadoop, une plate-forme open-source de MapReduce. Installation et prise en main CODEL : conception et développement d applications d entreprise à large échelle TME 1 - Hadoop, une plate-forme open-source de MapReduce. Installation et prise en main Jonathan Lejeune Contexte Le modèle

Plus en détail

Windows Internet Name Service (WINS)

Windows Internet Name Service (WINS) Windows Internet Name Service (WINS) WINDOWS INTERNET NAME SERVICE (WINS)...2 1.) Introduction au Service de nom Internet Windows (WINS)...2 1.1) Les Noms NetBIOS...2 1.2) Le processus de résolution WINS...2

Plus en détail

Notes de cours Practical BigData

Notes de cours Practical BigData Notes de cours Practical BigData Nguyen-Nhut DOAN 15 janvier 2015 Introduction Ces notes personnelles traduisent la deuxième partie du cours INF553 de l Ecole Polytechnique sur les bases de données et

Plus en détail

Manuel COMMENCE. Connect For Email

Manuel COMMENCE. Connect For Email Manuel COMMENCE Connect For Email Sommaire SOMMAIRE 2 CHAPITRE 1 : INTRODUCTION 4 A QUOI ÇA SERT? 4 CHAPITRE 2 : PRISE EN MAIN 5 MINIMUM REQUIS POUR EXÉCUTER CONNECT FOR EMAIL 5 CE QUE GÉNÈRE L INSTALLATION

Plus en détail

Pooch et le calcul distribué

Pooch et le calcul distribué 16 mai 2003 1 Table des matières 1 Introduction 3 2 Création d un ordinateur parallèle 3 3 Utilisation de Pooch 3 4 Développement d applications distribuées 4 4.1 Message Passing Interface (MPI)..........................

Plus en détail

Hadoop / Big Data. Benjamin Renaut MBDS 2014-2015

Hadoop / Big Data. Benjamin Renaut <renaut.benjamin@tokidev.fr> MBDS 2014-2015 Hadoop / Big Data Benjamin Renaut MBDS 2014-2015 TP 1 - Correction Méthodologie Map/Reduce - programmation Hadoop. Rappel 1 La première partie du TP consistait à mettre en

Plus en détail

Exemple de développement d une application

Exemple de développement d une application Exemple de développement d une application Département Informatique TELECOM SudParis 1ère année Dépt INF 2009/2010 Table des matières Exemple de développement d une application Département Informatique,,

Plus en détail

Le Ro le Hyper V Troisie me Partie Haute disponibilite des machines virtuelles

Le Ro le Hyper V Troisie me Partie Haute disponibilite des machines virtuelles Le Ro le Hyper V Troisie me Partie Haute disponibilite des machines virtuelles Microsoft France Division DPE Table des matières Présentation... 2 Objectifs... 2 Pré requis... 2 Quelles sont les principales

Plus en détail

Big Data et Graphes : Quelques pistes de recherche

Big Data et Graphes : Quelques pistes de recherche Big Data et Graphes : Quelques pistes de recherche Hamamache Kheddouci Laboratoire d'informatique en Image et Systèmes d'information LIRIS UMR 5205 CNRS/INSA de Lyon/Université Claude Bernard Lyon 1/Université

Plus en détail

Morgan Beau Nicolas Courazier

Morgan Beau Nicolas Courazier EPSI - 2010 Rapport projet IA Conception et mise en œuvre d un générateur de systèmes experts Morgan Beau Sommaire Cahier des charges 3 Présentation générale 4 Analyse et modélisation 6 Le moteur d inférence

Plus en détail

INTRODUCTION À L INJECTION DE DÉPENDANCES EN JAVA

INTRODUCTION À L INJECTION DE DÉPENDANCES EN JAVA INTRODUCTION À L INJECTION DE DÉPENDANCES EN JAVA Andr0 29 octobre 2015 Table des matières 1 Introduction 5 2 Qu est ce que l injection de dépendances? 7 2.1 Mais une dépendance, c est quoi?.........................

Plus en détail

Projet informatique «Voyageur de commerce» Résolution approchée par algorithme génétique du problème du voyageur de commerce

Projet informatique «Voyageur de commerce» Résolution approchée par algorithme génétique du problème du voyageur de commerce Année 2007-2008 Projet informatique «Voyageur de commerce» Résolution approchée par algorithme génétique du problème du voyageur de commerce B. Monsuez Projet informatique «Voyageur de commerce» Résolution

Plus en détail

Ricco Rakotomalala http://eric.univ-lyon2.fr/~ricco/cours/cours_programmation_r.html. R.R. Université Lyon 2

Ricco Rakotomalala http://eric.univ-lyon2.fr/~ricco/cours/cours_programmation_r.html. R.R. Université Lyon 2 Ricco Rakotomalala http://eric.univ-lyon2.fr/~ricco/cours/cours_programmation_r.html 1 Plan de présentation 1. L écosystème Hadoop 2. Principe de programmation MapReduce 3. Programmation des fonctions

Plus en détail

CONTRÔLE HORS-CLASSEMENT ÉCOLE POLYTECHNIQUE INFORMATIQUE COURS INF 431

CONTRÔLE HORS-CLASSEMENT ÉCOLE POLYTECHNIQUE INFORMATIQUE COURS INF 431 CONTRÔLE HORS-CLASSEMENT ÉCOLE POLYTECHNIQUE INFORMATIQUE COURS INF 431 GUILLAUME HANROT ET JEAN-JACQUES LÉVY On se propose de résoudre le problème de l affectation de k tâches à n employés (k > 0, n >

Plus en détail

LA GESTION DE FICHIERS

LA GESTION DE FICHIERS CHAPITRE 6 : LA GESTION DE FICHIERS Objectifs spécifiques Connaître la notion de fichier, ses caractéristiques Connaître la notion de répertoires et partitions Connaître les différentes stratégies d allocation

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

Java Avancé - Cours 2

Java Avancé - Cours 2 Java avancé - cours 2 1/8 Java Avancé - Cours 2 Plan 1 Communication entre objets 1 1.1 Motivation....................................................... 1 1.2 Relations entre le panier et le rayon.........................................

Plus en détail

Julien MATHEVET Alexandre BOISSY GSID 4. Rapport RE09. Load Balancing et migration

Julien MATHEVET Alexandre BOISSY GSID 4. Rapport RE09. Load Balancing et migration Julien MATHEVET Alexandre BOISSY GSID 4 Rapport Load Balancing et migration Printemps 2001 SOMMAIRE INTRODUCTION... 3 SYNTHESE CONCERNANT LE LOAD BALANCING ET LA MIGRATION... 4 POURQUOI FAIRE DU LOAD BALANCING?...

Plus en détail

Nouveautés FDS 2015. Pour créer des équipements 2D et les publier à partir d'autocad

Nouveautés FDS 2015. Pour créer des équipements 2D et les publier à partir d'autocad Nouveautés FDS 2015 Pour créer des équipements 2D et les publier à partir d'autocad Vous pouvez désormais réutiliser le contenu AutoCAD existant en tant qu'équipements d'usine. Cette fonction prend également

Plus en détail

Correction langage Java

Correction langage Java MINISTÈRE DE L ÉCOLOGIE, DU DÉVELOPPEMENT DURABLE, DES TRANSPORTS ET DU LOGEMENT EXAMEN PROFESSIONNEL DE VÉRIFICATION D APTIDUDE AUX FONCTIONS DE PROGRAMMEUR Session 2010 Correction langage Java Langage:

Plus en détail

Applications orientées données (NSY135)

Applications orientées données (NSY135) Applications orientées données (NSY135) 2 Applications Web Dynamiques Auteurs: Raphaël Fournier-S niehotta et Philippe Rigaux (philippe.rigaux@cnam.fr,fournier@cnam.fr) Département d informatique Conservatoire

Plus en détail

TotEM. Guide d installation de l application. Décembre 2012 R006

TotEM. Guide d installation de l application. Décembre 2012 R006 TotEM Guide d installation de l application Décembre 2012 R006 TotEM Guide d installation de l application 1. Introduction 3 2. Installer le serveur (autonome) 10 3. Installer le serveur (application War)

Plus en détail

Rapport du Jury du Concours 2010 Épreuve Pratique d Algorithmique et de Programmation (EPAP)

Rapport du Jury du Concours 2010 Épreuve Pratique d Algorithmique et de Programmation (EPAP) Rapport du Jury du Concours 2010 Épreuve Pratique d Algorithmique et de Programmation (EPAP) Loris Marchal, Guillaume Melquion, Frédéric Tronel 21 juin 2011 Remarques générales à propos de l épreuve Organisation

Plus en détail

Tutorat C/Unix : Un Rapido Client/Serveur

Tutorat C/Unix : Un Rapido Client/Serveur Tutorat C/Unix : Un Rapido Client/Serveur Nouredine Melab 1 Description générale du projet 1.1 Objectif L'objectif du projet est de concevoir et de réaliser un jeu de hasard dénommé Rapido. Un serveur

Plus en détail

Présentation des solutions techniques mises en œuvre. Solution de sauvegarde

Présentation des solutions techniques mises en œuvre. Solution de sauvegarde Présentation des solutions techniques mises en œuvre. Solution de sauvegarde 2014 Sommaire I. Description des services complémentaires...3 II. Schéma d infrastructure réseau...4 III. Détail des configurations

Plus en détail

Remote Method Invocation (RMI)

Remote Method Invocation (RMI) Remote Method Invocation (RMI) TP Réseau Université Paul Sabatier Master Informatique 1 ère Année Année 2006/2007 Plan Objectifs et Inconvénients de RMI Fonctionnement Définitions Architecture et principe

Plus en détail

WebFTP Un client Web sécurisé pour FTP

WebFTP Un client Web sécurisé pour FTP WebFTP Un client Web sécurisé pour FTP Jirung Albert SHIH, Shih@math.Jussieu.fr Université Paris 7 JRES 2001 Introduction Nous allons dans ce document présenter une solution mise en œuvre sur le réseau

Plus en détail

Environnement de programmation

Environnement de programmation Environnement de programmation 1.La programmation Les ordinateurs sont stupides! à un point dont on n'a pas idée. Ils ne réagissent ni ne répondent qu'à des situations ou à des données anticipées par le

Plus en détail

Fouillez facilement dans votre système Big Data. Olivier TAVARD

Fouillez facilement dans votre système Big Data. Olivier TAVARD Fouillez facilement dans votre système Big Data Olivier TAVARD A propos de moi : Cofondateur de la société France Labs Développeur (principalement Java) Formateur en technologies de moteurs de recherche

Plus en détail

Une application de commerce électronique en utilisant CLAIM

Une application de commerce électronique en utilisant CLAIM Rapport du projet A4MA Une application de commerce électronique en utilisant CLAIM Étudiants : DINH Quang Ninh (dinhquangninh@gmail.com) PHAM Trong-Tôn (trongtonfr@yahoo.fr) Wiki : http://dev.deptrai.org/wiki/doku.php?id=projet_a4ma:start

Plus en détail

PG208, Projet n 3 : Serveur HTTP évolué

PG208, Projet n 3 : Serveur HTTP évolué PG208, Projet n 3 : Serveur HTTP évolué Bertrand LE GAL, Serge BOUTER et Clément VUCHENER Filière électronique 2 eme année - Année universitaire 2011-2012 1 Introduction 1.1 Objectif du projet L objectif

Plus en détail

2 - Cas pratique. Actuellement la partition C est hébergée dans l unité logique n 1 qui comporte 3 unités physique en raid 5.

2 - Cas pratique. Actuellement la partition C est hébergée dans l unité logique n 1 qui comporte 3 unités physique en raid 5. Page 1 sur 16 Le client souhaite étendre sa partition E de x Go. Actuellement la partition C est hébergée dans l unité logique n 1 qui comporte 3 unités physique en raid 5. La partition E est hébergée

Plus en détail

Le service FTP. M.BOUABID, 04-2015 Page 1 sur 5

Le service FTP. M.BOUABID, 04-2015 Page 1 sur 5 Le service FTP 1) Présentation du protocole FTP Le File Transfer Protocol (protocole de transfert de fichiers), ou FTP, est un protocole de communication destiné à l échange informatique de fichiers sur

Plus en détail

Evaluation des performances de programmes parallèles haut niveau à base de squelettes

Evaluation des performances de programmes parallèles haut niveau à base de squelettes Evaluation des performances de programmes parallèles haut niveau à base de squelettes Enhancing the Performance Predictability of Grid Applications with Patterns and Process Algebras A. Benoit, M. Cole,

Plus en détail

Les systèmes RAID Architecture des ordinateurs

Les systèmes RAID Architecture des ordinateurs METAIS Cédric 2 ème année Informatique et réseaux Les systèmes RAID Architecture des ordinateurs Cédric METAIS ISMRa - 1 - LES DIFFERENTS SYSTEMES RAID SOMMAIRE INTRODUCTION I LES DIFFERENTS RAID I.1 Le

Plus en détail

Arbres binaires. Illustration avec des arbres binaires de décision Généricité bornée Synthèse sur les assertions et les exceptions

Arbres binaires. Illustration avec des arbres binaires de décision Généricité bornée Synthèse sur les assertions et les exceptions Arbres binaires Illustration avec des arbres binaires de décision Généricité bornée Synthèse sur les assertions et les exceptions FMIN220 Structures de données Université de Montpellier 2015 FMIN220 (UM)

Plus en détail

IRL : Simulation distribuée pour les systèmes embarqués

IRL : Simulation distribuée pour les systèmes embarqués IRL : Simulation distribuée pour les systèmes embarqués Yassine El Khadiri, 2 ème année Ensimag, Grenoble INP Matthieu Moy, Verimag Denis Becker, Verimag 19 mai 2015 1 Table des matières 1 MPI et la sérialisation

Plus en détail

Programmation par RPC et Java-RMI :

Programmation par RPC et Java-RMI : 2A-SI 3 Prog. réseau et systèmes distribués 3.2 et JavaRMI Stéphane Vialle Stephane.Vialle@supelec.fr http://www.metz.supelec.fr/~vialle Support de cours élaboré avec l aide de l équipe pédagogique du

Plus en détail

Déploiement d une architecture Hadoop pour analyse de flux. françois-xavier.andreu@renater.fr

Déploiement d une architecture Hadoop pour analyse de flux. françois-xavier.andreu@renater.fr Déploiement d une architecture Hadoop pour analyse de flux françois-xavier.andreu@renater.fr 1 plan Introduction Hadoop Présentation Architecture d un cluster HDFS & MapReduce L architecture déployée Les

Plus en détail

DUT Informatique Module JAVA Apprentis Département Informatique 2008 / 2009. Travaux Pratiques n o 7 : RMI

DUT Informatique Module JAVA Apprentis Département Informatique 2008 / 2009. Travaux Pratiques n o 7 : RMI iut ORSAY DUT Informatique Département Informatique 2008 / 2009 Travaux Pratiques n o 7 : RMI Nom(s) : Groupe : Date : Objectifs : savoir créer des applications client-serveur mettant en jeu des machines

Plus en détail

Rapport de TER: Analyse de pointeur dans LLVM

Rapport de TER: Analyse de pointeur dans LLVM Rapport de TER: Analyse de pointeur dans LLVM Aurélien CHEMIER Janvier-Février 2014 Résumé Les optimisations réalisées à l intérieur d un compilateur, pour améliorer l efficacité du code généré, ont besoin

Plus en détail

RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005

RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005 Oussama ELKACHOINDI Wajdi MEHENNI RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005 Sommaire I. Préliminaire : Notice d exécution et mode opératoire...4 II. Architecture globale de l application...5

Plus en détail

Service combinators for farming virtual machines

Service combinators for farming virtual machines Master d Informatique Fondamentale École Normale Supérieure de Lyon Sémantique du parallélisme Chantal Keller Service combinators for farming virtual machines K. Bhargavan, A. D. Gordon, I. Narasamdya

Plus en détail

Guillaume MONTAVON Benoît MEILHAC. Rapport Technique du projet. Gestionnaire de tâches pour Android

Guillaume MONTAVON Benoît MEILHAC. Rapport Technique du projet. Gestionnaire de tâches pour Android Guillaume MONTAVON Benoît MEILHAC Rapport Technique du projet Gestionnaire de tâches pour Android Sommaire 1. Introduction... 3 2. Outils utilisés... 3 2.1. Android SDK... 3 2.2. Android dans Eclipse...

Plus en détail

PROJET INFORMATIQUE RECHERCHE DE SOUS-CHAÎNE DE CARACTERES

PROJET INFORMATIQUE RECHERCHE DE SOUS-CHAÎNE DE CARACTERES PROJET INFORMATIQUE RECHERCHE DE SOUS-CHAÎNE DE CARACTERES I-Présentation Un algorithme de recherche de sous-chaine est un type d'algorithme de recherche qui a pour objectif de trouver une chaîne de caractères

Plus en détail

Release Notes POM v5

Release Notes POM v5 Release Notes POM v5 POM Monitoring http://www.pom-monitoring.com Ce document est strictement réservé à l usage de la société POM Monitoring. Il ne peut être diffusé ou transféré sans l autorisation écrite

Plus en détail

Présentation. Logistique. Introduction

Présentation. Logistique. Introduction Présentation Diapo01 Je m appelle Michel Canneddu. Je développe avec 4D depuis 1987 et j exerce en tant qu indépendant depuis 1990. Avant de commencer, je tiens à remercier mes parrains Jean-Pierre MILLIET,

Plus en détail

Programmation C. Apprendre à développer des programmes simples dans le langage C

Programmation C. Apprendre à développer des programmes simples dans le langage C Programmation C Apprendre à développer des programmes simples dans le langage C Notes de cours sont disponibles sur http://astro.u-strasbg.fr/scyon/stusm (attention les majuscules sont importantes) Modalités

Plus en détail

Introduction aux Systèmes Distribués. Introduction générale

Introduction aux Systèmes Distribués. Introduction générale Introduction aux Systèmes Distribués Licence Informatique 3 ème année Introduction générale Eric Cariou Université de Pau et des Pays de l'adour Département Informatique Eric.Cariou@univ-pau.fr 1 Plan

Plus en détail

Problème ouvert au Lycée : utilisation des outils numériques dans la recherche d un contre-exemple SOMMAIRE

Problème ouvert au Lycée : utilisation des outils numériques dans la recherche d un contre-exemple SOMMAIRE Problème ouvert au Lycée : utilisation des outils numériques dans la recherche d un contre-exemple SOMMAIRE 1. Tableau récapitulatif... 2 2. Enoncé (inspiré d'un article du monde "A quoi ça sert")... 2

Plus en détail

MycolienDoc : une aide à la gestion d une bibliothèque virtuelle

MycolienDoc : une aide à la gestion d une bibliothèque virtuelle MycolienDoc : une aide à la gestion d une bibliothèque virtuelle Depuis quelques années, nous disposons sur notre ordinateur de bureau d une bibliothèque virtuelle. Cette bibliothèque est composée de documents

Plus en détail

Traitement de données

Traitement de données Traitement de données Présentation du module TINI Présentation du module : Le module Tini se décline en plusieurs versions, il est constitué d une carte d application et d un module processeur : Les modules

Plus en détail

Programmation Android TP7 - WebServices

Programmation Android TP7 - WebServices 1. WebService Dans le TP6, les avis étaient stockés dans une base SQL. Cette semaine les n-uplets sont stockés sur une base de données externe gérée par un serveur HTTP sur lequel tournent des scripts

Plus en détail

Utilisation du serveur de calcul du LSTA

Utilisation du serveur de calcul du LSTA Utilisation du serveur de calcul du LSTA B. Michel 19 octobre 2012 Ce document contient les informations minimales à connaître pour utiliser R et Matlab sur le serveur Mac à 24 coeurs du laboratoire (ou

Plus en détail

Big Data et Graphes : Quelques pistes de recherche

Big Data et Graphes : Quelques pistes de recherche Big Data et Graphes : Quelques pistes de recherche Hamamache Kheddouci http://liris.cnrs.fr/hamamache.kheddouci Laboratoire d'informatique en Image et Systèmes d'information LIRIS UMR 5205 CNRS/INSA de

Plus en détail

Process Daemon. Manuel de l utilisateur. Tous droits réservés 2008-2009 BrainBox Technology Inc. Process Daemon

Process Daemon. Manuel de l utilisateur. Tous droits réservés 2008-2009 BrainBox Technology Inc. Process Daemon Manuel de l utilisateur Table des matières 1.0 INTRODUCTION 3 2.0 EXEMPLES D APPLICATIONS 3 3.0 DESCRIPTION DU LOGICIEL 4 4.0 PREMIÈRE UTILISATION 11 5.0 QUESTIONS FRÉQUENTES 15 6.0 SYSTÈME REQUIS 17 Page

Plus en détail

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application Architecture Multi-Tier Traditionnellement une application informatique est un programme exécutable sur une machine qui représente la logique de traitement des données manipulées par l application. Ces

Plus en détail

Historique. Évolution des systèmes d exploitation (à travers les âges)

Historique. Évolution des systèmes d exploitation (à travers les âges) Historique Évolution des systèmes d exploitation (à travers les âges) Historique L histoire des systèmes d exploitation permet de dégager des concepts de base que l on retrouve dans les systèmes actuels

Plus en détail

Structures de données non linéaires

Structures de données non linéaires Structures de données non linéaires I. Graphes Définition Un graphe (simple) orienté G est un couple (S, A), où : S est un ensemble dont les éléments sont appelés les sommets. A est un ensemble de couples

Plus en détail

la réalisation d'un site d'inscriptions

la réalisation d'un site d'inscriptions Rapport du projet la réalisation d'un site d'inscriptions Réaliser par : Fatimaezzahra Yazough Année :2014 /2015 1/9 Yazough INTRODUCTION Le but de ce projet et de réaliser une maquette de site web pour

Plus en détail

Gestion des accès aux ressources à l aide des groupes

Gestion des accès aux ressources à l aide des groupes Gestion des accès aux ressources à l aide des groupes Un groupe est un ensemble de comptes d utilisateur. Les groupes permettent de simplifier la gestion de l accès des utilisateurs et des ordinateurs

Plus en détail

JVM. RMI - couche de référence. RMI - couche de transport TCP/IP

JVM. RMI - couche de référence. RMI - couche de transport TCP/IP Chapitre 9 Dans ce chapitre nous abordons le mécanisme RMI (Remote Method Invocation) permettant le développe ment des systèmes répartis. Nous expliquerons comment les classes d un serveur peuvent être

Plus en détail

Hadoop / Big Data. Benjamin Renaut MBDS 2015-2016

Hadoop / Big Data. Benjamin Renaut <renaut.benjamin@tokidev.fr> MBDS 2015-2016 Hadoop / Big Data Benjamin Renaut MBDS 2015-2016 11 MongoDB et map/reduce MongoDB: fonction mapreduce 11-1 Au delà des points d'intégration Hadoop qui vont être abordés par

Plus en détail

Avant de programmer en Java DOS Set Path=C:\JDK\bin Path=C:\JDK\bin C:\JDK\bin Set Path=%Path%;C:\JDK\bin C:\JDK\bin C:\JDK\

Avant de programmer en Java DOS Set Path=C:\JDK\bin Path=C:\JDK\bin C:\JDK\bin Set Path=%Path%;C:\JDK\bin C:\JDK\bin C:\JDK\ Exercices corrigés de programmation OO Java Préparés par : Mlle Imene Sghaier Année Académique : 2006-2007 Premiers Pas I. Avant de programmer en Java Le JDK de Sun (Java Development Kit) est l outil essentiel

Plus en détail

Offre FlowUnit by CGI Tests automatisés de flux de données inter-applicatifs

Offre FlowUnit by CGI Tests automatisés de flux de données inter-applicatifs Offre FlowUnit by CGI Tests automatisés de flux de données inter-applicatifs CGI Group Inc. 2013 Agenda 1 2 3 4 5 6 7 Problématiques et enjeux Solutions et fonctionnalités Concepts Exécution et rapport

Plus en détail

objectif : plan : Java, CORBA et RMI A. Le Grand,1997 1 JAVA, CORBA et RMI

objectif : plan : Java, CORBA et RMI A. Le Grand,1997 1 JAVA, CORBA et RMI JAVA, CORBA et RMI objectif : développer des applications client/serveur incluant des objets répartis Java / CORBA : client/serveur hétérogènes Java / RMI : client/serveur homogènes plan : l architecture

Plus en détail

Cours Programmation Système

Cours Programmation Système Cours Programmation Système Filière SMI Semestre S6 El Mostafa DAOUDI Département de Mathématiques et d Informatique, Faculté des Sciences Université Mohammed Premier Oujda m.daoudi@fso.ump.ma Février

Plus en détail

M2 TIIR (2013-2014) Bilel Derbel

M2 TIIR (2013-2014) Bilel Derbel M2 TIIR (2013-2014) Bilel Derbel Notre but est de concevoir une application générique sur grid5000 qui permet de déployer des calculs parallèles de façon transparente Plus précisément, nous nous plaçons

Plus en détail