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