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

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

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

Projet de cryptographie. Algorithme de cryptage de type Bluetooth

Projet de cryptographie. Algorithme de cryptage de type Bluetooth Projet de cryptographie Algorithme de cryptage de type Bluetooth Le but de ce projet est de créer une application qui crypte et décrypte des fichiers en utilisant le principe de cryptage du Bluetooth.

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

Table des matières. 1 Objectifs... 3 2 Précautions importantes avant toute utilisation :... 4 3 Mode d emploi... 5 4 Questions / réponses...

Table des matières. 1 Objectifs... 3 2 Précautions importantes avant toute utilisation :... 4 3 Mode d emploi... 5 4 Questions / réponses... Table des matières 1 Objectifs... 3 2 Précautions importantes avant toute utilisation :... 4 3 Mode d emploi... 5 4 Questions / réponses... 6 1 Objectifs 1.1 Le BOB Migration Kit permet de : Convertir

Plus en détail

Introduction au Makefile

Introduction au Makefile Introduction au Makefile Nicolas Kielbasiewicz 3 mars 2009 Le développement d un programme et plus généralement d un logiciel demande au(x) programmeur(s) de gérer plusieurs fichiers, voire plusieurs langages.

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

Traduction des Langages : Le Compilateur Micro Java

Traduction des Langages : Le Compilateur Micro Java BARABZAN Jean-René OUAHAB Karim TUCITO David 2A IMA Traduction des Langages : Le Compilateur Micro Java µ Page 1 Introduction Le but de ce projet est d écrire en JAVA un compilateur Micro-Java générant

Plus en détail

Classes et templates C++

Classes et templates C++ Classes et templates C++ Ce TP propose une application des classes, des templates et du polymorphisme au travers du design de classes permettant de gérer des courbes de Bézier. Contents 1 Bézier unidimensionnelle

Plus en détail

RAPPORT DE CONCEPTION UML :

RAPPORT DE CONCEPTION UML : Carlo Abi Chahine Sylvain Archenault Yves Houpert Martine Wang RAPPORT DE CONCEPTION UML : Bamboo Ch@t Projet GM4 Juin 2006 Table des matières 1 Introduction 2 2 Présentation du logiciel 3 2.1 Précisions

Plus en détail

Module 7 : Crashs d Excel

Module 7 : Crashs d Excel Module 7 : Crashs d Excel 7.0 Introduction La plupart des utilisateurs d Excel ont probablement été confrontés à des ralentissements ou à un blocage, accompagné du redoutable message «Microsoft Excel a

Plus en détail

Quelques éléments de compilation en C et makefiles

Quelques éléments de compilation en C et makefiles Quelques éléments de compilation en C et makefiles Guillaume Feuillade 1 Compiler un programme C Le principe de la compilation consiste à passer d un ensemble de fichiers de code à un programme exécutable

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

Mise en œuvre d un Site Sharepoint-V1

