Introduction à Hadoop + Map/Reduce. Certificat Big Data. TME Hadoop



Documents pareils
Certificat Big Data - Master MAthématiques

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

Hadoop : une plate-forme d exécution de programmes Map-Reduce

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

Hadoop : une plate-forme d exécution de programmes Map-Reduce

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

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

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

Introduction à Hadoop & MapReduce

Notes de cours Practical BigData

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

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

Introduction à MapReduce/Hadoop et Spark

Big Data Concepts et mise en oeuvre de Hadoop

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

7 Développement d une application de MapReduce

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

Algorithmes d'apprentissage

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

Introduc)on à Map- Reduce. Vincent Leroy

TP : Shell Scripts. 1 Remarque générale. 2 Mise en jambe. 3 Avec des si. Systèmes et scripts

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

Importation et exportation de données dans HDFS

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

Labs Hadoop Février 2013

Programmation parallèle et distribuée

Programmation parallèle et distribuée

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

Avant-propos. Organisation du livre

Oracle WebLogic Server (WLS) 11gR1 ( et ) Installation sur Oracle Linux 5 et 6 Hypothèses Installation Oracle Linux 5 (OL5)

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

TP1. Outils Java Eléments de correction

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Introduction à Eclipse

Titre: Version: Dernière modification: Auteur: Statut: Licence:

4 Exemples de problèmes MapReduce incrémentaux

Traitement de données

Fast and furious decision tree induction

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

Installation FollowMe Q server

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Cloud Computing MapReduce Année académique 2014/15

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

Premiers pas en Linux

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

L écosystème Hadoop Nicolas Thiébaud Tuesday, July 2, 13

TP n 2 : Installation et administration du serveur ProFTP. Partie 1 : Fonctionnement du protocole FTP (pas plus de 15min)

WEBMESTRE : CONCEPTION DE SITES ET ADMINISTRATION DE SERVEURS WEB

Etude de cas : PGE JEE V2

Département Informatique 5 e année Hadoop: Optimisation et Ordonnancement

INFO-F-404 : Techniques avancées de systèmes d exploitation

Les technologies du Big Data

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

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

HADOOP ET SON ÉCOSYSTÈME

Architecture de la plateforme SBC

Professeur-superviseur Alain April

Serveur Linux : FTP. Mise en place d un service FTP sous Linux. Bouron Dimitri 20/04/2014

Cartographie des solutions BigData

Open Source Job Scheduler. Installation(s)

Table des matières Hakim Benameurlaine 1

Big Data : utilisation d un cluster Hadoop HDFS Map/Reduce HBase

BIG DATA en Sciences et Industries de l Environnement

TD séances n 3 et n 4 Répertoires et Fichiers sous Unix

Contents. 1 Premiers pas en Linux. 1.2 Généralités. 1.1 Bref historique Linux

Votre premier projet Android

Installation et prise en main

Conception de circuits numériques et architecture des ordinateurs

Cours 8 Not Only SQL

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

1 Configuration réseau des PC de la salle TP

Documentation technique OpenVPN

Ricco Rakotomalala R.R. Université Lyon 2

Cours Linux. Cours en ligne Administrateur Systèmes Linux. Académie Libre

Cours 420-KEG-LG, Gestion de réseaux et support technique. Atelier No2 :

Module d anonymisation

KAJOUT WASSIM INTERNET INFORMATION SERVICES (IIS) 01/03/2013. Compte-rendu sur ISS KAJOUT Wassim

Export et Import de modèles ICAR sous Trnsys 17

Le service FTP. M.BOUABID, Page 1 sur 5

Guide de déploiement

Sage 100 CRM Guide de l Import Plus avec Talend Version 8. Mise à jour : 2015 version 8

Galaxy Training days. Liste des sessions disponibles : Les formateurs :

D1- L'environnement de travail

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

TD/TP 1 Introduction au SDK d Android

PARAMETRER LA MESSAGERIE SOUS THUNDERBIRD

TP2 - Conguration réseau et commandes utiles. 1 Généralités. 2 Conguration de la machine. 2.1 Commande hostname

