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