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

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

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

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

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

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

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

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

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

TP1 : Initiation à Java et Eclipse

TP1 : Initiation à Java et Eclipse TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les

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

Our experience in using Apache Giraph for computing the diameter of large graphs. Paul Bertot - Flavian Jacquot

Our experience in using Apache Giraph for computing the diameter of large graphs. Paul Bertot - Flavian Jacquot Our experience in using Apache Giraph for computing the diameter of large graphs Paul Bertot - Flavian Jacquot Plan 1. 2. 3. 4. 5. 6. Contexte Hadoop Giraph L étude Partitionnement ifub 2 1. Contexte -

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

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

Jade. Projet Intelligence Artificielle «Devine à quoi je pense» Jade Projet Intelligence Artificielle «Devine à quoi je pense» Réalisé par Djénéba Djikiné, Alexandre Bernard et Julien Lafont EPSI CSII2-2011 TABLE DES MATIÈRES 1. Analyse du besoin a. Cahier des charges

Plus en détail

Chapitre 1 : Introduction aux bases de données

Chapitre 1 : Introduction aux bases de données Chapitre 1 : Introduction aux bases de données Les Bases de Données occupent aujourd'hui une place de plus en plus importante dans les systèmes informatiques. Les Systèmes de Gestion de Bases de Données

Plus en détail

MapReduce et Hadoop. Alexandre Denis Alexandre.Denis@inria.fr. Inria Bordeaux Sud-Ouest France ENSEIRB PG306

MapReduce et Hadoop. Alexandre Denis Alexandre.Denis@inria.fr. Inria Bordeaux Sud-Ouest France ENSEIRB PG306 MapReduce et Hadoop Alexandre Denis Alexandre.Denis@inria.fr Inria Bordeaux Sud-Ouest France ENSEIRB PG306 Fouille de données Recherche & indexation de gros volumes Appliquer une opération simple à beaucoup

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

«clustering» et «load balancing» avec Zope et ZEO

«clustering» et «load balancing» avec Zope et ZEO IN53 Printemps 2003 «clustering» et «load balancing» avec Zope et ZEO Professeur : M. Mignot Etudiants : Boureliou Sylvain et Meyer Pierre Sommaire Introduction...3 1. Présentation générale de ZEO...4

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

Licences Windows Server 2012 R2 dans le cadre de la virtualisation

Licences Windows Server 2012 R2 dans le cadre de la virtualisation Résumé des licences en volume Licences Windows Server 2012 R2 dans le cadre de la virtualisation Ce résumé s'applique à tous les programmes de licences en volume Microsoft. Sommaire Synthèse... 2 Nouveautés

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

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

Introduction à MapReduce/Hadoop et Spark