Mise en œuvre d un Site Sharepoint-V1 Mise en œuvre d un Site Sharepoint- MAJ 20/01/2015 Ce document décrit le paramétrage pour la mise en œuvre des fonctionnalités standard de Microsoft SharePoint 2013 NADAP et SharePoint NADAP ( Nouvelle

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

AOLbox. Partage de disque dur Guide d utilisation. Partage de disque dur Guide d utilisation 1

AOLbox. Partage de disque dur Guide d utilisation. Partage de disque dur Guide d utilisation 1 AOLbox Partage de disque dur Guide d utilisation Partage de disque dur Guide d utilisation 1 Sommaire 1. L AOLbox et le partage de disque dur... 3 1.1 Le partage de disque dur sans l AOLbox... 3 1.1.1

Plus en détail

PROJET EHPTMMMORPGSVR

PROJET EHPTMMMORPGSVR PROJET EHPTMMMORPGSVR Déroulement du projet Tableau d avancement : https://docs.google.com/spreadsheets/d/1aq1odbyaavk_rcxdcvowvz9kvmzy8nc5f1p26at2ufq/e dit?usp=sharing Tous d abord, nous avons installé

Plus en détail

Poker. A rendre pour le 25 avril

Poker. A rendre pour le 25 avril Poker A rendre pour le 25 avril 0 Avant propos 0.1 Notation Les parties sans * sont obligatoires (ne rendez pas un projet qui ne contient pas toutes les fonctions sans *). Celles avec (*) sont moins faciles

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

Utilisation de SVN. 1 Introduction. 2 Architecture. 3 Références et aide en ligne

Utilisation de SVN. 1 Introduction. 2 Architecture. 3 Références et aide en ligne N7 1IMA TECHNOLOGIE OBJET TP 3 18/02/2015 (Séance TP 2) Objectifs : Comprendre le principe d un outil de gestion de configuration Savoir utiliser SVN (subversion) 1 Introduction Pour travailler en groupe

Plus en détail

Création d un catalogue en ligne

Création d un catalogue en ligne 5 Création d un catalogue en ligne Au sommaire de ce chapitre Fonctionnement théorique Définition de jeux d enregistrements Insertion de contenu dynamique Aperçu des données Finalisation de la page de

Plus en détail

Programmation Objet Java Correction

Programmation Objet Java Correction INSA - 4 AE 2007 2008 Durée : 1H00 Contrôle Programmation Objet Java Correction Consignes Tous les documents sont autorisés, mais ils seront peu utiles. Indiquez vos nom et prénom sur chaque feuille. Le

Plus en détail

BTS SIO option SISR Lycée Godefroy de Bouillon Clermont-Ferrand

BTS SIO option SISR Lycée Godefroy de Bouillon Clermont-Ferrand Active Directory sous Windows Server SAHIN Ibrahim BTS SIO option SISR Lycée Godefroy de Bouillon Clermont-Ferrand Sommaire I - Introduction... 3 1) Systèmes d exploitation utilisés... 3 2) Objectifs...

Plus en détail

à l aide de l assistant

à l aide de l assistant Présentation Vous venez d acquérir votre nouvel ordinateur ou tout simplement, ce 25 octobre 2001, votre nouveau système d exploitation Microsoft Windows XP. Dans ce dernier cas, le problème ne se pose

Plus en détail

Livret du Stagiaire en Informatique

Livret du Stagiaire en Informatique Université François-Rabelais de Tours Campus de Blois UFR Sciences et Techniques Département Informatique Livret du Stagiaire en Informatique Licence 3ème année Master 2ème année Année 2006-2007 Responsable

Plus en détail

Manuel du logiciel PrestaTest.

Manuel du logiciel PrestaTest. Manuel du logiciel. Ce document décrit les différents tests que permet le logiciel, il liste également les informations nécessaires à chacun d entre eux. Table des matières Prérequis de PrestaConnect :...2

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

Plateforme AnaXagora. Guide d utilisation

Plateforme AnaXagora. Guide d utilisation Table des matières 1. PRESENTATION DE LA PLATE-FORME D APPRENTISSAGE ANAXAGORA... 3 2. ARCHITECTURE FONCTIONNELLE... 4 3. L APPRENTISSAGE... 5 3.1. L ESPACE DE TRAVAIL... 5 3.1.1. Le calendrier... 5 4.

Plus en détail

Partage d un Macintosh entre plusieurs utilisateurs

Partage d un Macintosh entre plusieurs utilisateurs Infos info Votre Mac va vous aider NUMÉRO 16 SEMAINE DU 27 AU 31 MARS 2006 Partage d un Macintosh entre plusieurs utilisateurs Un Mac qui n est pas partagé, c est un Mac qui s ennuie Le but de ce seizième

Plus en détail

TO52 - Application médicale sous android Consultation des informations patient

TO52 - Application médicale sous android Consultation des informations patient TO52 - Application médicale sous android Consultation des informations patient DAVID LACHICHE XAVIER MICHEL Automne 2011 TABLE DES MATIÈRES 1 Partie données métier 2 1.1 Généralités.......................................

Plus en détail

