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



Documents pareils
Introduction à MapReduce/Hadoop et Spark

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

Certificat Big Data - Master MAthématiques

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

Chapitre 10. Architectures des systèmes de gestion de bases de données

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

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

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

Big Data Concepts et mise en oeuvre de Hadoop

La haute disponibilité de la CHAINE DE

HelpAndManual_unregistered_evaluation_copy GESTIONNAIRE D'ALARMES CENTRALISE OPTIM'ALARM. Manuel d'utilisation

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

Sur un ordinateur exécutant Windows 2000 Server Ayant une adresse IP statique

Simple Database Monitoring - SDBM Guide de l'usager

NOTIONS DE RESEAUX INFORMATIQUES

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

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

Boîte à outils OfficeScan

KMnet Admin LOGICIEL COMPLET ET PERFORMANT D'ADMINISTRATION DES PÉRIPHÉRIQUES.

Compte-rendu de projet de Système de gestion de base de données


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

Télécom Nancy Année

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

Notes de mise à jour. 4D v11 SQL Release 3 (11.3) Notes de mise à jour

MapReduce. Nicolas Dugué M2 MIAGE Systèmes d information répartis

Prototypage et évaluation de performances d un service de traçabilité avec une architecture distribuée basée sur Hadoop

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

Prototypage et évaluation de performances d un service de traçabilité avec une architecture distribuée basée sur Hadoop

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

Programmation parallèle et distribuée

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Microsoft Application Center Test

Qu'est-ce que le BPM?

Méthode de Test. Pour WIKIROUTE. Rapport concernant les méthodes de tests à mettre en place pour assurer la fiabilité de notre projet annuel.

Développer avec les technologies ESRI. ESRI Developer Network (EDN) Gaëtan LAVENU ESRI France Jérémie MAJEROWICZ ESRI France

Généralités sur le Langage Java et éléments syntaxiques.

EN Télécom & Réseau S Utiliser VMWARE

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

Monitor Wall 4.0. Manuel d'installation et d'utilisation

A. Architecture du serveur Tomcat 6

CQP Développeur Nouvelles Technologies (DNT)

L apprentissage automatique

Mode d'emploi pour l'installation SQL Server 2012 et Dr. Tax Office Serveur

et Groupe Eyrolles, 2006, ISBN :

Qlik Sense Desktop. Qlik Sense Copyright QlikTech International AB. Tous droits réservés.

Évaluation et implémentation des langages

SafeKit. Sommaire. Un livre blanc de Bull Evidian

NetCrunch 6. Superviser

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

But de cette présentation

Guide d'installation. Release Management pour Visual Studio 2013

Serveur de travail collaboratif Michaël Hoste -

RFID: Middleware et intégration avec le système d'information Olivier Liechti

LICENCE : INFORMATIQUE GENERALE

Logiciel Enterprise Guide Version 1.3 Windows

Sage CRM. 7.2 Guide de Portail Client

Configuration Matérielle et Logicielle AGORA V2

Sébastien DEBIA Damien DUMAZER. Cahier des Charges

Guide de l'utilisateur Citrix EdgeSight pour test de charge. Citrix EdgeSight pour test de charge 3.6

Guide d'installation de l'amplificateur de signal Wi-Fi WN1000RP pour périphériques mobiles

Implémentation parallèle de certains algorithmes de fouille de données avec le framework MapReduce

Acronis Backup & Recovery for Mac. Acronis Backup & Recovery et Acronis ExtremeZ-IP ARCHITECTURE DE RÉFÉRENCE

Enseignant: Lamouchi Bassem Cours : Système à large échelle et Cloud Computing

ManageEngine EventLog Analyzer. Les bonnes critiques et recommandations

contact@nqicorp.com - Web :

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

Projet Active Object

Programmation parallèle et distribuée

Intégration de Cisco CallManager IVR et Active Directory

Diagrammes de Package, de déploiement et de composants UML

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

Installer et configurer Oracle Forms 11gR2 Windows 7 64 bits

ORDONNANCEMENT CONJOINT DE TÂCHES ET DE MESSAGES DANS LES RÉSEAUX TEMPS RÉELS 4. QUELQUES EXEMPLES DU DYNAMISME ACTUEL DU TEMPS RÉEL

Implémentation des SGBD

Méthodes de développement. Analyse des exigences (spécification)

Edutab. gestion centralisée de tablettes Android

ManageEngine IT360 : Gestion de l'informatique de l'entreprise

CONFIGURATION DE LA LIBRAIRIE WEBUTIL (10g) Oracle Forms 10g

Informatique industrielle A Systèmes temps-réel J.F.Peyre. Partie I : Introduction

Windows Internet Name Service (WINS)