Réaliser un inventaire Documentation utilisateur

contact@nqicorp.com - Web :

Dossier. Développer en Java sur téléphone mobile. Benjamin Damécourt UFR SITEC Master 2 EESC 11 janvier 2012

Sharpdesk V3.3. Guide d installation Push pour les administrateurs système Version

TP 1 : 1 Calculs en binaire, octal et hexadécimal

TUTORIEL: INSTALLATION D'UN SERVEUR LOCAL SOUS WINDOWS 7 POUR APPINVENTOR version du 06/04/2013

Cours Langage C/C++ Programmation modulaire

Transcription:

Certificat Big Data TME Hadoop Ce TME a pour objectif de se familiariser avec le framework distribué Apacha Hadoop. Dans un premier temps, nous considèrerons les diérentes commandes permettant le chargement et l'exportation de données sur le système de chiers virtuel qu'il utilise : le système HDFS. Ensuite nous développerons un premier programme JAVA Hadoop réalisant un simple comptage de mots dans des chiers d'entrée de manière parallèlisée grâce au fonctionnalités MapReduce proposées par Hadoop. Enn, un classique classi- eur NaiveBayes parallèlisé pourra être envisagé. 1 Prise en Main de HDFS Quelques commandes après s'être loggué à la machine en tant que hduser (par la commande ssh hduser@xxx.xxx.xxx.xxx ): jps : permet de lister les services java lancés. start-dfs.sh : permet de lancer les services NameNode, DataNode et Secondary- NameNode. Ces services sont indispensables pour la gestion du système de chier hdfs. start-yarn.sh : permet de lancer les services RessourceManager et NodeManager. Ces services sont indispensables pour les fonctionnalités Map Reduce.!! Dans notre TP, hadoop est déjà démarré, pas besoin de le démarrer!! 1.1 Chargement et exportation de données à partir du shell La commande hadoop fs permet de lister les commandes disponibles sur le système de chiers: 1

Les noms des commandes et leurs fonctionnalités ressemblent énormément à celles du shell Unix. L'option help fournit des informations complémentaires sur une commande précise. La documentation ocielle, consultable à l'adresse http://hadoop.apache. org/docs/stable/hadoop-project-dist/hadoop-common/filesystemshell.html, recense les commandes du shell et en donne de courtes descriptions. Dans cette section, nous allons utiliser les commandes du shell Hadoop de façon à importer des données dans HDFS et à exporter des données à partir de HDFS. Ces commandes sont souvent employées pour charger des données appropriées, à télécharger des données traitées, à maintenir le système de chiers et à consulter le contenu des dossiers. Il est donc indispensable de les connaître pour exploiter ecacement HDFS. Réalisez les opérations minimales suivantes pour prendre en main hdfs : 1. Créer un dossier dans HDFS 2. Placer un chier dans le repertoire créé 3. Lister le contenu du repertoire hdfs 4. Récupérer le chier placé sur hdfs et l'enregistrer dans un chier local Note: Si toutes les commandes aboutissent à l'achage du message "No such le or directory", il est possible que la répertoire racine n'existe pas pour hadoopuser. Dans ce cas, créez le par la commande : hadoop fs -mkdir -p /user/hadoopuser. ludovic.denoyer@lip6.fr 2