G en om3: Building middleware-independent robotic components. Comparaison de middleware: YARP, MS Robotics Dev Studio, URBI, OpenRTM-aist, ROS

G en om3: Building middleware-independent robotic components. Comparaison de middleware: YARP, MS Robotics Dev Studio, URBI, OpenRTM-aist, ROS G en om3: Building middleware-independent robotic components Comparaison de middleware: YARP, MS Robotics Dev Studio, URBI, OpenRTM-aist, ROS Pablo Rauzy 15 février 2011 Table des matières 1 G en om3 :

Plus en détail

Lancement de la simulation SIMBA

Lancement de la simulation SIMBA Lancement de la simulation SIMBA Sommaire Nature du document... 1 Présentation de l architecture réseau... 1 Configuration poste élève... 3 Configuration confxml... 3 Installation du service SimulationSIMBA...

Plus en détail

1) problématique. 2) Objectif. Je devais donc réaliser un programme informatique qui au terme de 1 mois de travail résoudrait cette problématique.

1) problématique. 2) Objectif. Je devais donc réaliser un programme informatique qui au terme de 1 mois de travail résoudrait cette problématique. Etude de cas. 1) problématique. Comme on peut le voir sur le schéma du réseau si dessus France3 via Stella n utilise pas de routeur mais des switches de niveau 3 qui font office de tête de réseau. Avec

Plus en détail

Architecture des ordinateurs. Optimisation : pipeline. Pipeline (I) Pipeline (II) Exemple simplifié : Instructions de type R

Architecture des ordinateurs. Optimisation : pipeline. Pipeline (I) Pipeline (II) Exemple simplifié : Instructions de type R Architecture des ordinateurs Licence Informatique - Université de Provence Jean-Marc Talbot Optimisation : pipeline jtalbot@cmi.univ-mrs.fr L3 Informatique - Université de Provence () Architecture des

Plus en détail

Introduction aux systèmes d exploitation

Introduction aux systèmes d exploitation Introduction aux systèmes d exploitation Le système d exploitation est un ensemble de logiciels qui pilotent la partie matérielle d un ordinateur. Les principales ressources gérées par un système d exploitation

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

Gestion complète des performances

Gestion complète des performances Gestion complète des performances Rétrocompatibilité Windows XP et Windows Vista 2013 Réglez et optimisez les performances de votre ordinateur à l aide d une application puissante et rapide. Téléchargement

Plus en détail

Démarrage rapide. Protection de logiciels sous MAC avec DinkeyDongle. Contact commercial : Tél. : 02 47 35 70 35 Email : com@aplika.

Démarrage rapide. Protection de logiciels sous MAC avec DinkeyDongle. Contact commercial : Tél. : 02 47 35 70 35 Email : com@aplika. Démarrage rapide Protection de logiciels sous MAC avec DinkeyDongle Contact commercial : Tél. : 02 47 35 70 35 Email : com@aplika.fr Contact Technique : Tél. : 02 47 35 53 36 Email : support@aplika.fr

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

Projet OpNet. Spécialité Réseaux 2003/2004 Yannick GRENZINGER Loic JAQUEMET

Projet OpNet. Spécialité Réseaux 2003/2004 Yannick GRENZINGER Loic JAQUEMET Projet OpNet Spécialité Réseaux 2003/2004 Yannick GRENZINGER Loic JAQUEMET 1Présentation...3 1.1Le besoin de mobilité...3 1.2Le protocole IP Mobile...4 1.3Opnet...5 1.4Le projet...6 2La réalisation du

Plus en détail

DOCUMENT D ACCOMPAGNEMENT POUR L INSTALLATION DU LOGICIEL ESTIMACTION

DOCUMENT D ACCOMPAGNEMENT POUR L INSTALLATION DU LOGICIEL ESTIMACTION DOCUMENT D ACCOMPAGNEMENT POUR L INSTALLATION DU LOGICIEL ESTIMACTION EstimAction Nom d utilisateur : Mot de passe : Microsoft SQL Server Express Edition Adresse de la base de données : Nom d utilisateur

Plus en détail

