Esercitazione. programmazione MapReduce con Hadoop v1.2.1
|
|
|
- Fabiano Gagliardi
- 9 anni fa
- Просмотров:
Транскрипт
1 Esercitazione programmazione MapReduce con Hadoop v
2 Prologo Cluster di VM accessibili tramite un gateway con reverse ssh passwordless ssh (Secure SHell) protocollo di rete per stabilire una connessione sicura alla shell di una macchina remota ssh ssh passwordless: connessione ssh con injection di una chiave ssh privata che assicura la nostra identità senza bisogno di una password ssh i /path/to/id_rsa <utente>@<ip_address>! reverse ssh tunneling: meccanismo per creare un tunnel ssh che consente l accesso alle macchine di una sottorete tramite gateway 2
3 Prologo: reverse ssh tunneling ssh -p !! gateway ip pubblico ssh -p !! master Grp1 ip: X master Grp2 ip: Y 3
4 Architettura Hadoop v1 (generale) MapReduce Runtime (coordinatore) Hadoop Distributed File System (HDFS) Jobtracker Namenode master Tasktracker Datanode slave Tasktracker Datanode slave Tasktracker Datanode slave 4
5 Architettura per l esercitazione 1 nodo master/slave e 2 slave Jobtracker Namenode Tasktracker Datanode slave Tasktracker Datanode master/slave ssh ubuntu@ x!! Tasktracker Datanode slave 5
6 Provare Loggarsi nel master :~$ ssh i id_rsa ubuntu@ p XXXXX Cambiare utente: :~$ sudo su hadoop! verificare quali processi dell architettura hadoop sono in esecuzione: :~$ jps HDFS: verificare lo stato dei datanode (slave) e il loro indirizzo ip :~$ hadoop dfsadmin -report collegarsi ad uno slave :~$ ssh ubuntu@ xx verificare quali processi sono in esecuzione :~$ jps 6
7 esempio WordCount Contare le occorrenze delle parole in un testo arbitrariamente lungo 1. Il documento è spezzettato in chunk. 2. map: per ogni parola emette <word,1>! 3. reduce: somma le occorrenze associate alla stessa chiave e emette <word,sum()> 7
8 esempio WordCount public class WordCount {! public static class TokenizerMapper extends! Mapper<Object, Text, Text, IntWritable>{ public static class IntSumReducer extends! Reducer<Text,IntWritable,Text,IntWritable>{ public static void main(string[] args) { gli oggetti spediti dai mapper ai reducer devono! implementare un protocollo di serializzazione. le chiavi devono implementare WritableComparable e i value devono implementare Writable! 8
9 esempio WordCount public static void main(string[] args) {! //controllo argomenti! Job job = new Job(new Configuration(),"word count");! //job.setnumreducetasks(2);! job.setjarbyclass(wordcount.class);! job.setmapperclass(tokenizermapper.class);! job.setreducerclass(intsumreducer.class);! job.setoutputkeyclass(text.class);! job.setoutputvalueclass(intwritable.class);! FileInputFormat.addInputPath(job, new Path(args[0]));! FileOutputFormat.setOutputPath(job, new Path(args[1]));! System.exit(job.waitForCompletion(true)? 0 : 1);! 9
10 WordCount main public static void main(string[] args) {! //controllo argomenti! Job job = new Job(new Configuration(),"word count");! //job.setnumreducetasks(2);! job.setjarbyclass(wordcount.class);! cartelle job.setmapperclass(tokenizermapper.class);! di input job.setreducerclass(intsumreducer.class);! e output job.setoutputkeyclass(text.class);! hdfs job.setoutputvalueclass(intwritable.class);! FileInputFormat.addInputPath(job, new Path(args[0]));! FileOutputFormat.setOutputPath(job, new Path(args[1]));! System.exit(job.waitForCompletion(true)? 0 : 1);! 10
11 WordCount mapper public static class TokenizerMapper! extends Mapper<Object, Text, Text, IntWritable>{! private final static IntWritable one = new IntWritable(1);! private Text word = new Text();! public void map(object key, Text val, Context context)! throws IOException, InterruptedException {! StringTokenizer itr=new StringTokenizer(val.toString());! while (itr.hasmoretokens()) {! word.set(itr.nexttoken());!! //generate itermediate key/value pair:! context.write(word, one);! 11
12 WordCount reducer public static class IntSumReducer! extends Reducer<Text,IntWritable,Text,IntWritable> {! private IntWritable result = new IntWritable();! public void reduce(text key, Iterable<IntWritable> val,! Context context) throws IOException, InterruptedException {! int sum = 0;! for (IntWritable v : val) {! sum += v.get();! result.set(sum);! context.write(key, result);! 12
13 Predisporre il test vediamo il contenuto di hdfs: :~$ hadoop dfs ls prendo un file di esempio: [Ulisse, James Joice] :~$ wget :~$ unzip 4300.zip creo una directory in hdfs: :~$ hadoop dfs mkdir indir! copio il file in hdfs: :~$ hadoop dfs put 4300.txt indir/! 13
14 Compilazione ed esecuzione compilazione: :~$ javac -classpath /usr/share/hadoop/hadoopcore jar -d wordcount_classes WordCount.java genero il jar :~$ jar -cvf wordcount.jar C wordcount_classes/. eseguo: :~$ hadoop jar wordcount.jar org.apache.hadoop.examples.wordcount indir outdir verifico l output: :~$ hadoop dfs cat outdir/part head -150! prendo i risultati da hdfs :~$ hadoop dfs get outdir/part
15 Esercizio 1 Modificare WordCount: creare un programma WordLengthCount.java che conta le occorrenze delle parole con una certa lunghezza => Il reducer deve emettere coppie <N,M> N = numero di lettere M = numero di parole con N lettere nel file di input! NB: creare un progetto eclipse e importare le librerie di hadoop per avere build automatico! poi compilazione ed esecuzione sul master 15
16 Esercizio 2 Modificare WordLegthCount: creare un programma WordByLength.java che crea un inverted index sulle parole con chiave la loro lunghezza. => Il reducer deve emettere coppie <N,S> N = numero di lettere S = stringa che contiene tutte le parole di N lettere nel file di input ( word1 word2 word3 ) 16
MapReduce: teoria e implementazione
MapReduce: teoria e implementazione 1 Genesi nasce nel 2004 [ MapReduce: simplified Data Processing on Large Clusters, Dean, Ghemawat. Google Inc.] nasce dall esigenza di eseguire problemi semplici su
Programmare Apache Hadoop con Python
categoria: Programmazione Programmare Apache Hadoop con Python Hadoop è il framework Map/Reduce Operi Sourcepiù diffuso: vediamo come sfruttarlo anche con Python, riducendo i tempi di sviluppo Simone Leo
K-Means Data Clustering
Università degli Studi del Sannio Facoltà di Ingegneria Corso di Laurea Specialistica in Ingegneria Informatica Corso di Programmazione Concorrente PROGETTO: K-Means Data Clustering Studenti Flavio Pace
MapReduce. Progettazione del Software a.a. 2012/13. Università degli Studi di Milano Dept. of Computer Science. Matteo Camilli
Università degli Studi di Milano Dept. of Computer Science MapReduce Matteo Camilli [email protected] http://camilli.di.unimi.it Progettazione del Software a.a. 2012/13 1 Motivazioni Vogliamo processare
Big Data: tecnologie, metodologie e applicazioni per l analisi dei dati massivi
Big Data: tecnologie, metodologie e applicazioni per l analisi dei dati massivi Ministero Dello Sviluppo Economico Istituto Superiore delle Comunicazioni e delle Tecnologie dell Informazione Seminario
Hadoop Analyzer JR. Università degli studi di salerno. Progetto di Sistemi Operativi Avanzati 2014-2015
Università degli studi di salerno Progetto di Sistemi Operativi Avanzati 2014-2015 Hadoop Analyzer JR Autori: Amedeo Leo Alessio Petrozziello Simone Romano Docente Giuseppe Cattaneo Supervisore: Gianluca
CORSO I.F.T.S TECNICHE PER LA PROGETTAZIONE E LA GESTIONE DI DATABASE
CORSO I.F.T.S TECNICHE PER LA PROGETTAZIONE E LA GESTIONE DI DATABASE Ing. Mariano Di Claudio Lezione del 15/10/2014 1 Indice 1. Processo di analisi/elaborazione dei 1. Hadoop Caratteristiche chiave Architettura
Fondamenti di informatica T-1 (A K) Esercitazione 2 Basi del linguaggio Java
Fondamenti di informatica T-1 (A K) Esercitazione 2 Basi del linguaggio Java AA 2018/2019 Tutor Lorenzo Rosa [email protected] 2 Programma Introduzione al calcolatore e Java Linguaggio Java, basi e
Esercitazione n.1 13 Ottobre Obiettivi:
Esercitazione n.1 13 Ottobre 2009 Obiettivi: Introduzione al laboratorio Gestione dei pthreads: creazione: pthread_create terminazione: pthread_exit join: pthread_join Gestione dei thread java : Thread
19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
19 - Eccezioni Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso
POLITECNICO DI TORINO Facoltà di Ingegneria dell Informazione Corso di Laurea in Ingegneria Informatica. Tesi di Laurea
POLITECNICO DI TORINO Facoltà di Ingegneria dell Informazione Corso di Laurea in Ingegneria Informatica Tesi di Laurea Progettazione e sviluppo di un'architettura Big Data per dati geospaziali Relatori
Laboratorio di Programmazione 1 [Java]
Laboratorio di Programmazione 1 [Java] Prova di esame - 7 Settembre 2010 Tempo massimo: 50 minuti Si implementino in Java le classi Tavolo e Ristorante. La classe Tavolo ha i seguenti attributi: numero
Indice generale. Introduzione...xiii. Gli autori...xvii. I revisori...xix
Indice generale Introduzione...xiii Struttura del libro... xiii Cosa serve per questo libro...xiv Lo scopo del libro...xiv Convenzioni...xv Codice degli esempi...xv Gli autori...xvii I revisori...xix Capitolo
Esplorare e modificare il file system Compilare con gcc Lanciare un programma da linea di comando
Eclipse: Cos è? Utilizzare Eclipse: Creare un progetto Creare file sorgenti nel progetto Compilare Lanciare il programma Strumenti alternativi agli IDE La linea di comando su Linux Esplorare e modificare
Le basi del linguaggio Java
Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una
Laboratorio di Programmazione 1 [Java]
Laboratorio di Programmazione 1 [Java] Prova di esame - 26 Gennaio 2011 Tempo massimo: 50 minuti Si implementino in Java le classi Tavolo e Pizzeria. La classe Tavolo ha i seguenti attributi: nome (una
Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura:
Le classi in java Un semplice programma java, formato da una sola classe, assume la seguente struttura: class Domanda static void main(string args[]) System.out.println( Quanti anni hai? ); La classe dichiarata
Elaborazione dati parallela con map/reduce. Roberto Congiu [email protected]
Elaborazione dati parallela con map/reduce Roberto Congiu [email protected] Indice delle slide Introduzione a Map/Reduce Descrizione del modello Implementazione Ottimizzazioni Introduzione Map/Reduce e
Programmazione distribuita in Java. Socket & Client-Server
Programmazione distribuita in Java Socket & Client-Server 1 Strumenti per networking Libreria java.net Socket (Astrazione per una presa di comunicazione) Serializzazione Socket Per comunicare si apre una
Sperimentazione del file-system distribuito HDFS in ambiente GRID. III Borsista Day, Roma, 06.12.2012
Sperimentazione del file-system distribuito HDFS in ambiente GRID Tutor: Domenico Diacono Outline Use cases Hadoop Distributed File System Test di funzionalità Sviluppo di politiche di replica dei dati
Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro
Laboratorio di Programmazione Lezione 2 Cristian Del Fabbro Prossima lezione GIOVEDÌ 29 OTTOBRE 14:00 Input da tastiera package input; import java.io.*; public class Input { public static void main(string[]
/***************************** FILE: Quiz.java *****************************/ public class Quiz { private String text; private int score;
Soluzione esercizio [Quiz] a. Definizione della classe base e delle sottoclassi: /***************************** FILE: Quiz.java *****************************/ public class Quiz { private String text; private
Installazione. Eclipse. Workspace. Primo Avvio. Fondamenti di Informatica T2 Modulo 2. Università di Bologna A.A. 2008/2009
Università degli Studi di Bologna Facoltà di Ingegneria Fondamenti di Informatica T2 Modulo 2 Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009 Integrated Development Environment (IDE)
Uso del terminale in ambiente UNIX
Uso del terminale in ambiente UNIX Non sempre è disponibile un interfaccia grafica sui computer su cui si lavora In questo caso l interazione con il calcolatore avviene attraverso l interfaccia a riga
Server Sequenziale. Server Concorrente. Esercitazione: Socket Java con connessione
Esercitazione: Socket Java con connessione Sviluppare un applicazione C/S che effettui il trasferimento di un file dal client al server (put) usando una connessione. In particolare nel servizio: il client
Università degli studi di Salerno
Università degli studi di Salerno Facoltà di Scienze Matematiche, Fisiche e Naturali Laurea Magistrale in Informatica GRENITS su HADOOP Prof: Giuseppe Cattaneo Gruppo: Giovanni Esposito Luigi Fontanella
Esercitazione 2: Java Thread. Java Thread. Java Thread. Un thread:
Esercitazione 2: Thread Un thread è un singolo flusso sequenziale di controllo all interno di un processo Un thread (o processo leggero) è un unità di esecuzione che condivide codice e dati con altri thread
GESTIONE DEGLI ERRORI
GESTIONE DEGLI ERRORI Spesso vi sono istruzioni critiche, che in certi casi possono produrre errori L approccio classico consiste nell inserire controlli (if else..) per cercare di intercettare a priori
Cosa è importante: pom.xml Goal Plug-in Repository
Cos è Maven? Maven è un software usato principalmente per la gestione di progetti Java e build automation, ma è utile anche per gestire documentazione, report, dipendenze... Cosa è importante: pom.xml
Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali
Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali 1 Ereditarietà, polimorfismo e altri sporchi trucchi Facciamo un esempio che ci permette di comprendere come vengono utilizzate
Gerarchia delle classi Classi astratte Interfacce (Eccezioni) Laboratorio di Programmazione - Esercitazio 1
Gerarchia delle classi Classi astratte Interfacce (Eccezioni) Laboratorio di Programmazione - Esercitazio 1 Gerarchia delle classi Una sottoclasse eredita metodi, variabili, etc. dalla superclasse... Per
INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
appunti delle lezioni Architetture client/server: applicazioni server
Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture /: applicazioni 1 La logica dei Abbiamo visto che un applicazione si connette e comunica con un applicazione mediante
Tecnologie e metodologie di Big Data Analytics - Apache Spark
Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni [email protected] 2 Luglio 2019 Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di