1.2 Chargement et exportation de données à partir de Java On souhaite réaliser les mêmes opérations que précédemment mais à partir d'un programme Java dans une classe HdfsManagement. Pour cela on utilise l'objet FileSystem récupéré par : C o n f i g u r a t i o n conf=new C o n f i g u r a t i o n ( ) ; FileSystem f s=filesystem. get ( c onf ) ; Cet objet propose les méthodes suivantes: liststatus : retourne un tableau des chiers contenus au chemin hdfs dénoté par l'objet Path passé en paramètre create : crée le chemin hdfs correspondant à l'objet Path passé en paramètre copyfromlocalfile : copie l'arborescence pointée par le chemin local source à l'adresse hdfs spéciée par le chemin destination passée en paramètre movetolocalfile : copie l'arborescence pointée par le chemin hdfs source à l'adresse locale spéciée par le chemin destination passée en paramètre Pour information, voici une liste d'imports hadoop dont vous pouvez avoir besoin: import org. apache. hadoop. c onf. C o n f i g u r a t i o n ; import org. apache. hadoop. f s. L o c a t e d F i l e S t a t u s ; import org. apache. hadoop. f s. RemoteIterator ; import org. apache. hadoop. f s. F i l e S t a t u s ; import org. apache. hadoop. f s. FileSystem ; import org. apache. hadoop. f s. F i l e U t i l ; import org. apache. hadoop. f s. Path ; Une fois la classe HdfsManagement écrite, il s'agit de la compiler en jar executable. En supposant que les sources sont dans un repertoire src, on peut dénir un script de compilation makejar.sh tel que (vous pouvez retrouver ce script dans le repertoire /Vrac/lamprier/FDMS ): mkdir bin f i n d s r c name ". java " > " s o u r c e s. t x t " l 1 ="/ usr / l o c a l /hadoop/ s hare /hadoop/common/hadoop common 2. 5. 0. j a r " l 2 ="/ usr / l o c a l /hadoop/ s hare /hadoop/mapreduce/hadoop mapreduce c l i e n t core 2. 5. 0. j a r " l 3 ="/ usr / l o c a l /hadoop/ s hare /hadoop/common/ l i b /commons c l i 1.2. j a r " l 4 ="/ usr / l o c a l /hadoop/ s hare /hadoop/common/ l i b /hadoop annotations 2. 5. 0. j a r " j a v a c c l a s s p a t h $ l 1 " : " $ l 2 " : " $ l 3 " : " $ l 4 " : bin " d bin @sources. t x t echo Main C l a s s : $1 > MANIFEST.MF echo Class Path :. / bin / >> MANIFEST.MF j a r cvmf MANIFEST.MF Main. j a r C bin. La compilation se fait alors par : sh makejar. sh HdfsManagement Enn, on peut lancer le jar Main.jar sur hadoop par la commande : hadoop j a r Main. j a r ludovic.denoyer@lip6.fr 3

2 MapReduce : WordCount Nous proposons de commencer l'initiation à la programmation MapReduce par le très classique programme de comptage de mots WordCount. Il s'agit de compter les mots de chiers texte plaçés dans un repertoire HDFS. Nous dénirons pour cela une classe WordCount qui sera la classe principale du programme (comportant le main) et deux classes WordCountMapper et WordCountReducer qui correspondent respectivement à l'étape Map et à l'étape Reduce du programme. La classe WordCountMapper hérite de Mapper<Object, Text, Text, IntWritable> et possède une méthode map(object oset, Text value, Context context) qui découpe en mots la ligne de texte contenue dans la variable value passée en paramètre et émet pour chacun d'entre eux un couple <mot,new IntWritable(1)> en appelant la méthode write de l'objet context. L'objectif du Reducer est alors d'additionner les valeurs des couples de même clé. On écrit alors une classe WordCountReducer qui hérite de Reducer<Text, IntWritable, Text, Text> et dénit une méthode reduce(text key, Iterable<IntWritable> values,context context) qui somme les valeurs contenues dans la liste values passée en paramètre et émet le résultat sous forme d'un couple <mot,nombre d'occurences> en utilisant la méthode write de l'objet context. Il reste alors à dénir le job, déclarer le Mapper et le Reducer ainsi que les chiers d'entrée en incluant les lignes suivantes dans le main de la classe WordCount: C o n f i g u r a t i o n conf=new C o n f i g u r a t i o n ( ) ; FileSystem f s=filesystem. get ( c onf ) ; Job job=job. g e t I n s t a n c e ( conf, " Compteur de mots v1. 0 " ) ; job. setmapperclass ( WordCountMapper. c l a s s ) ; job. s e t R e d u c e r C l a s s ( WordCountReducer. c l a s s ) ; job. setjarbyclass ( WordCount. c l a s s ) ; job. setoutputkeyclass ( Text. c l a s s ) ; job. setoutputvalueclass ( I n t W r i t a b l e. c l a s s ) ; FileInputFormat. addinputpath ( job, new Path ( a r g s [ 0 ] ) ) ; FileOutputFormat. setoutputpath ( job, new Path ( a r g s [ 1 ] ) ) ; job. waitforcompletion ( t r u e ) ; ludovic.denoyer@lip6.fr 4