UNE SOLUTION CRM CONÇUE POUR LA FORCE DE VENTE

UNE SOLUTION CRM CONÇUE POUR LA FORCE DE VENTE LIVRE BLANC UNE SOLUTION CRM CONÇUE POUR LA FORCE DE VENTE Comment choisir un CRM qui répondra à toutes les attentes de vos commerciaux www.aptean..fr LIVRE BLANC UNE SOLUTION CRM CONÇUE POUR LA FORCE

Plus en détail

Chap. V : Les interruptions

Chap. V : Les interruptions UMR 7030 - Université Paris 13 - Institut Galilée Cours Architecture et Système Nous étudions dans ce chapitre les interruptions matérielles (ou externes), c est-à-dire déclenchées par le matériel (hardware)

Plus en détail

Le voyageur de commerce

Le voyageur de commerce Université de Strasbourg UFR Maths-Informatique Licence 3 - Semestre 6 Le voyageur de commerce Jonathan HAEHNEL & Marc PAPILLON Strasbourg, le 3 mai 2012 Table des matières 1 Etat des lieux 4 1.1 Fonctionnalités..............................

Plus en détail

Thibault Denizet. Introduction à SSIS

Thibault Denizet. Introduction à SSIS Thibault Denizet Introduction à SSIS 2 SSIS - Introduction Sommaire 1 Introduction à SQL Server 2008 Integration services... 3 2 Rappel sur la Business Intelligence... 4 2.1 ETL (Extract, Transform, Load)...

Plus en détail

Rapport de stage. Création d un site web. Stage du 20/01/2013 au 21/02/2013

Rapport de stage. Création d un site web. Stage du 20/01/2013 au 21/02/2013 Rapport de stage Création d un site web Stage du 20/01/2013 au 21/02/2013 Auteur : Antoine Luczak Tuteur professionnel : M. Tison Tuteur scolaire : Mme Girondon Année scolaire : 2013/2014 1 Table des matières

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

Guide d intégration. Protection de logiciels LABVIEW avec CopyMinder. Contact Commercial : Tél. : 02 47 35 70 35 Email : com@aplika.

Guide d intégration. Protection de logiciels LABVIEW avec CopyMinder. Contact Commercial : Tél. : 02 47 35 70 35 Email : com@aplika. Guide d intégration Protection de logiciels LABVIEW avec CopyMinder Contact Commercial : Tél. : 02 47 35 70 35 Email : com@aplika.fr Contact Technique : Tél. : 02 47 35 53 36 Email : support@aplika.fr

Plus en détail

Plus De Cartouches 2013/2014

Plus De Cartouches 2013/2014 Plus De Cartouches 2013/2014 Page 1 SOMMAIRE INTRODUCTION ET PRESENTATION...3 MISSIONS...4 LE CONTEXTE DES MISSIONS...4 LES OBJECTIFS...4 LES CONTRAINTES...5 REALISATIONS...6 CHOIX EFFECTUÉS...6 RÉSULTATS...10

Plus en détail

Windows XP. Microsoft. Sommaire :

Windows XP. Microsoft. Sommaire : Microsoft Windows XP Sommaire : OUVERTURE DE SESSION...2 LE BUREAU...3 CHANGER D ENVIRRONEMENT...4 NOUVEAU RACCOURCI...7 LE MENU DEMARRER...9 LES PROGRAMMES AU DEMARRAGE...11 LA GESTION DES FICHIERS...12

Plus en détail

Plan. Tableaux. Utilité. Définition. Exemples. Déclaration d un tableau

Plan. Tableaux. Utilité. Définition. Exemples. Déclaration d un tableau Plan Tableaux Université de Nice - Sophia Antipolis Richard Grin Version 1.0.4 25/11/10 Définition Déclaration d un tableau Création d un tableau Utilisation d un dun tableau Tableau des paramètres de

Plus en détail

Traiter le son composer un album photos

Traiter le son composer un album photos Traiter le son composer un album photos PowerPoint 2007 EMMANUELLE MENNY 14/11/2009 Créer un album photo... 3 Insérer un son de la bibliothèque multimédia à l aide du ruban... 5 Insérer un son à l'aide

