Hadoop
Ida Mele
Sapienza Università di Roma
Hadoop: introduzione (1)
• Apache Hadoop:
– http://hadoop.apache.org/
– Framework che supporta calcolo distribuito,
affidabile e scalabile.
– Inspirato a MapReduce di Google, permette di
lavorare con migliaia di nodi e patabyte di dati.
– Open-source.
• Principali utilizzatori di Hadoop sono: Yahoo!, AOL,
Ebay, Facebook, Linkedin e Twitter.
Pagina 1
Hadoop: introduzione (2)
• Il progetto include i seguenti sottoprogetti:
– Hadoop Common: utility che supportano gli altri
sottoprogetti di Hadoop. Include: FileSystem, RPC,
e librerie per la serializzazione.
– HDFS (Hadoop Distributed File System): file
system distribuito. HDFS crea multiple repliche di
blocchi di dati e le distribuisce su un cluster di nodi
consentendo calcoli rapidi e grande affidabilità.
– Hadoop MapReduce: un framework software per il
calcolo distribuito su grandi quantità di dati.
Pagina 2
Hadoop: installazione e configurazione (1)
• Scaricare l’ultima release stabile di Hadoop:
– http://hadoop.apache.org/common/releases.html
• Configurazione:
– File conf/hadoop-env.sh
Specificare le variabili d’ambiente:
LINUX: export JAVA_HOME=/usr/local/lib/...
MAC OS: export
JAVA_HOME=/Library/Java/Home
Nota: devono sempre essere controllate le
impostazioni locali della vostra macchina.
Pagina 3
Hadoop: installazione e configurazione (2)
• Configurazione:
– File conf/hadoop-env.sh
Opzionale: Specificare la massima quantità di
memoria assegnabile a Java heap:
# The maximum amount of heap to use, in MB.
Default is 1000.
export HADOOP_HEAPSIZE=2000
Pagina 4
Hadoop: installazione e configurazione (3)
• Configurazione:
– File core-site.xml
Opzionale: specificare la directory in cui Hadoop
andrà a scrivere l'output temporaneo
<property>
<name>hadoop.tmp.dir</name>
% Sostituire questo valore con la directory
specificata
<value>/tmp/hadoop-tmp-${user.name}</value>
<description>A base for other temporary
directories.<description>
</property>
Pagina 5
Hadoop: esempio WordCounter (1)
•
•
•
•
•
Scaricare dal sito WordCounter.jar e text.txt
Copiare nella directory di Hadoop WordCounter.jar
Creare nella directory di Hadoop la cartella einput.
Copiare il file text.txt in einput.
Posizionarsi nella directory di Hadpop e lanciare il
comando:
bin/hadoop jar WordCounter.jar
mapred.WordCount einput/ eoutput/
Pagina 6
Hadoop: esempio WordCounter (2)
• L’opzione jar permette di specificare il file .jar con il codice
da eseguire.
• Eseguiamo la classe WordCount del package mapred
• Il programma WordCount richiede di specificare la directory
contenente i dati di input (einput) e la directory in cuiverrà
scritto l'output (eoutput).
• Attenzione: la directory di output non deve esistere
altrimenti Hadoop segnalerà il seguente errore:
Exception in thread "main"
org.apache.hadoop.mapred.FileAlreadyExistsException
: Output directory file: …../eoutput already exists
Pagina 7
Hadoop: esempio WordCounter (3)
• Per leggere il risultato digitare il comando:
more eoutput/part-00000
• Se si vogliono ordinare i termini per frequenze
decrescenti usare:
sort -k2 -n -r eoutput/part-00000
Pagina 8
Hadoop: esempio WordCounter (4)
Risultato sort:
the26
to 15
of 14
in 9
and 9
a 9
that 7
on7
is 7
he6
has 6
had 6
for 6
at 6
are6
who 5
players 5
have 5
club 5
been 5
The 5
not4
Ashley 4
was 3
sale 3
said 3
new 3
his 3
be3
as3
….
Pagina 9