690 likes | 1.24k Views
Apache Hadoop. Exposés logiciels, systèmes et réseaux. Camille DARCY 8 Janvier 2013. Plan. Un peu d’histoire... Le framework et ses objectifs Les grands concepts le système de fichiers HDFS MapReduce Exemples d’utilisation Quelques implémentations et outils Conclusion.
E N D
Apache Hadoop • Exposés logiciels, systèmes et réseaux Camille DARCY 8 Janvier 2013
Plan • Un peu d’histoire... • Le framework et ses objectifs • Les grands concepts • le système de fichiers HDFS • MapReduce • Exemples d’utilisation • Quelques implémentations et outils • Conclusion
Un peu d’histoire... • Initié par Doug Cutting • Pré-histoire : le projet Nutch (2002-2004) • Développement influencé par les publications sur GFS et MapReduce • En 2009, intégré à la fondation Apache • Sortie de la v1.0.0 Open-Source en 2011
Le framework Java • Bibliothèque logicielle Java • Facilite le développement de systèmes d’analyse et de stockage de Big Data • Fournit un ensemble d’outils (executables, démons...) • Exécution de calculs sur une à plusieurs milliers de machines (clusters) • Deux concepts majeurs : HDFS et MapReduce
Objectifs • Haute disponibilité / Robustesse • Rapidité • Abstraction • Mise à l’échelle
HDFS • Stockage de données distribué • Inspiré par le Google FileSystem (GFS) • Haute disponibilité / réplication des données • Blocs de 64Mo (chunks) • Utilise TCP/IP et RPC
Hôtes HDFS • Architecture Maître / Esclave • NameNode : Gère l’espace de noms du système de fichiers (serveurs esclaves) et l’accès aux fichiers par les clients • DataNode : Gère le stockage des fichiers sur un noeud (création / suppression de blocs de données, réplication) • Réplication configurable
Problématiques traitées par HDFS • Robustesse • « Battements de coeur » • Auto-balancing • Sommes de contrôle • Organisation des données • Découpage des fichiers en blocs • Mise en cache des fichiers avant insertion • Replication entre DataNodes
MapReduce • Qu’est-ce que MapReduce ? • Un modèle de programmation pour faire du calcul distribué • Un framework • Implémentation Open-Source dans Hadoop
Fonctionnement de MapReduce • Traitement distribué de données en deux fonctions • Map : fonction de traitement par décomposition en sous-problèmes • Etape intermédiaire : Combine • Reduce : fonction d’aggrégation des résultats pour composer une unique solution
MapReduce dans Hadoop • Utilise HDFS en mode distribué • JobTracker : Noeud maître responsable de l’exécution de tâches sur un cluster • TaskTracker : Noeud esclave exécutant une tâche (map) sur une partie des données
Executable Hadoop • bin/hadoop fs [command_options] • Manipulation du système de fichiers distribué (HDFS) • bin/hadoop jar <jar> mainClass [args] • Lancement d’une application Hadoop • bin/hadoop job [-submit, -status, -kill...] • Programmer / gérer des tâches
Modes d’execution • Standalone mode • Pseudo-distributed mode • Fully-distributed mode
Execution Standalone • Objectif : Tester un programme simple ou MapReduce L’exemple du Sudoku
Exemple de Job MapReduce • Job MapReduce = Programme Java • Execution de la commande Grep • En entrée : fichiers de configuration Hadoop • En sortie : mots correspondant à une regex et son nombre d’occurences
Pseudo-distributed • Configuration du NameNode et du JobTracker (master) conf/core-site.xml: <configuration> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property> </configuration> conf/masters: localhost conf/mapred-site.xml: <configuration> <property> <name>mapred.job.tracker</name> <value>localhost:9001</value> </property> </configuration>
Pseudo-distributed • Configuration du/des DataNode(s) / TaskTracker(s) (slaves) conf/slaves: localhost • Configuration de la réplication conf/hdfs-site.xml: <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
Exemple de Job MapReduce • Compter les mots dans un ensemble de fichiers • En entrée : oeuvres de Victor Hugo • En sortie : chaque mot et son nombre d’occurences • Exécution en mode distribué (machine + VM)
Fully-distributed • Configuration du NameNode et du JobTracker (master) conf/core-site.xml: <configuration> <property> <name>fs.default.name</name> <value>hdfs://master:9000</value> </property> </configuration> conf/masters: master conf/mapred-site.xml: <configuration> <property> <name>mapred.job.tracker</name> <value>master:9001</value> </property> </configuration>
Fully-distributed • Configuration du/des DataNode(s) / TaskTracker(s) (slaves) conf/slaves: slave • Configuration de la réplication conf/hdfs-site.xml: ... <configuration> <property> <name>dfs.replication</name> <value>2</value> </property> </configuration>
Implémentations et outils • Stockage de données : HBase (Apache) • Analyse de données : Pig (Yahoo!), Hive (Facebook), Mahout, Hama • Configuration de clusters : ZooKeeper, Chukwa • Une distribution Hadoop : Cloudera
Utilisateurs • Yahoo! • Utilisait un cluster de 10000 machines sous Linux en 2008 rien que pour son moteur de recherche • Facebook • Détient le plus grand cluster de machines avec plus de 100 Pétaoctets de stockage en 2012 • Et beaucoup d’autres : Twitter, LinkedIn, IBM, HP, Microsoft, Apple, Amazon, eBay...
Conclusion • Base intéressante pour pouvoir gérer de gros volumes de données • Combinaison de HDFS et de MapReduce • Implémenté dans de nombreux outils • Puissant mais difficile à implémenter
Webographie • Wikipedia • http://en.wikipedia.org/wiki/Apache_Hadoop • Apache Hadoop • http://hadoop.apache.org et http://wiki.apache.org/hadoop/ • Cloudera • http://www.cloudera.com/hadoop/ • Yahoo! Hadoop • http://developer.yahoo.com/blogs/hadoop/ • Blog de Brad Hedlund • http://bradhedlund.com/2011/09/10/understanding-hadoop-clusters-and-the-network/