Plus en détail

TapeWare. Logiciel de sauvegarde

TapeWare. Logiciel de sauvegarde TapeWare Logiciel de sauvegarde TapeWare est un logiciel de sauvegarde utilisé avec les lecteurs DAT, notamment de marque Hewlett-Packard. Les lecteurs DAT utilisent une bande magnétique enfermée dans

Plus en détail

ACCEDER A SA MESSAGERIE A DISTANCE

ACCEDER A SA MESSAGERIE A DISTANCE Pour garder le contact avec leur entreprise, de plus en plus de collaborateurs ont besoin d accéder à leurs emails lorsqu ils sont en déplacement ou à domicile. Cet accès distant est facilité si la messagerie

Plus en détail

Une fois la page chargée, vous devriez vous trouvez sur cette interface :

Une fois la page chargée, vous devriez vous trouvez sur cette interface : 1. Introduction Moodle est une plate-forme d enseignement collaborative en ligne déployée à l Université de Biskra. Elle permet de créer des espaces de cours accessibles depuis Internet où l enseignant

Plus en détail

Entraînement au concours ACM-ICPC

Entraînement au concours ACM-ICPC Entraînement au concours ACM-ICPC Déboguage et profilage de programmes C++ Page 1 / 11 Avec un IDE (environnement de développement intégré) Eclipse CDT, NetBeans, Visual C++, XCode, KDeveloper... Fonctionnalités

Plus en détail

D un point de vue système, ajuster la mémoire est l une des principales méthodes pour augmenter ou réduire les performances d un processus.

D un point de vue système, ajuster la mémoire est l une des principales méthodes pour augmenter ou réduire les performances d un processus. GESTION DE LA MEMOIRE SOUS UNIX La mémoire est une ressource critique car elle conditionne les temps de traitements. Différentes options SAS sont disponibles pour utiliser au mieux la mémoire de la machine.

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

ACCÉDER A SA MESSAGERIE A DISTANCE

ACCÉDER A SA MESSAGERIE A DISTANCE ACCÉDER A SA MESSAGERIE A DISTANCE Lorraine Pour garder le contact avec leur entreprise, de plus en plus de collaborateurs ont besoin d accéder à leurs emails lorsqu ils sont en déplacement ou à domicile.

Plus en détail

Manuel du Desktop Sharing

Manuel du Desktop Sharing Brad Hards Traduction française : Ludovic Grossard Traduction française : Damien Raude-Morvan Traduction française : Joseph Richard 2 Table des matières 1 Introduction 5 2 Le protocole de mémoire de trame

Plus en détail

ACCUEIL...2 LA DEMANDE DE DEVIS...11 COMPLETER UN DEVIS...12 ACCEPTER OU A REFUSER LE DEVIS...13

ACCUEIL...2 LA DEMANDE DE DEVIS...11 COMPLETER UN DEVIS...12 ACCEPTER OU A REFUSER LE DEVIS...13 ACCUEIL...2 LA COMMANDE...3 ONGLET "NATURE DES TRAVAUX"...3 ONGLET INFORMATIONS...8 ONGLET RECAPITULATIF...9 LA COMMANDE SIMPLE A VALIDER PAR LES ACHETEURS...10 LA DEMANDE DE DEVIS...11 COMPLETER UN DEVIS...12

Plus en détail

gcaisse 1.Réglages a. Boutique b. Mots de passe c. Ventes

gcaisse 1.Réglages a. Boutique b. Mots de passe c. Ventes gcaisse 1.Réglages a. Boutique Cette fiche permet de renseigner les informations sur la boutique. Les coordonnées d adresse seront reprises dans l impression d entête des factures, quand vous cliquez sur

Plus en détail

Aperçu de la sauvegarde sous Windows 7