Préparer la synchronisation d'annuaires

SUPPLÉMENT À LA DÉCLARATION SUR LA PROTECTION DES RENSEIGNEMENTS PERSONNELS EN LIGNE

ERP Service Negoce. Pré-requis CEGID Business version sur Plate-forme Windows. Mise à jour Novembre 2009

Master Data Management en Open Source C est le Bon Moment

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Gestion des utilisateurs et Entreprise Etendue

AssetCenter Notes de version

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

CAHIER DES CHARGES D IMPLANTATION

SQL Serveur Programme de formation. France Belgique Suisse - Canada. Formez vos salariés pour optimiser la productivité de votre entreprise

[Serveur de déploiement FOG]

Ce tutoriel ne fera pas de vous un expert sur le déploiement via WDS, mais il vous permettra de comprendre un peu les rouages de ce système.

Java DataBaseConnectivity

II- Préparation du serveur et installation d OpenVpn :

Transcription:

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

Introduction Après plusieurs années d expérience en informatique distribuée, les développeurs chez Google ont relevé les points récurrents suivants : le traitement à effectuer est généralement simple, mais répété indépendamment sur un grand ensemble de données; ces données se scindent facilement en morceaux plus petits; la complexité reliée à l'informatique distribuée est une source problèmes majeure durant toutes les étapes de développement. Leur solution : abstraire le processus de parallélisation en s'inspirant des opérations map et reduce provenant du monde de la programmation fonctionnelle 1 : MapReduce. Ce framework est maintenant utilisé par Google pour une panoplie de tâches : l'indexation de l'internet, le tri distribué, l'apprentissage machine, le forage de données, etc. Les acteurs : - usager: soumet des tâches au serveur maître; - serveur maître : c'est le serveur central qui accepte les tâches, divise les données et les distribue aux clients. Tout le travail de balancement et de recouvrement d'erreurs se fait ici; - clients : ordinateurs (possiblement) dédiés qui exécutent map et reduce sur les données fournies. L'usager doit fournir trois éléments: - les données d'entrée sous forme (key, value). - l'implémentation de la fonction map(key, value) -> (out_key, out_value). - l implémentation de la fonction reduce(out_key, (out_values)) -> final_value. Le serveur divisera alors les données en blocs de taille X et les enverra aux clients. La première vague itère sur chaque tuple (key, value) et y applique map, générant ainsi un nouveau tuple (out_key, out_value). Ces tuples sont 1 reduce est aussi connu sous le nom de foldl/foldr.

ensuite regroupés par out_key et sont envoyés dans la deuxième vague qui consiste en l'application de la fonction reduce. http://en.wikipedia.org/wiki/mapreduce et les articles de Google fournissent beaucoup plus d'information et plusieurs exemples. Figure 1: Architecture MapReduce telle qu'implémentée chez Google. Implémentation Notre version de MapReduce a été entièrement programmée en Java, en utilisant RMI pour passer les messages entre les équipements exécutant l'application. Une architecture client-serveur est utilisée ; un serveur est d'abord démarré, puis les clients se connectent à ce dernier. À tout moment, une tâche peut être entamée. Les clients téléchargent un JAR qui contient le code relié à la tâche puis l'exécutent. Les résultats des opérations map et reduce sont finalement envoyés au serveur. Les méthodes map et reduce doivent être implémentées par les modules qui contiennent les tâches à exécuter. De plus, le code doit aussi fournir une méthode readwork et une méthode writework pour générer l'échantillon de

données ainsi qu'émettre les résultats de la tâche. Finalement, des méthodes setinitialdata (côté client) et getinitialdata (côté serveur) sont utilisées pour propager les données initiales de la tâche. Ajout de tâche Map Reduce Map Reduce Lecture des données Serveur Écriture des résultats Map Reduce Map Reduce Figure 2 : Architecture MapReduce telle qu'implémentée dans le cadre du projet. Compteur d'occurrences de mots (wordcount) Cette tâche est en quelque sorte le Hello, world! de MapReduce. ServerJob débute avec un fichier texte et le divise en lignes. Chaque ligne devient un tuple d'entrée pour un map. Un fichier texte est divisé en lignes individuelles qui sont envoyées à map. Celui-ci émet ensuite des paires (String mot, 1) pour chaque mot rencontré. Une fois cette étape complétée, le serveur regroupe les paires ensembles, ex: (hello, (1,1,1,1,1,1,1)), (world, (1,1,1)). reduce fait ensuite la sommation de la liste et émet un résultat final, soit (hello, 7). Lancer de rayons (raytracing) Une tâche de raytracing a été conçue, puisqu'elle consume énormément de temps processeur comparativement aux données à échanger sur le réseau. Cet algorithme permettant de générer des images en trois dimensions est relativement simple et se parallélise facilement.

