Démarrer avec le Framework JAVA MapReduce Hadoop et Spark
Introduction à MapReduce/Hadoop et Spark
Certificat Big Data
Ludovic Denoyer et Sylvain Lamprier
UPMC
Plan
Contexte
Data driven science: le 4e paradigme (Jim Gray - Prix Turing)
SNR 2013
Extrait: ”A l’heure actuelle, la science vit une révolution qui conduit à nouveau paradigme selon lequel ’la science est dans les données’, autrement dit la connaissance émerge du traitement des données [ ] Le traitement de données et la gestion de connaissances représentent ainsi le quatrième pilier de la science après la théorie, l’expérimentation et la simulation. L’extraction de connaissances à partir de grands volumes de données (en particulier quand le nombre de données est bien plus grand que la taille de l’échantillon) , l’apprentissage statistique, l’agrégation de données hétérogènes, la visualisation et la navigation dans de grands espaces de données et de connaissances sont autant d’instruments qui permettent d’observer des phénomènes, de valider des hypothèses, d’élaborer de nouveaux modèles ou de prendre des décisions en situation critique”
Traitement de données
..
68% des entreprises qui ont systématiquement recours à une analyse de données dans leurs prises de décision voient leurs bénéfices augmenter
* selon une étude menée par the Economist Intelligence Unit (2014)
.
Pour qui réussit à optimiser son usage, la donnée devient information, puis, bien partagée au sein de l’entreprise, elle se transforme en connaissance et constitue son savoir. Elle peut être une source de services et d’innovations, notamment lorsqu’on la croise avec d’autres données et qu’elle provient de sources diverses.
* Enjeux Business des données - CIGREF 2014
Traitement de données en entreprise
La donnée est donc l’un des principaux actifs immatériels de nos organisations, et pour autant, n’est pas encore gérée avec la même rigueur ni les mêmes moyens que les autres ressources, capital et ressources humaines notamment. Dans un contexte où elle est devenue critique pour l’activité de l’entreprise, la mise en place d’une gestion structurée et industrielle de la donnée est impérative.
* Enjeux Business des données - CIGREF 2014
Dans ce cours
Calcul distribué
Un des enjeux concerne le traitement de grandes quantités de données. Ce traitement ne peut être réalisé avec les paradigmes classiques de traitement de données et nécessite l’utilisation de plateformes distribuées de calcul
Introduction à Hadoop
Introduction à Spark
Prise en main des deux plateformes
Distribution des Données
Map Reduce
Map-Reduce
The Yahoo ! Search Webmap is a Hadoop application that runs on a more than 10,000 core Linux cluster and produces data that is now used in every Yahoo ! Web search query.
Google : the size of one phase of the computation [of the index] dropped from approximately 3800 line of C++ code to approximately 700 lines when expressed using MapReduce.
Facebook has multiple Hadoop clusters deployed now with the biggest having about 2500 cpu cores and 1 PetaByte of disk space. We are loading over 250 gigabytes of compressed data (over 2 terabytes uncompressed) into the Hadoop file system every day and have hundreds of jobs running each day against these data sets.
Hadoop est aussi utilisée par Twitter, Amazon, Rackspace, LinkedIn, IBM, Veoh, (en Bash ! !), Microsoft
Traitement distribué
Apache Hadoop
Framework distribué
Utilisé par de très nombreuses entreprises
Traitements parallèles sur des clusters de machines
? Amener le code aux données
Système de fichiers HDFS
Système de fichiers virtuel de Hadoop
Conçu pour stocker de très gros volumes de données sur un grand nombre de machines
Permet l’abstraction de l’architecture physique de stockage Réplication des données
Architecture de machines HDFS
NameNode :
Gère l’espace de noms, l’arborescence du système de fichiers et les métadonnées des fichiers et des répertoires
SecondaryNameNode :
Gère l’historique des modifications dans le système de fichiers
Permet la continuité du fonctionnement du cluster en cas de panne du NameNode principal
DataNode :
Stocke et restitue les blocs de données.
Hadoop
De nombreux outils basés sur Hadoop
MapReduce : Outil de mise en oeuvre du paradigme de programmation parallèle du même nom
HBase : Base de données distribuée disposant d’un stockage structuré pour les grandes tables
Hive : Logiciel d’analyse de données (initialement développé par Facebook) permettant d’utiliser Hadoop avec une syntaxe proche du SQL
Pig : Logiciel d’analyse de données (initialement développé par Yahoo!) comparable à Hive mais utilisant le langage Pig Latin
Spark : Framework de traitement de données distribué avec mémoire partagée
Plateforme d’apprentissage Mahout
Qui utilise Hadoop?
Exécution d’un problème de manière distribuée
? Découpage en sous-problèmes
? Execution des sous-problèmes sur les différentes machines du cluster
Stratégie algorithmique dite du Divide and Conquer
Map Reduce
Paradigme de programmation parallèle visant à généraliser les approches existantes pour produire une approche unique applicable à tous les problèmes. Origine du nom : languages fonctionnels
Calcul distribué : ”MapReduce: Simplified Data Processing on Large Clusters” [Google,2004]
Reduce: Regroupement des valeurs de clé identique et application d’un traitement sur ces valeurs de clé commune
Ecrire un programme Map Reduce:
Choisir une manière de découper les données afin que Map soit parallélisable
Choisir la clé à utiliser pour notre problème
Écrire le programme pour l’opération Map
Écrire le programme pour l’opération Reduce
Exemple classique : le Comptage de mots
Fichiers d’entrée textuels
On veut connaître le nombre d’occurences de chacun des mots dans ces fichiers
Il faut décider :
De la manière dont on découpe les textes
Des couples <clé,valeur> à émettre lors du Map appliqué à chaque morceau de texte
Du traitement à opérer lors du regroupement des clés communes (Reduce)
Fichier d’entrée :
Pour simplifier, on retire tout symbole de ponctuation et caractères spéciaux. On passe l’intégralité du texte en minuscules.
Découpage des données d’entrée: par exemple par ligne
Ici, 4 unités de traitement après découpage
Opération Reduce :
Sommation des valeurs de toutes les paires de clé
commune
Ecriture dans un (ou des) fichier(s) resultats
Etude de Cas
Map(String input_key, String input_values) : foreach word w in input_values: EmitIntermediate( w, "‘1"’);
Reduce (String key, Iterator intermediate_values):
int result=0; foreach v in intermediate_values:
result += ParseInt( v );
Emit( key, String( result ));
Implémentations
Plusieurs implémentations existent.
Dans différents languages (C++, C#, Erlang, Java, Python,
Ruby, R, ..)
La plus connue est Hadoop (de la fondation Apache)
Hadoop
public s t a t i c class TokenizerMapper extends Mapper<
{
private f i n a l s t a t i c IntWritable one = new IntWri private Text word = new Text ( ) ;
public void map( Object key , Text value , Context c throws IOException , InterruptedExcept
{
StringTokenizer i t r = new StringTokenizer ( value while ( i t r . hasMoreTokens ( ) )
{
word . set ( i t r . nextToken ( ) ) ;
context . write ( word , one ) ;
}
}
}
Composants d’un processus Map Reduce:
Split: Divise les données d’entrée en flux parallèles à fournir aux noeuds de calcul.
Read: Lit les flux de données en les découpant en unités à traiter. Par défaut à partir d’un fichier texte: unité = ligne.
Map: Applique sur chaque unité envoyé par le Reader un traitement de transformation dont le résultat est stocké dans des paires <clé,valeur>.
Combine: Composant facultatif qui applique un traitement de reduction anticipé à des fins d’optimisation. Cette étape ne doit pas perturber la logique de traitement.
Composants d’un processus Map Reduce:
Group: Regroupement (ou shuffle) des paires de clés communes. Réalisé par un tri distribué sur les différents noeuds du cluster.
Partition: Distribue les groupes de paires sur les différents noeuds de calcul pour préparer l’opération de reduction. Généralement effectué par simple hashage et découpage en morceaux de données de tailles égales (dépend du nombre de noeuds Reduce).
Reduce: Applique un traitement de réduction à chaque liste de valeurs regroupées.
Write: Écrit le resultat du traitement dans le(s) fichier(s) résultats(s). On obtient autant de fichiers resultats que l’on a de noeuds de reduction.