Aperçu de la sauvegarde sous Windows 7 Aperçu de la sauvegarde sous Windows 7 Auteur : Olivier Borgeaud / Informaticien Diplômé Version : 1.0 Date : 3 mai 2009 Sommaire Aperçu de la sauvegarde sous Windows 7... 3 Configurer et créer une sauvegarde...

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

Outil de documentation sur la réduction D : Système d archivage de l analyse de la réduction

Outil de documentation sur la réduction D : Système d archivage de l analyse de la réduction Outil de documentation sur la réduction D : Système d archivage de l analyse de la réduction A : Analyse des émissions sectorielles clés B : Dispositions institutionnelles pour les activités de réduction

Plus en détail

Manuel du revendeur. version 2.0-r1

Manuel du revendeur. version 2.0-r1 Manuel du revendeur version 2.0-r1 Table des matières 1 Explication des termes 3 2 Sections du tableau d administration dédié au revendeur 3 3 Généralités 4 3.1 Aperçu............................... 4

Plus en détail

GED MARKETING. Page 1 sur 18

GED MARKETING. Page 1 sur 18 GED MARKETING I. Présentation du produit... 2 II. Page principale de l application... 3 L arbre... 3 Le menu... 4 La fenêtre de navigation... 4 III. La recherche de documents... 4 Rechercher tous les documents...

Plus en détail

Manuel d installation et d utilisation du logiciel GigaRunner

Manuel d installation et d utilisation du logiciel GigaRunner Manuel d installation et d utilisation du logiciel GigaRunner Manuel Version : V1.6 du 12 juillet 2011 Pour plus d informations, vous pouvez consulter notre site web : www.gigarunner.com Table des matières

Plus en détail

KWISATZ MODULE PRESTASHOP

KWISATZ MODULE PRESTASHOP Table des matières -1) KWISATZ - :...2-1.1) Introduction :...2-1.2) Description :...3-1.2.1) Schéma :...3-1.3) Mise en place :...4-1.3.1) PRESTASHOP :...4-1.3.1.1) Les Web Services :...4-1.3.2) KWISATZ

Plus en détail

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles Types d applications pour la persistance Université de Nice Sophia-Antipolis Version 0.9 28/8/07 Richard Grin Toutes les applications n ont pas une complexité qui nécessite une architecture n- tiers Ce

Plus en détail

WSS Windows Sharepoint Services Guide pratique. Section Technopédagogie

WSS Windows Sharepoint Services Guide pratique. Section Technopédagogie WSS Windows Sharepoint Services Guide pratique Section Technopédagogie Août 2007 1. QU EST CE QUE WSS? «Un site WSS SharePoint est un site Web représentant un espace de collaboration et un lieu de stockage

Plus en détail

Dossier Technique. Détail des modifications apportées à GRR. Détail des modifications apportées à GRR Le 17/07/2008. Page 1/10

Dossier Technique. Détail des modifications apportées à GRR. Détail des modifications apportées à GRR Le 17/07/2008. Page 1/10 Dossier Technique Page 1/10 Sommaire : 1. REPONSE TECHNIQUE A LA DEMANDE 3 1.1. Prise en compte de la dernière version de phpcas 3 1.2. Gestion de la connexion à GRR 3 1.2.1. Récupération des attributs

Plus en détail

WinTask x64 Le Planificateur de tâches sous Windows 7 64 bits, Windows 8/8.1 64 bits, Windows 2008 R2 et Windows 2012 64 bits

WinTask x64 Le Planificateur de tâches sous Windows 7 64 bits, Windows 8/8.1 64 bits, Windows 2008 R2 et Windows 2012 64 bits WinTask x64 Le Planificateur de tâches sous Windows 7 64 bits, Windows 8/8.1 64 bits, Windows 2008 R2 et Windows 2012 64 bits Manuel d initiation du Planificateur 2 INTRODUCTION 5 CHAPITRE I : INSTALLATION

Plus en détail

ATELIER ALGORITHME PREMIERS PAS Journée d information sur les nouveaux programmes de Première S-ES 2010-2011

