Transcript DataNode
Apache Hadoop Exposés logiciels, systèmes et réseaux Camille DARCY 8 Janvier 2013 1 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 2 Un peu d’histoire... • Initié par Doug Cutting • Pré-histoire : le projet Nutch (20022004) • 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 3 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 4 Objectifs • Haute disponibilité / Robustesse • Rapidité • Abstraction • Mise à l’échelle 5 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 6 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 7 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 8 MapReduce • Qu’est-ce que MapReduce ? • Un modèle de programmation pour faire du calcul distribué • Un framework • Implémentation Open-Source dans Hadoop 9 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 10 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 11 Architecture globale 12 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 13 Modes d’execution •Standalone mode •Pseudo-distributed mode •Fully-distributed mode 14 Execution Standalone • Objectif : Tester un programme simple ou MapReduce L’exemple du Sudoku 15 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 16 Pseudo-distributed • Configuration du NameNode et du JobTracker (master) conf/core-site.xml: conf/masters: <configuration> localhost <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property> </configuration> conf/mapred-site.xml: <configuration> <property> <name>mapred.job.tracker</name> <value>localhost:9001</value> </property> </configuration> 17 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> 18 Démonstration en mode pseudo-distributed 19 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) 20 Fully-distributed • Configuration du NameNode et du JobTracker (master) conf/core-site.xml: conf/masters: <configuration> master <property> <name>fs.default.name</name> <value>hdfs://master:9000</value> </property> </configuration> conf/mapred-site.xml: <configuration> <property> <name>mapred.job.tracker</name> <value>master:9001</value> </property> </configuration> 21 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> 22 Démonstration en mode distributed 23 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 24 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... 25 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 26 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-thenetwork/ 27