Vous êtes sur la page 1sur 27

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 (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
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

1
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

1
Architecture
globale

1
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

1
Modes d’execution
• Standalone mode

• Pseudo-distributed mode

• Fully-distributed mode
1
Execution Standalone
• Objectif : Tester un programme simple ou
MapReduce

L’exemple du Sudoku

1
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

1
Pseudo-distributed

• Configuration du NameNode et du JobTracker (master)


conf/core-site.xml:
<configuration> conf/masters:
<property> localhost
<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>
1
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>
1
Démonstration en mode
pseudo-distributed

1
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)

2
Fully-distributed

• Configuration du NameNode et du JobTracker (master)


conf/core-site.xml:
<configuration> conf/masters:
<property> master
<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>
2
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>
2
Démonstration en mode
distributed

2
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

2
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...

2
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
2
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/

Vous aimerez peut-être aussi