È possibile avere più ingressi con più mapper diversi in Hadoop MapReduce? Ogni classe di mappatori lavora su un diverso insieme di input, ma tutti emettono coppie chiave-valore consumate dallo stesso riduttore. Nota che non sto parlando di concatenare i mapper qui, sto parlando di far girare diversi mapper in parallelo, non in modo sequenziale.È possibile avere più input con più mapper diversi in Hadoop MapReduce?
risposta
Questo è chiamato join.
Si desidera utilizzare i mapper ei riduttori nei pacchetti mapred. * (Precedenti, ma ancora supportati). I pacchetti più recenti (mapreduce. *) Consentono solo un input del mapper. Con i pacchetti mapred, si utilizza la classe MultipleInputs per definire il join:
MultipleInputs.addInputPath(jobConf,
new Path(countsSource),
SequenceFileInputFormat.class,
CountMapper.class);
MultipleInputs.addInputPath(jobConf,
new Path(dictionarySource),
SomeOtherInputFormat.class,
TranslateMapper.class);
jobConf.setJarByClass(ReportJob.class);
jobConf.setReducerClass(WriteTextReducer.class);
jobConf.setMapOutputKeyClass(Text.class);
jobConf.setMapOutputValueClass(WordInfo.class);
jobConf.setOutputKeyClass(Text.class);
jobConf.setOutputValueClass(Text.class);
io risponderò alla tua domanda con una domanda, 2 risposte, e un anti-raccomandazione.
La domanda è: quale vantaggio si vede nell'esecuzione di processi di mappa eterogenei in parallelo, anziché eseguirli in serie, producendo risultati omogenei che possono essere mescolati correttamente? L'idea è di evitare di passare due volte gli stessi record, una volta con una mappa delle identità?
La prima risposta è quella di programmare entrambi i lavori mapper-solo contemporaneamente, ognuno su metà della vostra flotta (o qualunque rapporto di partite al meglio la dimensione dei dati di input), l'output di risultati omogenei, seguiti da un lavoro di riduttore di sola esegue il join.
La seconda risposta è creare un formato di input personalizzato in grado di riconoscere e trasformare entrambi i sapori dell'ingresso eterogeneo. Questo è estremamente brutto, ma ti permetterà di evitare la mappa dell'identità non necessaria del primo suggerimento.
L'anti-raccomandazione è quella di non utilizzare le API deprecate Hadoop dalla risposta di Chris'. Hadoop è molto giovane, ma le API si stanno stabilizzando attorno al "nuovo" sapore. Alla fine arriverete alla versione lock-in.
Il motivo per l'esecuzione di diversi mapper è che è possibile implementare un'operazione di appiattimento come indicato nella carta FlumeJava. L'output dei diversi mapper può partecipare alla stessa operazione di shuffle. – tibbe
- 1. Hadoop MapReduce: è possibile definire due mapper e riduttori in una classe di lavoro hasdoop?
- 2. È possibile stampare l'output di Mapper e riduttore per un singolo lavoro in Hadoop Mapreduce
- 3. Hadoop MapReduce I file di input multiple
- 4. Hadoop MapReduce legge il set di dati una volta per più lavori
- 5. Hadoop: Fornire la directory come input per il lavoro MapReduce
- 6. Hadoop MapReduce fornire le directory nidificate come input di lavoro
- 7. Hadoop MapReduce - un file di output per ciascun input
- 8. Come Java Hadoop Mapper può inviare più valori
- 9. Hadoop che accetta i file di input da più directory
- 10. Multiple Output file per Hadoop Streaming con Python Mapper
- 11. Hadoop e diversi formati di input come Immagine, Audio, Video
- 12. Quando si utilizza HBase come sorgente per MapReduce, è possibile estendere TableInputFormatBase per creare più suddivisioni e più mapper per ciascuna regione?
- 13. Hadoop Mapper Oggetto contesto
- 14. È possibile avere una selezione tableless con più righe?
- 15. È possibile avere più maschere con percorso clip?
- 16. Introduzione a MapReduce/Hadoop
- 17. concatenamento Multi-Riduttori in un lavoro Hadoop MapReduce
- 18. Concatenamento di Hadoop MapReduce con pipe (C++)
- 19. È possibile avere più supporto APK in base al Paese?
- 20. È possibile avere più attributi di dati {nome} in HTML5?
- 21. input simple_form con più campi
- 22. È possibile avere più blocchi di corsa angolari e grugniti?
- 23. Configurazione Hadoop: mapred. * Vs mapreduce. *
- 24. Can hadoop può ricevere input da più directory e file
- 25. Come posso inviare più di un lavoro a Hadoop in una fase utilizzando l'API Elastic MapReduce?
- 26. metodi di impostazione e pulizia di Mapper/Reducer in Hadoop MapReduce
- 27. Hadoop - Scrittura in HBase direttamente dal Mapper
- 28. Hadoop Streaming: Mapper 'wrapping' un eseguibile binario
- 29. Hadoop: come funziona OutputCollector durante MapReduce?
- 30. riutilizzare JVM in Hadoop mapreduce jobs
I nuovi apis ('mapreduce' not' mapred') hanno 'MultipleInputs': http://hadoop.apache.org/common/docs/r1.0.3/api/org/apache/hadoop/mapreduce/lib /input/MultipleInputs.html –
@Donald Miner: Assolutamente giusto. –
@DonaldMiner Alcune versioni lo fanno, ma sembra che almeno 0.20.x non lo faccia, ad es. notare la mancanza di MultipleInputs qui: http://hadoop.apache.org/docs/r0.20.205.0/api/org/apache/hadoop/mapreduce/lib/input/ – kabuko