Dès le début de la tâche, les éléments de l'environnement à dessiner sont propagés aux clients. Ces derniers entament ensuite le processus de traçage de rayons par l'entremise de la méthode map, qui leur fournit une ligne verticale de pixels. La méthode map retourne ensuite, pour chaque pixel, une couleur. Un certain nombre de lignes est ensuite passé par l'entremise de la méthode reduce pour procéder au lissage de celles-ci. Finalement, les lignes lissées sont écrites dans une image locale sur le serveur. Le tableau suivant présente les performances de la tâche RayTracing sous différentes conditions. Temps requis (s) Sans MapReduce, 1 processeur 406 1 processeur 673 2 processeurs 338 4 processeurs 170 1 processeur (deux clients) 347 2 processeurs (deux clients) 177 4 processeurs (deux clients) 91 Figure 3 : Résultats en secondes de l exécution de RayTracing avec les paramètres TestParameters. Machines du laboratoire D7-1017 (Intel Core 2 Duo 2.13 ghz) Comme nous pouvons le constater, l'algorithme MapReduce augmente significativement le temps d'exécution initial lorsqu'on passe d'un algorithme purement séquentiel à un arrangement d'un serveur et d'un client utilisant MapReduce. On peut aussi remarquer que l'ajout de processeurs diminue presque linéairement le temps d'exécution de la tâche. Améliorations éventuelles Pendant l'implémentation de notre version de MapReduce, plusieurs idées de fonctionnalités supplémentaires nous sont venues à l'esprit. Malheureusement, nous n'avons pas pu les mettre toutes en oeuvre puisque nous avons des contraintes logicielles et de temps. Sécurité Notre implémentation de MapReduce ne fournit aucune sécurité. En effet, n'importe quel client peut se connecter au serveur et obtenir le contrôle de l'interface qu'il expose. De plus, il peut envoyer n'importe quel objet Java via RMI : un tel objet pourrait contenir du code malicieux qui pourrait compromettre le serveur et tous les clients qui y sont connectés via notre implémentation.

Performance Même si les performances obtenues lors de nos tests avec le module de raytracing étaient excellentes, il reste que notre architecture est complètement centralisée. Dans un cas un où algorithme requiert en entrée des échantillons de données de taille importante, le serveur serait rapidement surchargé. Une communication avec sockets et l'utilisation d'un protocole maison pourraient aussi augmenter la performance. Tolérance aux pannes Il n'y a aucune tolérance aux pannes dans notre implémentation. En fait, si un client termine son exécution avant d'avoir envoyé les résultats d'un algorithme qu'il exécutait, les données seront perdues à jamais. Une simple panne entraîne donc, avec cette version, un échec de l'exécution de la tâche en cours. Lecture/génération progressive des données d'entrée La méthode readwork de ServerJob dans son incarnation présente est beaucoup trop contraignante. Le problème est que, lors de l'initialisation d'une tâche, les données sont lues ou générées d'un trait, engendrant rapidement un manque de mémoire sur le serveur. Une génération progressive des données résoudrait ce problème. Compilation et utilisation Le projet et ses modules ont été développés avec NetBeans 6.0.1 et Java 1.6. Nous avons utilisé les librairies externes RMIStreams et jopt-simple afin de pouvoir utiliser des flux de données à partir de RMI et de pouvoir gérer la l'interface par ligne de commande aisément. Des scripts de démarrage ainsi que les fichiers nécessaires à l'exécution se trouvent dans le dossier 'bin'. Pour démarrer le serveur: serveur.bat <HOTE> <PORT> où <HOTE> est l'adresse IP du serveur et PORT le port sur lequel attendre les clients. Pour démarrer un client:

client.bat <HOTE> <PORT> où <HOTE> est l'adresse IP du serveur et PORT le port sur lequel le serveur attend les clients. Pour démarrer une exécution: startjob.bat <HOTE> <PORT> <MODULE> où <HOTE> est l'adresse IP du serveur, PORT le port sur lequel le serveur attend les clients et <MODULE> le nom du fichier JAR contenant le code à distribuer. Des tâches précompilées, RayTracing et WordCount ont été incluses dans le dossier bin. Pour démarrer une tâche RayTracing monoprocesseur : serveur.bat localhost 4242 client.bat localhost 4242 startjob.bat localhost 4242 RayTracing.jar

Références MapReduce: Simplified Data Processing on Large Clusters http://labs.google.com/papers/mapreduce.html JOpt Simple http://jopt-simple.sourceforge.net/ RMI Streams http://www.rvkb.com/index.php/main/rmistreams