ATELIER ALGORITHME PREMIERS PAS Journée d information sur les nouveaux programmes de Première S-ES 2010-2011 Pour me contacter : irene.rougier@ac-clermont.fr 1. Introduction ATELIER ALGORITHME PREMIERS PAS Journée d information sur les nouveaux programmes de Première S-ES 2010-2011 De nombreux documents et informations

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

Encryptions, compression et partitionnement des données

Encryptions, compression et partitionnement des données Encryptions, compression et partitionnement des données Version 1.0 Grégory CASANOVA 2 Compression, encryption et partitionnement des données Sommaire 1 Introduction... 3 2 Encryption transparente des

Plus en détail

4D v11 SQL Release 6 (11.6) ADDENDUM

4D v11 SQL Release 6 (11.6) ADDENDUM ADDENDUM Bienvenue dans la release 6 de 4D v11 SQL. Ce document présente les nouveautés et modifications apportées à cette nouvelle version du programme. Augmentation des capacités de chiffrement La release

Plus en détail

FORMATION HADOOP Développeur pour Hadoop (Apache)

FORMATION HADOOP Développeur pour Hadoop (Apache) FORMATION HADOOP Développeur pour Hadoop (Apache) Ce document reste la propriété du Groupe Cyrès. Toute copie, diffusion, exploitation même partielle doit faire l objet d une demande écrite auprès de Cyrès.

Plus en détail

I. Objectifs de ce document : II. Le changement d architecture :

I. Objectifs de ce document : II. Le changement d architecture : I. Objectifs de ce document : Ce document a pour but de vous présenter : - L outil File Server Migration Toolkit 1.1. - Le mode opératoire à suivre pour migrer les données de plusieurs serveurs de fichiers

Plus en détail

Rapport de Conception Préliminaire MESSAGERIE

Rapport de Conception Préliminaire MESSAGERIE Rapport de Conception Préliminaire MESSAGERIE Conception préliminaire du logiciel demandé en projet, illustré par les diagrammes des cas d utilisation, des classes du domaine et de séquence. Maxime SUARD,

Plus en détail

Java & Algorithme Corrigé du test final

Java & Algorithme Corrigé du test final Java & Algorithme Corrigé du test final 1 QUESTIONS EN JAVA Chaque question est sur un point, sauf certaines sur deux points. En tout, le QCM est noté sur 24 : la note est divisée par 6 pour revenir entre

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

Objet du document...2 SOLUSMAO...2. Description du développement logiciel, fonctionnalités...3

Objet du document...2 SOLUSMAO...2. Description du développement logiciel, fonctionnalités...3 1. INTRODUCTION...2 Objet du document...2 SOLUSMAO...2 2. FONCTIONNALITES...3 Description du développement logiciel, fonctionnalités....3 Fonctionnement attendu... 3 Fonctionnement du poste client... 4

Plus en détail

Configuration des logiciels de messagerie

Configuration des logiciels de messagerie Configuration des logiciels de messagerie Documentation à l usage des clients de Virtua S.A. expliquant la procédure à suivre pour configurer le logiciel de messagerie. 9 octobre 2008 Référence : sysadmin_09/10/2008

Plus en détail

CREER ET FORMATER UNE PARTITION DE DISQUE DUR 1 QUE SONT LES PARTITIONS ET LES LECTEURS LOGIQUES? 6

CREER ET FORMATER UNE PARTITION DE DISQUE DUR 1 QUE SONT LES PARTITIONS ET LES LECTEURS LOGIQUES? 6 Table des matières. CREER ET FORMATER UNE PARTITION DE DISQUE DUR 1 QUE SONT LES PARTITIONS ET LES LECTEURS LOGIQUES? 6 QUE SONT LES DISQUES DE BASE ET LES DISQUES DYNAMIQUES? 6 FORMATAGE DES DISQUES ET

Plus en détail

LOGICIEL KIPICAM : Manuel d installation et d utilisation

LOGICIEL KIPICAM : Manuel d installation et d utilisation 2015 LOGICIEL KIPICAM : Manuel d installation et d utilisation Kipisoft http://w.sanchez.free.fr/product_home_overview.php 16/05/2015 SOMMAIRE 1. Présentation de l'application... 3 2. Installation de l'application...