Introduction à MapReduce/Hadoop et Spark 1 / 36 Introduction à MapReduce/Hadoop et Spark Certificat Big Data Ludovic Denoyer et Sylvain Lamprier UPMC Plan 2 / 36 Contexte 3 / 36 Contexte 4 / 36 Data driven science: le 4e paradigme (Jim Gray -

Plus en détail

Map-Reduce : un cadre de programmation parallèlle pour l analyse de grandes données. Stéphane Genaud ENSIIE

Map-Reduce : un cadre de programmation parallèlle pour l analyse de grandes données. Stéphane Genaud ENSIIE Map-Reduce : un cadre de programmation parallèlle pour l analyse de grandes données Stéphane Genaud ENSIIE Traitement de données distribuées Google a introduit Map-Reduce [Dean and Ghemawat 2004] Ils s

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

MapReduce. Nicolas Dugué nicolas.dugue@univ-orleans.fr. M2 MIAGE Systèmes d information répartis

MapReduce. Nicolas Dugué nicolas.dugue@univ-orleans.fr. M2 MIAGE Systèmes d information répartis MapReduce Nicolas Dugué nicolas.dugue@univ-orleans.fr M2 MIAGE Systèmes d information répartis Plan 1 Introduction Big Data 2 MapReduce et ses implémentations 3 MapReduce pour fouiller des tweets 4 MapReduce

Plus en détail

Projet Active Object

Projet Active Object Projet Active Object TAO Livrable de conception et validation Romain GAIDIER Enseignant : M. Noël PLOUZEAU, ISTIC / IRISA Pierre-François LEFRANC Master 2 Informatique parcours MIAGE Méthodes Informatiques

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

NoSQL. Introduction 1/23. I NoSQL : Not Only SQL, ce n est pas du relationnel, et le contexte. I table d associations - Map - de couples (clef,valeur)

NoSQL. Introduction 1/23. I NoSQL : Not Only SQL, ce n est pas du relationnel, et le contexte. I table d associations - Map - de couples (clef,valeur) 1/23 2/23 Anne-Cécile Caron Master MIAGE - BDA 1er trimestre 2013-2014 I : Not Only SQL, ce n est pas du relationnel, et le contexte d utilisation n est donc pas celui des SGBDR. I Origine : recherche

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

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte Projet d informatique M1BI : Compression et décompression de texte Le but de ce projet est de coder un programme réalisant de la compression et décompression de texte. On se proposera de coder deux algorithmes

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

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

Les technologies du Big Data

Les technologies du Big Data Les technologies du Big Data PRÉSENTÉ AU 40 E CONGRÈS DE L ASSOCIATION DES ÉCONOMISTES QUÉBÉCOIS PAR TOM LANDRY, CONSEILLER SENIOR LE 20 MAI 2015 WWW.CRIM.CA TECHNOLOGIES: DES DONNÉES JUSQU'À L UTILISATEUR

Plus en détail

Ebauche Rapport finale

Ebauche Rapport finale Ebauche Rapport finale Sommaire : 1 - Introduction au C.D.N. 2 - Définition de la problématique 3 - Etat de l'art : Présentatio de 3 Topologies streaming p2p 1) INTRODUCTION au C.D.N. La croissance rapide

Plus en détail

Projet de Veille Technologique

Projet de Veille Technologique Projet de Veille Technologique Programmation carte à puce - JavaCard Ing. MZOUGHI Ines (i.mzoughi@gmail.com) Dr. MAHMOUDI Ramzi (mahmoudr@esiee.fr) TEST Sommaire Programmation JavaCard Les prérequis...

Plus en détail

Conception des systèmes répartis

Conception des systèmes répartis Conception des systèmes répartis Principes et concepts Gérard Padiou Département Informatique et Mathématiques appliquées ENSEEIHT Octobre 2012 Gérard Padiou Conception des systèmes répartis 1 / 37 plan

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

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

Module 0 : Présentation de Windows 2000

Module 0 : Présentation de Windows 2000 Module 0 : Présentation de Table des matières Vue d'ensemble Systèmes d'exploitation Implémentation de la gestion de réseau dans 1 Vue d'ensemble Donner une vue d'ensemble des sujets et des objectifs de

Plus en détail

Les clusters Linux. 4 août 2004 Benoît des Ligneris, Ph. D. benoit.des.ligneris@revolutionlinux.com. white-paper-cluster_fr.sxw, Version 74 Page 1

Les clusters Linux. 4 août 2004 Benoît des Ligneris, Ph. D. benoit.des.ligneris@revolutionlinux.com. white-paper-cluster_fr.sxw, Version 74 Page 1 Les clusters Linux 4 août 2004 Benoît des Ligneris, Ph. D. benoit.des.ligneris@revolutionlinux.com white-paper-cluster_fr.sxw, Version 74 Page 1 Table des matières Introduction....2 Haute performance (High

Plus en détail

Les structures de données. Rajae El Ouazzani

Les structures de données. Rajae El Ouazzani Les structures de données Rajae El Ouazzani Les arbres 2 1- Définition de l arborescence Une arborescence est une collection de nœuds reliés entre eux par des arcs. La collection peut être vide, cad l

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

TAGREROUT Seyf Allah TMRIM

TAGREROUT Seyf Allah TMRIM TAGREROUT Seyf Allah TMRIM Projet Isa server 2006 Installation et configuration d Isa d server 2006 : Installation d Isa Isa server 2006 Activation des Pings Ping NAT Redirection DNS Proxy (cache, visualisation

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

Comment créer des rapports de test professionnels sous LabVIEW? NIDays 2002

Comment créer des rapports de test professionnels sous LabVIEW? NIDays 2002 Comment créer des rapports de test professionnels sous LabVIEW? NIDays 2002 De nombreux utilisateurs rencontrant l équipe de National Instruments nous demandent comment générer un rapport complet à partir

Plus en détail

RMI le langage Java XII-1 JMF

RMI le langage Java XII-1 JMF Remote Method Invocation (RMI) XII-1 Introduction RMI est un ensemble de classes permettant de manipuler des objets sur des machines distantes (objets distants) de manière similaire aux objets sur la machine

Plus en détail

IFT785 Approches Orientées Objets. FINAL Été 2002. Remise : Jeudi 19 août 2002 à 9h00 am

IFT785 Approches Orientées Objets. FINAL Été 2002. Remise : Jeudi 19 août 2002 à 9h00 am IFT785 Approches Orientées Objets FINAL Été 2002 2 e session d examen Début : Lundi 16 septembre 2002 à 9h00 am Remise : Jeudi 19 août 2002 à 9h00 am Professeur : Sylvain GIROUX Note : /100 points Remarques

Plus en détail

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004 Questionnaire d'examen final INF1101 Sigle du cours Nom : Signature : Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004 Professeur(s)

Plus en détail

Acronis Backup & Recovery 10 Advanced Server Virtual Edition. Guide de démarrage rapide

Acronis Backup & Recovery 10 Advanced Server Virtual Edition. Guide de démarrage rapide Acronis Backup & Recovery 10 Advanced Server Virtual Edition Guide de démarrage rapide Ce document explique comment installer et utiliser Acronis Backup & Recovery 10 Advanced Server Virtual Edition. Copyright

Plus en détail

Resolution limit in community detection

Resolution limit in community detection Introduction Plan 2006 Introduction Plan Introduction Introduction Plan Introduction Point de départ : un graphe et des sous-graphes. But : quantifier le fait que les sous-graphes choisis sont des modules.

Plus en détail

Mise en œuvre des serveurs d application

Mise en œuvre des serveurs d application Nancy-Université Mise en œuvre des serveurs d application UE 203d Master 1 IST-IE Printemps 2008 Master 1 IST-IE : Mise en œuvre des serveurs d application 1/54 Ces transparents, ainsi que les énoncés

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

Stages 2014-2015 ISOFT : UNE SOCIETE INNOVANTE. Contact : Mme Lapedra, stage@isoft.fr

Stages 2014-2015 ISOFT : UNE SOCIETE INNOVANTE. Contact : Mme Lapedra, stage@isoft.fr Stages 2014-2015 ISOFT : UNE SOCIETE INNOVANTE Contact : Mme Lapedra, stage@isoft.fr ISoft, éditeur de logiciels, est spécialisé dans l informatique décisionnelle et l analyse de données. Son expertise

Plus en détail

Organiser vos données - Big Data. Patrick Millart Senior Sales Consultant

Organiser vos données - Big Data. Patrick Millart Senior Sales Consultant Organiser vos données - Big Data Patrick Millart Senior Sales Consultant The following is intended to outline our general product direction. It is intended for information purposes only, and may not be

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

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object) Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07

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

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS Depuis SAS 9.2 TS2M3, SAS propose un nouveau langage de programmation permettant de créer et gérer des tables SAS : le DS2 («Data Step 2»). Ces nouveautés

Plus en détail

Hibernate vs. le Cloud Computing

Hibernate vs. le Cloud Computing Hibernate vs. le Cloud Computing Qui suis-je? Julien Dubois Co-auteur de «Spring par la pratique» Ancien de SpringSource Directeur du consulting chez Ippon Technologies Suivez-moi sur Twitter : @juliendubois

Plus en détail

Annexe : La Programmation Informatique

Annexe : La Programmation Informatique GLOSSAIRE Table des matières La Programmation...2 Les langages de programmation...2 Java...2 La programmation orientée objet...2 Classe et Objet...3 API et Bibliothèque Logicielle...3 Environnement de

Plus en détail

Guide de déploiement

Guide de déploiement Guide de déploiement Installation du logiciel - Table des matières Présentation du déploiement du logiciel CommNet Server Windows Cluster Windows - Serveur virtuel CommNet Agent Windows Cluster Windows

Plus en détail

Utilisez Toucan portable pour vos sauvegardes

Utilisez Toucan portable pour vos sauvegardes Utilisez Toucan portable pour vos sauvegardes Préambule Toucan est un logiciel libre et gratuit, permettant de réaliser des sauvegardes ou synchronisation de vos données. Il est possible d automatiser

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

Big Data. Cyril Amsellem Consultant avant-vente. 16 juin 2011. Talend 2010 1

Big Data. Cyril Amsellem Consultant avant-vente. 16 juin 2011. Talend 2010 1 Big Data Cyril Amsellem Consultant avant-vente 16 juin 2011 Talend 2010 1 Big Data Architecture globale Hadoop Les projets Hadoop (partie 1) Hadoop-Core : projet principal. HDFS : système de fichiers distribués

Plus en détail

4 Exemples de problèmes MapReduce incrémentaux

4 Exemples de problèmes MapReduce incrémentaux 4 Exemples de problèmes MapReduce incrémentaux 1 / 32 Calcul des plus courtes distances à un noeud d un graphe Calcul des plus courts chemins entre toutes les paires de noeuds d un graphe Algorithme PageRank

Plus en détail

Préparer la synchronisation d'annuaires

Préparer la synchronisation d'annuaires 1 sur 6 16/02/2015 14:24 En utilisant ce site, vous autorisez les cookies à des fins d'analyse, de pertinence et de publicité En savoir plus France (Français) Se connecter Rechercher sur TechNet avec Bing

Plus en détail

Métriques de performance pour les algorithmes et programmes parallèles

Métriques de performance pour les algorithmes et programmes parallèles Métriques de performance pour les algorithmes et programmes parallèles 11 18 nov. 2002 Cette section est basée tout d abord sur la référence suivante (manuel suggéré mais non obligatoire) : R. Miller and

Plus en détail

Vous êtes bien à la bonne présentation, c est juste que je trouvais que le titre de cette présentation étais un peu long,

Vous êtes bien à la bonne présentation, c est juste que je trouvais que le titre de cette présentation étais un peu long, Vous êtes bien à la bonne présentation, c est juste que je trouvais que le titre de cette présentation étais un peu long, en fait ça me faisait penser au nom d un certain projet gouvernemental je me suis

Plus en détail

Rapport d activité. Mathieu Souchaud Juin 2007

Rapport d activité. Mathieu Souchaud Juin 2007 Rapport d activité Mathieu Souchaud Juin 2007 Ce document fait la synthèse des réalisations accomplies durant les sept premiers mois de ma mission (de novembre 2006 à juin 2007) au sein de l équipe ScAlApplix

Plus en détail

Utiliser Access ou Excel pour gérer vos données

Utiliser Access ou Excel pour gérer vos données Page 1 of 5 Microsoft Office Access Utiliser Access ou Excel pour gérer vos données S'applique à : Microsoft Office Access 2007 Masquer tout Les programmes de feuilles de calcul automatisées, tels que

Plus en détail

CAHIER DE S CHARGE S Remote Workload Manager

CAHIER DE S CHARGE S Remote Workload Manager CAHIER DE S CHARGE S Remote Workload Manager équipe Regis Rouyard (rouyar_r) Jonathan Bouchot (boucho_o) Johan Massin (massin_j) Jacky Rouquette (rouque_j) Yannick Boillon (boillo_o) EPITECH INOVATION

Plus en détail

Introduction aux algorithmes MapReduce. Mathieu Dumoulin (GRAAL), 14 Février 2014

Introduction aux algorithmes MapReduce. Mathieu Dumoulin (GRAAL), 14 Février 2014 Introduction aux algorithmes MapReduce Mathieu Dumoulin (GRAAL), 14 Février 2014 Plan Introduction de la problématique Tutoriel MapReduce Design d algorithmes MapReduce Tri, somme et calcul de moyenne

Plus en détail

WHITE PAPER. Quels avantages la déduplication offre-t-elle aux entreprises? Livre blanc Acronis

WHITE PAPER. Quels avantages la déduplication offre-t-elle aux entreprises? Livre blanc Acronis Quels avantages la déduplication offre-t-elle aux entreprises? Livre blanc Acronis Copyright Acronis, Inc. 2000 2009 Table des matières Résumé... 3 Qu est-ce que la déduplication?... 4 Déduplication au

Plus en détail

TP redondance DHCP. Gillard Frédéric Page 1/17. Vue d ensemble du basculement DHCP

TP redondance DHCP. Gillard Frédéric Page 1/17. Vue d ensemble du basculement DHCP Vue d ensemble du basculement DHCP Dans Windows Server 2008 R2, il existe deux options à haute disponibilité dans le cadre du déploiement du serveur DHCP. Chacune de ces options est liée à certains défis.

Plus en détail

Chapitre I Notions de base et outils de travail

Chapitre I Notions de base et outils de travail Chapitre I Notions de base et outils de travail Objectifs Connaître les principes fondateurs et l historique du langage Java S informer des principales caractéristiques du langage Java Connaître l environnement

Plus en détail

BIG DATA en Sciences et Industries de l Environnement

BIG DATA en Sciences et Industries de l Environnement BIG DATA en Sciences et Industries de l Environnement François Royer www.datasio.com 21 mars 2012 FR Big Data Congress, Paris 2012 1/23 Transport terrestre Traçabilité Océanographie Transport aérien Télémétrie

Plus en détail

La base de données XML exist. A. Belaïd

La base de données XML exist. A. Belaïd La base de données XML exist Introduction Qu est-ce-que exist? C est une base de donnée native, entièrement écrite en Java XML n est pas une base de données en soi Bien qu il possède quelques caractéristiques

Plus en détail

Formation Cloudera Data Analyst Utiliser Pig, Hive et Impala avec Hadoop

Formation Cloudera Data Analyst Utiliser Pig, Hive et Impala avec Hadoop Passez au niveau supérieur en termes de connaissance grâce à la formation Data Analyst de Cloudera. Public Durée Objectifs Analystes de données, business analysts, développeurs et administrateurs qui ont

Plus en détail

Panorama des solutions analytiques existantes

Panorama des solutions analytiques existantes Arnaud LAROCHE Julien DAMON Panorama des solutions analytiques existantes SFdS Méthodes et Logiciels - 16 janvier 2014 - Données Massives Ne sont ici considérés que les solutions autour de l environnement

Plus en détail

LICENCE : INFORMATIQUE GENERALE

LICENCE : INFORMATIQUE GENERALE LICENCE : INFORMATIQUE GENERALE RÉSUMÉ DE LA FORMATION Type de diplôme : Licence (LMD) Domaine : Sciences, Ingénierie et Technologies Mention : Informatique générale Objectifs Le diplôme offre une formation

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

Info0804. Cours 6. Optimisation combinatoire : Applications et compléments

Info0804. Cours 6. Optimisation combinatoire : Applications et compléments Recherche Opérationnelle Optimisation combinatoire : Applications et compléments Pierre Delisle Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique 17 février 2014 Plan de

Plus en détail

Sauvegarde des données du scribe sur disque USB

Sauvegarde des données du scribe sur disque USB Sauvegarde des données du scribe sur disque USB Objectif : Palier aux dysfonctionnements provoqués par une sauvegarde «Bacula» proposée dans l'ead du Scribe. Réaliser une sauvegarde des données du serveur

Plus en détail

Télécom Nancy Année 2013-2014

Télécom Nancy Année 2013-2014 Télécom Nancy Année 2013-2014 Rapport 1A Ajout du langage C dans la Programmer's Learning Machine GIANNINI Valentin Loria 615, rue du Jardin Botanique 54600, Villers-Lès-Nancy Maître de stage : QUINSON

Plus en détail

R+Hadoop = Rhadoop* Des logiciels libres complémentaires, une implémentation, une réponse au nouveau paradigme du bigdata!

R+Hadoop = Rhadoop* Des logiciels libres complémentaires, une implémentation, une réponse au nouveau paradigme du bigdata! R+Hadoop = Rhadoop* * Des logiciels libres complémentaires, une implémentation, une réponse au nouveau paradigme du bigdata! 27 Janvier 2014 / Université Paul Sabatier / DTSI / David Tsang-Hin-Sun Big

Plus en détail

DUT Informatique Module Système S4 C Département Informatique 2009 / 2010. Travaux Pratiques n o 5 : Sockets Stream

DUT Informatique Module Système S4 C Département Informatique 2009 / 2010. Travaux Pratiques n o 5 : Sockets Stream iut ORSAY DUT Informatique Département Informatique 2009 / 2010 Travaux Pratiques n o 5 : Sockets Stream Nom(s) : Groupe : Date : Objectifs : manipuler les primitives relatives à la communication par sockets

Plus en détail

Qlik Sense Desktop. Qlik Sense 2.0.2 Copyright 1993-2015 QlikTech International AB. Tous droits réservés.

Qlik Sense Desktop. Qlik Sense 2.0.2 Copyright 1993-2015 QlikTech International AB. Tous droits réservés. Qlik Sense Desktop Qlik Sense 2.0.2 Copyright 1993-2015 QlikTech International AB. Tous droits réservés. Copyright 1993-2015 QlikTech International AB. Tous droits réservés. Qlik, QlikTech, Qlik Sense,

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

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr 6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr Interface d un SGF Implémentation d un SGF Gestion de la correspondance entre la structure logique et la structure

Plus en détail

Les diagrammes de modélisation

Les diagrammes de modélisation L approche Orientée Objet et UML 1 Plan du cours Introduction au Génie Logiciel L approche Orientée Objet et Notation UML Les diagrammes de modélisation Relations entre les différents diagrammes De l analyse

Plus en détail

Cours 1 : Qu est-ce que la programmation?

Cours 1 : Qu est-ce que la programmation? 1/65 Introduction à la programmation Cours 1 : Qu est-ce que la programmation? Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr Université Paris Diderot Paris 7 2/65 1. Sortez un appareil qui peut se rendre

Plus en détail

Introduction à la Programmation Parallèle: MPI

Introduction à la Programmation Parallèle: MPI Introduction à la Programmation Parallèle: MPI Frédéric Gava et Gaétan Hains L.A.C.L Laboratoire d Algorithmique, Complexité et Logique Cours du M2 SSI option PSSR Plan 1 Modèle de programmation 2 3 4

Plus en détail

Module.NET 3 Les Assemblys.NET

Module.NET 3 Les Assemblys.NET Module.NET Chapitre 3 Les Assemblys.NET 2011/2012 Page 1 sur 13 Contenu Cours... 3 3.1 - Définition d un assembly.net... 3 3.2 - Private assembly ou assembly privé.... 3 3.3 - Shared assembly ou assembly

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

Hadoop / Big Data. Benjamin Renaut <renaut.benjamin@tokidev.fr> MBDS 2014-2015

Hadoop / Big Data. Benjamin Renaut <renaut.benjamin@tokidev.fr> MBDS 2014-2015 Hadoop / Big Data Benjamin Renaut MBDS 2014-2015 TP 3 TP noté Méthodologie Map/Reduce - programmation Hadoop - Sqoop Préparation du TP 1 Importer la machine virtuelle.ova du

Plus en détail