Domanda

Sono in scenario in cui ho due lavori MapReduce. Io sono più a suo agio con il pitone e la pianificazione di utilizzarlo per la scrittura di script MapReduce e Hadoop utilizzare lo streaming per la stessa. c'è un comodo catena di entrambi i posti di lavoro seguente modulo quando si utilizza lo streaming Hadoop?

Map1 -> Reduce1 -> Map2 -> Reduce2

Ho sentito un sacco di metodi per raggiungere questo in Java, ma ho bisogno di qualcosa per Hadoop in streaming.

È stato utile?

Soluzione

Qui è un grande post sul blog su come utilizzare Cascading e streaming. http: //www.xcombinator. com / 2009/11/18 / how-to-use-cascata-con-Hadoop-streaming /

Il valore qui è che si può mescolare java (query Cascading scorre) con la vostra abitudine operazioni in streaming nella stessa app. Trovo che questo sia molto fragile meno rispetto ad altri metodi.

Nota, l'oggetto cascata in cascata consente di concatenare più flussi (tramite il blog di cui sopra pubblicare il tuo lavoro Streaming sarebbe diventato un MapReduceFlow).

Disclaimer: io sono l'autore di Cascading

Altri suggerimenti

È possibile provare Yelp MRJob per ottenere il vostro lavoro fatto .. la sua un opensource MapReduce libreria che permette di scrivere i lavori concatenate che possono essere eseguiti in cima Hadoop in streaming sul vostro Hadoop cluster o EC2 .. la sua piuttosto elegante e facile da usare, e ha un metodo chiamato passi che si può ignorare per specificare l'esatta catena di mapper e riduttori che si desidera i dati di passare attraverso.

Controlla la fonte a https://github.com/Yelp/mrjob
e la documentazione a http://packages.python.org/mrjob/

In genere il mio modo di fare questo con Hadoop streaming e Python è da dentro il mio script bash che creo per eseguire i lavori, in primo luogo. Sempre ho eseguito da uno script bash, in questo modo posso ottenere e-mail su errori ed e-mail in caso di successo e renderli passaggio più flessibile dei parametri di un altro Ruby o Python lo script involucro è in grado di lavorare in un sistema di elaborazione di eventi più grandi.

Quindi, l'uscita del primo comando (di lavoro) è l'ingresso per il comando successivo (lavoro), che possono essere variabili nello script bash passato come un argomento da linea di comando (semplice e veloce)

Si potrebbe desiderare di checkout Oozie http://yahoo.github.com/oozie/design. html un motore di workflow per Hadoop che vi aiuterà a fare questo anche (supporti lo streaming, non è un problema). Non ho avuto questo quando ho iniziato così ho finito per dover costruire il mio cosa, ma questo è un sistema kewl e utile !!!!

Se si sta già scrivendo il vostro mapper e riduttore in Python, vorrei considerare l'utilizzo di Dumbo in cui tale operazione è molto semplice. La sequenza della mappa ridurre posti di lavoro, la vostra mapper, riduttore, ecc sono tutti in uno script python che può essere eseguito da linea di comando.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top