Prototypage et évaluation de performances d un service de traçabilité avec une architecture distribuée basée sur Hadoop Soutenance de projet ASR 27/01/2011 Julien Gerlier Siman Chen Encadrés par Bruno Defude Elisabeth Brunet Amin Sakka
Sommaire I. Présentation du projet II. Cassandra III. Hadoop IV. Mise en place du prototype V. Difficultés rencontrées 2
Présentation du projet Dématérialisation des gestions de documents des entreprises Nécessité de mémoriser les opérations effectuées sur les documents Système de traçabilité Objectif: distribuer le service de traçabilité Technologies envisagées : Cassandra & Hadoop 3
Cassandra Base NoSQL Base de données classique: orientée lignes Cassandra: orientée colonnes Adaptée aux évolutions horizontales Elements clés:»keyspace»column»supercolumn»columnfamily 4
Cassandra -Column Triplet: Nom, Valeur, Timestamp Exemple avec la notation de JSON: { // this is a column name: "emailaddress", value: "arin@example.com", timestamp: 123456789 5
Cassandra - SuperColumn Paire Nom/Valeur Valeur=un ensemble de columns en nombre non limité { // this is a SuperColumn name: "homeaddress", // with an infinite list of Columns value: { // note the keys is the name of the Column street: {name: "street", value: "1234 x street", timestamp: 123456789, city: {name: "city", value: "san francisco", timestamp: 123456789, zip: {name: "zip", value: "94107", timestamp: 123456789, Après simplification: homeaddress: { street: "1234 x street", city: "san francisco", zip: "94107", 6
Cassandra - ColumnFamily Contenu des columnfamilies de type standard: infinité de lignes de colomns UserProfile = { // this is a ColumnFamily phatduckk: { // this is the key to this Row inside the CF // now we have an infinite # of columns in this row username: "phatduckk", email: "phatduckk@example.com", phone: "(900) 976-6666", // end row ieure: { // this is the key to another row in the CF // now we have another infinite # of columns in this row username: "ieure", email: "ieure@example.com", phone: "(888) 555-1212" age: "66", gender: "undecided", 7
Cassandra En résumé 8
{ Cassandra Structure de LX Track "Document" (SCF) { RowKey: ApplicationReference { SCKey: OwnerReference { {name:"tuuid" value: TUUID {name: form, value: FingerPrint "Track" (SCF) { RowKey: "Declaration" { SCKey: TUUID { {name: timestamp, value: declarationcontent RowKey: "Document" { SCKey: TUUID { {name: ApplicationReference, value: OwnerReference RowKey: "Fingerprint" { SCKey: TUUID { {name: form, value: FingerPrint "Fingerprint" (SCF) { RowKey: "Document" { SCKey: FingerPrint { {name: ApplicationReference, value: OwnerReference RowKey: "Track" { SCKey: FingePrint { {name: algorithm, value: TUUID 9
Hadoop Système de fichiers distribué associé: HDFS Grande tolérance aux fautes Faibles coûts Haut débit d accès aux données Adapté pour les applications qui nécessitent de grands groupes de données Chaque fichier est divisé en bloc de 64 MB par défaut => convient mieux aux fichiers de grande taille Adapté à de grande scalabilité, aux gros clusters 10
Hadoop 11
Hadoop Gestion des données et des Jobs 12
Hadoop Gestion des données et des Jobs 13
Hadoop Map Reduce Opération Map: produit une paire clé/valeur intermédiaire pour chaque paire de clé/valeur reçue en entrée la librairie MapReduce groupe toutes les clés intermédiaires associées à la même valeur d entrée et les passe à la fonction Reduce. L'opération Reduce: fusionne les valeurs d'une même clé intermédiaire afin de renvoyer un unique couple clé intermédiaire/valeur en sortie. Exemple classique: WordCount 14
Test : insertion dans Cassandra Insertion massive de données dans Cassandra 5 machines : 1 500 000 insertions Problème de flush sur le disque 15
Mise en place de l architecture Hadoop/Cassandra Cassandra et Hadoop mis en place individuellement Objectif : interroger Cassandra via Hadoop Recherche de traces Récupération massives de méta-données Echec : problème de compatibilité? 16
Difficultés rencontrées Technologies nouvelles encore en développement Peu de documentation Encore des problèmes de compatibilité Nécessite un matériel performant Possibilité de s orienter vers Hbase : plus adapté à Hadoop 17
Conclusion Des technologies au fort potentiel Des connaissances précieuses Maitriser la configuration est primordiale Un peu de frustration : échec de la mise en place du prototype Majorité du temps passée à configurer Limités par le matériel 18