Vous êtes sur la page 1sur 56

Hadoop : une plate-forme dexcution de programmes

Map-Reduce
Jonathan Lejeune
UPMC
8 octobre 2013
PSIA 2013
Inspir du cours des annes prcdentes de Luciana Arantes
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 1 / 56
Motivations
calcul "data-intensive"
des volumes de donnes de plus en plus gros (> 1 To)
exemples : parsage de documents, de pages web, de logs, etc.
accs des ux de donnes : une criture pour beaucoup de lectures
Cot :
Du matriel de moins en moins cher et de plus en plus puissant
virtualisation et partage des ressources physiques Cloud Computing
= informatique la demande
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 2 / 56
Exemple de calcul : le word-count
En entre : un ou plusieurs (gros) chiers textes
En sortie : le nombre doccurrences de chaque mot du texte
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 3 / 56
Solution word-count non-parallle
En supposant que lespace mmoire est susamment grand
Temps dexcution trs grand (jour, mois, anne ?)
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 4 / 56
Solution word-count parallle
Goulot dtranglement due au mutex global
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 5 / 56
le Map-Reduce
Un paradigme de programmation et un environnement dexcution
propos par Google (2003)
paralllisation de calcul manipulant de gros volume de donnes dans
des clusters de machines (centaines, milliers de CPU)
un modle de programmation fonctionnelle
aucune modication des structures de donnes
ux de donnes implicite
lordre des oprations na pas dimportance
lenvironnement dexcution :
permet dautomatiser la paralllisation
gre les ventuelles fautes (pannes)
gre les communications entre les machines
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 6 / 56
le Map-Reduce
Une transparence pour le programmeur :
une paralllisation automatique sur lensemble dunits de calcul en
terme de :
distribution des traitements
distribution des donnes
quilibrage de charge
stockage et transfert de donnes
tolrance aux pannes
...
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 7 / 56
le Map-Reduce
La masse de donnes dentre est divis en blocs appels split qui
seront traits par direntes tches
le calcul se fait en deux phases : Map et Reduce
ux de donne : un ux de paires de <cl,valeur> entre :
les donnes dentre et la phase de map
phase de map et phase de reduce
la phase de reduce et les donnes de sortie.
Un programme MapReduce peut se rsumer deux fonctions
la fonction de map : lit les donnes dentre, fait son traitement et
produit une sortie
la fonction de reduce : lit les sorties produites par la phase de map, fait
son traitement et produit les donnes de sortie
Le programmeur doit juste fournir ces deux fonctions dans
lenvironnement dexcution pour que son programme fonctionne ! ! !
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 8 / 56
Aperu du ux de donnes
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 9 / 56
le Map-Reduce
Schma classique dun ux Map-Reduce
Lecture dune grande quantit de donnes
Map : extraire une information qui vous intresse
Shue : phase intermdiaire (cf. plus loin)
Reduce : agrge, ltre, transforme, etc.
criture du rsultat
En gardant ce schma vous devez juste adaptez vos fonction Map et
Reduce en fonction du problme que vous voulez rsoudre.
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 10 / 56
la phase de Map
un bloc de donnes (split) correspond une tche map
Un lment du split (ex : ligne de chier, tuple dune base de donnes,
Objet srialis, etc.) = une cl de type K1
A chaque cl de type K1 lue depuis le split, le processus map
correspondant fait un appel la fonction map().
la fonction map() produit dans le ux dinformation une liste de
<cl,valeur> intermdiaire de type <K2,V2>
Map : (K1,V1) list(K2,V2)
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 11 / 56
la phase de Reduce
le nombre de reduces est dni a priori par lutilisateur
Une fois la phase de map termine, agrgation en liste de toutes les
valeurs intermdiaires de type V2 associes une cl de type K2.
A chaque cl de type K2 le processus reduce correspondant fait un
appel la fonction reduce().
la fonction reduce() produit dans le ux dinformation une liste de
<cl,valeur> de type <K3,V3>
Chaque paire <K3,V3> mise est enregistre dans lensemble de
donnes de sortie
Reduce : (K2, list(V2)) list(K3, V3)
Remarque : bien souvent K2 = K3
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 12 / 56
Exemple de ux de donnes avec le wordcount
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 13 / 56
Les fonctions Map et Reduce du wordcount
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 14 / 56
la phase de Shue
transmission des donnes de la phase map vers la phase reduce
Responsabilit des maps :
stockage local partitionn des couples cl/valeur de sortie
assignement dterministe des cls parmi nbReduce partitions (=
partitionnement)
une valeur de cl est associe un unique reduce
Responsabilit des reduces :
copy
tlchargement sur chaque map de la partition qui lui est associ
merge
agrgation de lensemble des partitions tlcharges
agrgation des valeurs pour une cl donne
sort
tri des direntes cls dnissant lordre de lecture par le reduce :
un ordre doit tre dni pour chaque type de cl
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 15 / 56
Flux de donnes dtaill
IMPORTANT
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 16 / 56
Flux de donnes dtaill du WordCount
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 17 / 56
Autres exemples
Compteur de frquence daccs sur des URL
Map : des logs de requtes de pages web en entre et (URL,1) en sortie
Reduce : ajoute les valeurs de chaque URL et sort le couple (URL,
count)
Mme principe que le WordCount :)
Index invers
Map : parser chaque document et mettre une squence de (mot,
docId)
Reduce : pour chaque mot, sortir directement la liste de valeur
associe : (mot,list<docID>)
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 18 / 56
Environnement dexcution
Bref historique
2003 : Premire librairie MapReduce crite par Google
2004 : papier fondateur du MapReduce OSDI
[Jerey Dean and Sanjay Ghemawat. MapReduce : Simplied Data
Processing on Large Clusters]
Plusieurs implmentations :
Apache Hadoop
Twister
Skynetv
Bash MapReduce
etc.
plus dinformations : http ://en.wikipedia.org/wiki/MapReduce
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 19 / 56
La plate-forme Apache Hadoop
MapReduce
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 20 / 56
Utilisateurs dHadoop
Amazon (EMR? Elastic MapReduce )
Facebook
IBM : Blue Cloud
Joost (video distribution)
Last.fm (free internet radio)
New York Times
PowerSet (search engine natural laguage)
Veoh (online video distribution)
Yahoo !
Plus dinformation sur http ://wiki.apache.org/hadoop/PoweredBy
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 21 / 56
Aperu dHadoop
Plate-forme Map-reduce open-source crite en JAVA
cr par Doug Cutting en 2009 ( projets de la fondation Apache)
un systme de chier distribu : Hadoop Distributed File System
(HDFS)
un ordonnanceur de programmes Map-Reduce
une API Map-Reduce en JAVA, Python, C++
une interface utilisateur
une interface administrateur
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 22 / 56
Architecture physique
excution sur une grille de machines
Les machines sont groups par rack
gnralement une architecture 2 niveaux
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 23 / 56
HDFS : Hadoop Distributed File System
Optimis pour stocker de trs gros chiers
les chiers sont diviss en bloc (taille par dfaut 64 Mo)
Une architecture matre-esclave
le matre HDFS : le Namenode
les esclaves HDFS : les Datanodes
les blocs sont stocks sur les Datanodes
chaque bloc est rpliqu sur dirents Datanodes (par dfaut 3
rpliquas).
lecture squentielle
criture en mode append-only
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 24 / 56
HDFS : Schma de stockage des blocs
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 25 / 56
HDFS : le Namenode
responsable de la distribution et de la rplication des blocs
Serveur dinformations du HDFS pour le client HDFS
stock et gre les mta-donnes :
listes des chiers
listes des blocs pour chaque chier
liste des Datanodes pour chaque bloc
attributs des chiers (ex : nom, date de cration, facteur de rplication)
logs toute mta-donne et toute transaction sur un support persistent
lectures/critures
crations/suppressions
dmarre partir dune image de HDFS (fsimage)
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 26 / 56
HDFS : le datanode
stock des blocs de donnes dans le systme de chier local
maintient des mta-donnes sur les blocs possds (ex : CRC)
serveur de bloc de donnes et de mta-donnes pour le client HDFS
heartbeat avec le Namenode
message-aller vers le Namenode indiquant :
son identit
sa capacit totale, son espace utilis, son espace restant
message-retour depuis le Namenode :
des commandes (copie de blocs vers dautres Datanodes, invalidation
de blocs, etc.)
en plus du heartbeat, informe rgulirement le Namenode des blocs
quil contient
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 27 / 56
HDFS : Lecture dun chier
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 28 / 56
HDFS : criture dun chier
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 29 / 56
HDFS : criture et pipeline de donnes
Le client :
rcupre la liste des Datanodes sur lesquels placrles dirents rpliquas
crit le bloc sur premier Datanode
Le premier Datanode transfre les donnes au prochain Datanode dans
le pipeline
Quand tous les rpliquas sont crits, le client recommence la
procdure pour le prochain bloc du chier
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 30 / 56
HDFS :stratgie de placement des blocs
Stratgie courante :
un rpliqua sur le rack local
un second rpliqua sur un autre rack
un troisime rpliqua sur un rack dun autre datacenter
les rpliquas supplmentaires sont placs de faon alatoire
Le client lit le plus proche rpliqua
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 31 / 56
HDFS : tolrance aux fautes
crash du Datanode :
plus de heartbeat (dtection par le Namenode)
rplication distribue (robustesse des donnes)
crash du Namenode :
sauvegarde des logs de transaction sur un support stable
redmarrage sur la dernire image du HDFS et application des logs de
transaction (recouvrement)
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 32 / 56
HDFS : Secondary Namenode
Problme : rares redmarrages du Namenode
norme quantit de logs de transaction : stockage consquent
redmarrage long car prise en compte de beaucoup de changements
Solution : rduire la taille des logs
utilisation dun (ou plusieurs) processus distant : Le Secondary
NameNode :
tlcharge rgulirement rgulirement les logs sur le Namenode
cre une nouvelle image en fusionnant les logs avec limage HDFS
renvoie la nouvelle image au Namenode
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 33 / 56
framework Map-Reduce
Gre les programmes clients Map-Reduce
excution
ordonnancement
dploiement
Une architecture matre-esclave
le maitre Map-Reduce : le Jobtracker
les esclaves Map-Reduce : les Tasktrackers
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 34 / 56
framework Map-Reduce et HDFS
excution sur une mme machine physique du Jobtracker et du
Namenode
excution sur une mme machine physique dun Tasktracker avec un
Datanode
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 35 / 56
framework Map-Reduce : le Jobtracker
reoit les jobs des clients
dtermine les splits des donnes dentre dun job
cre les tches de map en fonction du nombre de splits
cre les tches de reduce en fonction de la conguration du job
assigne les tches aux Tasktrackers
raecte les tches dfaillantes
maintient des informations sur ltat davancement des jobs
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 36 / 56
framework Map-Reduce : le tasktracker
excute les tches donnes par le Jobtracker
excution des tches dans une autre JVM (Child)
a une capacit en termes de nombres de tches quil peut excuter
simultanment (slot) :
paramtr par ladministrateur de la plate-forme
dpend du nombre de curs et de la capacit mmoire de la machine
physique
heartbeat avec le Jobtracker
message-aller :
demande ou non de nouvelle tches en fonction des slots disponibles
envoi de diverses informations (avancement des tches en cours, espace
mmoire, nombre de curs, charge, etc.)
message-retour :
une liste dordres comme : lancer une tche, annuler une tche, criture
dnitive de la sortie sur le HDFS (commit), rinitialisation du
tasktracker
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 37 / 56
framework Map-Reduce : initialisation dun job
A la rception dun job client, le Jobtracker :
cre un objet Job avec un identiant unique (JobId)
dtermine les splits des donnes dentre
cre une liste de tches (map et reduce) distribuer avec un identiant
unique pour chaque tche (TaskId)
les tches map en fonction du nombre de splits
les tches reduce en fonction dun paramtre de conguration
associe deux "fausses" tches map :
tche setup :
cration dun rpertoire temporaire de travail sur le HDFS
doit tre excute avant les "vraies" maps
tche cleanup :
suppression du rpertoire temporaire de travail sur le HDFS
doit tre excutautorisation de aprs lensemble des reduces
seront excutes sur un tasktracker (le Jobtracker ne fait que
ordonnancer :) )
insre cet objet dans une le dattente interne
sera mise jour en fonction de ltat davancement
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 38 / 56
framework Map-Reduce : Assignation des tches
A la rception dun heartbeat, le Jobtracker :
choisit les tches de setup/cleanup en premier lieu
sinon, choisit un job j dans la le dattente
choisit parmi la liste des tches de j , par ordre de prfrence :
les tches de map : en fonction de la localit du Tasktracker, choisit un
map o son split associ est le plus proche possible de celui-ci
les tches de reduce : partir dune certaine proportion de map
termins. Pas de prise en compte de la localit des donnes
cre pour chaque tche choisie une tentative de tche avec un
identiant (TaskAttemptId)
maintient pour chaque tche la liste des tentatives et leur Tastracker
associ
Le nombre de tentatives de tche renvoyes ne peut pas excder le nombre
de slot max indiqu dans le heartbeat
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 39 / 56
framework Map-Reduce : excution des tches
A la rception du retour de heartbeat, le tasktracker :
cre une nouvelle JVM (Child) pour chaque tche excuter.
Une fois un child lanc :
reporte rgulirement la JVM Tasktracker lavancement et ltat de
la tche
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 40 / 56
framework Map-Reduce : schma
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 41 / 56
framework Map-Reduce : Shue
les sorties de maps sont stockes sur les systmes de chiers locaux
des machines
le Jobtracker connat lavancement des tches ainsi que leur
localisation
En plus du heartbeat, un thread de la JVM Tasktracker demande
priodiquement au Jobtracker des informations sur les tches de maps
en cours
ltat davancement
la machine physique hbergeant la tches
Ds quun map se termine, les reduces concerns tlchargent
directement leur partition sur la machine du map (phase de copie)
une fois les donnes tlcharges, excution des phases de merge et de
sort
Remarque : le Tasktracker ne doit pas eacer les sorties de maps avant
que le job ne se termine (en cas de reduces dfaillants)
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 42 / 56
framework Map-Reduce : schma du shue
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 43 / 56
framework Map-Reduce : tolrance aux fautes
crash du Jobtracker :
a ne doit pas arriver :)
crash dun Tasktracker :
plus de heartbeat (dtection par le Jobtracker)
Le Jobtracker :
le marque comme dfaillant et leace de son pool de Tasktrackers
disponibles
raecte de nouvelles tentatives de tches dautres Tasktrackers
crash dun Child :
report de lerreur la JVM Tasktracker, avant de se terminer
propagation de lerreur au Jobtracker via le heartbeat raectation
dune nouvelle tentative sur un autre Tasktracker
si une tche choue plus de 4 fois, le job entier est annul.
le Jobtracker peut blacklister le Tastracker associ si son nombre de
crashs de Child est suprieur au taux moyen de dfaillance du cluster
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 44 / 56
framework Map-Reduce : excution spculative
Permet danticiper les dfaillances sur des tches juges trop
lentes :
daprs Hadoop, une tche lente est une tche potentiellement
dfaillante
dtect par le Jobtracker :
aectation dune nouvelle tentative de tche sur un autre tasktracker
ce mcanisme peut tre dsactiv pour un job particulier
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 45 / 56
framework Map-Reduce : criture des donnes nales
criture du rsultat du calcul sur le HDFS par les reduces (un
chier par tche de reduce)
Problme : Comment assurer une cohrence puisque plusieurs tentatives
dune mme tche peuvent sexcuter en mme temps (ex : spculation) ?
solution :
chaque tentative crit dans un chier portant leur TaskAttemptId dans
le rpertoire temporaire de travail (cr par le setup)
lorsquune tentative se termine, attendre la permission du jobtracker
pour copier son rsultat dans le rpertoire dnitif (tat
CommitPending)
le Jobtracker donne une telle permission la premire tentative
dtecte CommitPending
envoie de lordre de commit par le message retour du heartbeat
les autres tentatives sont dtruites aprs la n du commit
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 46 / 56
Programmation Map Reduce : dnir ses types de cl/valeur
les valeurs doivent implmenter linterface Writable de lAPI Hadoop
les cls doivent implmenter linterface WritableComparable < T >
(interface implmentant Writable et Comparable < T > de Java)
Writable contient deux mthodes :
void write(DataOutput out) : srialisation
void readFields(DataInput in) : d-srialisation
Des Writables prdnis dans lAPI :
BooleanWritable, DoubleWritable, FloatWritable, IntWritable,
LongWritable, Text, etc.
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 47 / 56
Programmation Map Reduce : format dentre et de sortie
permet de dnir le format des donnes dans :
les donnes dentre : toute classe hritant de
InputFormat < K, V >.
Classe fournies par lAPI Hadoop principalement utilises :
TextInputFormat
SequenceFileInputFormat < K, V >
KeyValueTextInputFormat
les donnes de sortie : toute classe hritant de
OutputFormat < K, V >
Classe fournies par lAPI Hadoop principalement utilises :
TextOutputFormat
SequenceFileOutputFormat < K, V >
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 48 / 56
Programmation Map Reduce : programme du Mapper
classe hritant de la classe
Mapper < KEYIN, VALUEIN, KEYOUT, VALUEOUT >
surcharge de la mthode map, appele chaque lecture dune
nouvelle paire cl/valeur dans le split :
protected void map(KEYIN key , VALUEIN value , Context context)
Exemple : Mapper du WordCount
public class TokenizerMapper extends
Mapper <Object , Text , Text , IntWritable >{
public void map(Object key , Text value ,Context context )
throws IOException , InterruptedException {
StringTokenizer itr = new StringTokenizer(value.toString ());
while (itr.hasMoreTokens ()) {
word.set(itr.nextToken ());
context.write(new Text(word), new IntWritable (1));
}
}
}
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 49 / 56
Programmation Map Reduce : programme du Reducer
classe hritant de la classe
Reducer < KEYIN, VALUEIN, KEYOUT, VALUEOUT >
surcharge de la mthode reduce, appele chaque lecture dune
nouvelle paire cl/list(valeur) :
protected void reduce(KEYIN key , Iterable <VALUEIN > values ,
Context context)
Exemple : Reducer du WordCount
public class IntSumReducer
extends Reducer <Text ,IntWritable ,Text ,IntWritable > {
public void reduce(Text key , Iterable <IntWritable > values , Context context)
throws IOException , InterruptedException {
int sum = 0;
for (IntWritable val : values) {
sum += val.get();
}
result.set(sum);
context.write(key , new IntWritable(sum ));
}
}
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 50 / 56
Programmation Map Reduce : partitionneur
dni la politique de rpartition des sorties de map
classe hritant de la classe abstraite Partitioner < KEY, VALUE >
implmentation de la mthode abstraite getPartition, appele par le
context.write() du map :
public abstract int getPartition(KEY key , VALUE value ,
int numPartitions );
/* key : lobjet type cl
value : lobjet type valeur
numPartitions : nombre de partition (= nombre de reduce)
*/
Le partitionneur par dfaut de Hadoop est un hachage de la cl
(HashPartitioner ) :
public class HashPartitioner <K, V> extends Partitioner <K, V>{
public int getPartition(K key , V value ,
int numReduceTasks) {
return(key.hashCode () & Integer.MAX_VALUE) % numReduceTasks;
}
}
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 51 / 56
Programmation Map Reduce : squelette client
public class MyProgram {
public static void main(String [] args){
Configuration conf = new Configuration ();
Job job = new Job(conf , "MonJob");
job.setJarByClass(MyProgram.class );//jar du programme
job.setMapperClass (...); // classe Mapper
job.setReducerClass (...); // classe Reducer
job.setMapOutputKeyClass (...); // classe cl sortie map
job.setMapOutputValueClass (...); // classe valeur sortie map
job.setOutputKeyClass (...); // classe cl sortie job
job.setOutputValueClass (...); // classe valeur sortie job
job.setInputFormatClass (...); // classe InputFormat
job.setOutputFormatClass (...); // classe OutputFormat
job.setPartitionerClass(HashPartitioner.class);
job.setNumReduceTasks (...); // nombre de reduce
FileInputFormat.addInputPath(job , ...); // chemins entre
FileOutputFormat.setOutputPath(job , ...);// chemin sortie
job.waitForCompletion(true); // lancement du job
}
}
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 52 / 56
Programmation Map Reduce : API du HDFS
possibilit de manipuler le HDFS depuis le programme client
HDFS reprsent par un objet FileSystem unique (singleton) :
final FileSystem fs = FileSystem.get(conf);
Quelques mthodes :
//copie dun fichier/dossier local client vers le HDFS
fs.copyFromLocalFile(src ,dst);
//copie dun fichier/dossier HDFS vers le fs local client
fs.copyToLocalFile(sr,dst);
// cration/crasement dun fichier
FSDataOutputStream out = fs.create(f);
//test dexistence dun fichier
boolean b = fs.exists(f);
// ouverture en ecriture (append only)
FSDataOutputStream out = fs.append(f);
// ouverture en lecture
FSDataInputStream in = fs.open(f);
//le reste : RTFM
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 53 / 56
Commande HDFS dans un terminal
possibilit de manipuler le HDFS depuis un terminal
commande :
hadoop fs <commande HDFS>
commandes HDFS similaires celles dUnix en ajoutant un tiret devant
Exemples :
hadoop fs -ls <path>
hadoop fs -mv <src> <dst>
hadoop fs -cp <src> <dst>
hadoop fs -cat <src>
hadoop fs -copyFromLocal <localsrc> ... <dst>
hadoop fs -mkdir <path>
hadoop fs -copyToLocal <src> <localdst>
RTFM pour les autres :).
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 54 / 56
Projets Apache utilisant Hadoop
Hbase : SGBD optimis pour les grandes tables utilisant le HDFS
Pig et Hive : logiciels danalyse de donnes permettant dutiliser
Hadoop avec une syntaxe proche du SQL
Mahout : cration dimplmentations dalgorithmes dapprentissage
automatique distribus
Zookeeper : service de coordination pour applications distribues
Chukwa : systme de monitoring de gros systmes distribus
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 55 / 56
Rfrences
[1] Jerey Dean and Sanjay Ghemawat, MapReduce : Simplied Data Processing
on Large Clusters, OSDI04 : Sixth Symposium on Operating System Design and
Implementation, San Francisco, CA, December, 2004.
[2] Hadoop : the denitive guide, White Tom, OReilly, 2012, ISBN :
978-1-4493-8973-4
[3] Hadoop web site : http ://hadoop.apache.org/
J. Lejeune (UPMC) Hadoop Map-Reduce 8 octobre 2013 56 / 56

Vous aimerez peut-être aussi