Plus en détail

Par le service des publications Citrix. Citrix Systems, Inc.

Par le service des publications Citrix. Citrix Systems, Inc. Licences : présentation de l architecture Par le service des publications Citrix Citrix Systems, Inc. Avis Les informations contenues dans cette publication peuvent faire l'objet de modifications sans

Plus en détail

IFT785 Approches Orientées Objets

IFT785 Approches Orientées Objets IFT785 Approches Orientées Objets FINAL Été 2002 Début : Lundi 19 août 2002 à 9h00 am Remise : Jeudi 22 août 2002 à 9h00 am Professeur : Sylvain GIROUX Note : /100 points Remarques : L examen est secret.

Plus en détail

Introduction à Eclipse

Introduction à Eclipse Introduction à Eclipse Eclipse IDE est un environnement de développement intégré libre (le terme Eclipse désigne également le projet correspondant, lancé par IBM) extensible, universel et polyvalent, permettant

Plus en détail

DOCUMENTATION MISE A JOUR ANTIBIOGARDE. V4.0 en v4.1

DOCUMENTATION MISE A JOUR ANTIBIOGARDE. V4.0 en v4.1 DOCUMENTATION MISE A JOUR ANTIBIOGARDE V4.0 en v4.1 Version d Antibiogarde 4.1 Version du document 1.0 Date dernière mise à jour du document 15/06/2010 Retrouvez cette doc à jour sur : http://www.antibiogarde.org/activation/

Plus en détail

Braquelaire Tristan Sollaud Timothée IN-501-A1 SHOAL. Projet de Réseau et Programmation Objet 2012 / 2013. Note de Synthe se

Braquelaire Tristan Sollaud Timothée IN-501-A1 SHOAL. Projet de Réseau et Programmation Objet 2012 / 2013. Note de Synthe se Braquelaire Tristan Sollaud Timothée IN-501-A1 SHOAL Projet de Réseau et Programmation Objet 2012 / 2013 Note de Synthe se Sommaire I. Présentation générale :...1 A. La Connexion :... 1 B. L interface

Plus en détail

Reproductibilité des expériences de l article "Analyse et réduction du chemin critique dans l exécution d une application"

Reproductibilité des expériences de l article Analyse et réduction du chemin critique dans l exécution d une application Reproductibilité des expériences de l article "Analyse et réduction du chemin critique dans l exécution d une application" Katarzyna Porada and David Parello and Bernard Goossens Univ. Perpignan Via Domitia,

Plus en détail

Impression réseau Mise en œuvre

Impression réseau Mise en œuvre SERVEURS D IMPRESSION ARTICLE Impression réseau Mise en œuvre Created: June 2, 2005 Last updated: June 2, 2005 Rev:.0 Sommaire INTRODUCTION 3 INFRASTRUCTURE D IMPRESSION RESEAU 3. Impression en mode poste

Plus en détail

1 Programmation Client/Serveur basée sur TCP/IP

1 Programmation Client/Serveur basée sur TCP/IP Outils Informatique pour l ingénieur TD 1 Réseau et Web IP, Client/serveur 1 Programmation Client/Serveur basée sur TCP/IP 1.1 Buts de cette réalisation Ce TP sur la programmation client/serveur a pour

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

Facebook, Google, LinkeIdn... Optez pour la double validation

Facebook, Google, LinkeIdn... Optez pour la double validation 1. Bien protéger tous ses comptes Facebook, Google, LinkeIdn... Optez pour la double validation Voilà quelques mois que le phénomène prend de l ampleur, et à juste raison. Car sur le net, on n'est jamais

Plus en détail

Page 1/11. Préambule. Table des matières

Page 1/11. Préambule. Table des matières Page 1/11 Table des matières Préambule... 1 1- Le principe de «NuaFil»... 2 2 - Accueil de votre gestion de profil... 2 2-1 - La recherche de profils... 3 2-2- La liste de vos profils... 3 3 - Le référencement

Plus en détail