Pour information, les imports hadoop suivants sont nécessaires ici: import org. apache. hadoop. c onf. C o n f i g u r a t i o n ; import org. apache. hadoop. f s. Path ; import org. apache. hadoop. i o. I n t W r i t a b l e ; import org. apache. hadoop. i o. Text ; import org. apache. hadoop. mapreduce. Job ; import org. apache. hadoop. mapreduce. l i b. input. FileInputFormat ; import org. apache. hadoop. mapreduce. l i b. output. FileOutputFormat ; import org. apache. hadoop. mapreduce. Mapper ; import org. apache. hadoop. mapreduce. Reducer ; 3 MapReduce : classieur NaiveBayes Un modèle probabiliste de classication classique considère la probabilité conditionnelle suivante: p(c x 1,..., x n ) où c C est une classe parmi les classes possible pour un objet donné x et x 1,..., x n un vecteur de ses n caractéristiques. On considère ici des vecteurs binaires {0, 1} n La classe prédite par le modèle est alors la classe qui maximise cette probabilité conditionnelle: C(x) = arg max p(c x 1,..., x n ) À l'aide du théorème de Bayes, nous écrivons : p(c x 1,..., x n ) = p(c) p(f 1 = x 1,..., F n = x n c). p(x 1,..., x n ) avec F i la valeur d'une caractéristique binaire donnée i. On peut alors considérer le classieur équivalent suivant : C(x) = arg max p(c) p(f 1 = x 1,..., F n = x n c) p(x 1,..., x n ) dans lequel on peut ignorer p(x 1,..., x n ) indépendant de la classe et donc ne perturbant pas le choix de la classe de probabilité maximale: C(x) = arg max p(c) p(f 1 = x 1,..., F n = x n c) En considérant une hypothèse d'indépendance de réalisation des diérentes caractéristiques F 1,..., F n et en passant au logarithme de la probabilité conditionnelle p(c x 1,..., x n ), on peut alors considérer la formulation suivante: C(x) = arg max log p(c) + n log p(f i = x i c) i=1 ludovic.denoyer@lip6.fr 5

3.1 Inférence En considérant que l'on dispose pour chaque classe C de sa probabilité a priori p(c) et des probabilités conditionnelles marginales p(f i C) des diérentes caractéristiques F i pour i {1... n} selon cette classe C, développer un modèle MapReduce de classication NaiveBayes sur Hadoop qui prédit la classe la plus probable d'instances contenues dans un ou plusieurs chiers texte (une instance par ligne). Que doit faire le Mapper pour ces prédicitions de classe? Et le Reducer? Tester le modèle de prédiction développé sur les données contenues dans les chiers du repertoire /Vrac/lamprier/FDMS/WebKB/content (4 chiers texte). Chaque ligne de ces chiers représente un site Web accompagné d'une liste de caractéristiques binaires et d'un label à prédire. 3.2 Apprentissage En posant la log-vraissemblance suivante sur l'ensemble des données d'entraînement X : L(θ) = log p(c x ) + n log p(f i = x i C x ) x X x X i=1 avec C x correspond à la classe de l'exemple x, la maximisation de cette quantité sous les contraintes p(c) = 1 et i {1... n} c C, p(f i = 0 c) + p(f i = 0 c) = 1 permet l'estimation des paramètres selon : c C : p(c) = {x X, C x = c} X i {1... n} c C : p(f i c) = {x X, x i = F i C x = c} {x X, C x = c} Que doit faire le Mapper pour cette tâche d'estimation des paramètres? Et le Reducer? Développer ce processus d'apprentissage pour le modèle de classication et expérimenter l'estimation de paramètres sur des données des chiers du repertoire /Vrac/lamprier/FDMS/WebKB/content. ludovic.denoyer@lip6.fr 6