2010-04-29 17 views
14

Qualcuno può spiegare come funziona MapReduce con Cassandra .6? Ho letto l'esempio di conteggio delle parole, ma non seguo esattamente ciò che sta accadendo sul lato di Cassandra contro il termine "cliente".Come usare la mappa di Cassandra Ridurre con o senza maiale?

https://svn.apache.org/repos/asf/cassandra/trunk/contrib/word_count/

Per esempio, diciamo che sto usando Python e Pycassa, come vorrei caricare in una nuova mappa ridurre la funzione, e poi lo chiamano? La mia mappa riduce la funzione deve essere java installata sul server cassandra? In tal caso, come posso chiamarlo da Pycassa?

C'è anche una menzione di Pig che semplifica tutto, ma io sono un noob completo Hadoop, quindi non è stato di grande aiuto.

La tua risposta può usare Risparmio o qualsiasi altra cosa, ho appena menzionato Pycassa per indicare il lato client. Sto solo cercando di capire la differenza tra ciò che viene eseguito nel cluster Cassandra e il server effettivo che effettua le richieste.

risposta

10

Da quello che ho sentito (e da here), il modo in cui uno sviluppatore scrive un programma MapReduce che utilizza Cassandra come origine dati è il seguente. Scrivi un normale programma MapReduce (l'esempio a cui sei collegato è per la versione pure-Java) ei jar che sono ora disponibili forniscono un CustomInputFormat che consente alla sorgente di input di essere Cassandra (invece del valore predefinito, che è Hadoop).

Se stai usando Pycassa direi che sei sfortunato fino a quando (1) il manutentore di quel progetto aggiunge il supporto per MapReduce o (2) lanci alcune funzioni Python insieme che scrivono una MapReduce Java programma ed eseguilo. Quest'ultimo è decisamente un po 'incisivo ma ti farebbe andare avanti e indietro.

+1

Quindi i nodi Cassandra non stanno riducendo la mappa, ovunque sia in esecuzione Java? – UltimateBrent

+0

Sì, i jobtracker Hadoop eseguono i lavori m/r. – jbellis

+1

quindi non è il punto di mappa ridurre che è distribuito? Se non viene eseguito sui nodi Cassandra, qual è il punto? – UltimateBrent

1

La vittoria dell'uso di un InputFormat diretto da cassandra è che trasmette i dati in modo efficiente, il che è una grande vittoria. Ogni suddivisione di input copre una gamma di token e rotola fuori dal disco con tutta la larghezza di banda: nessuna ricerca, nessuna query complessa. Non penso che sappia sulla località - per fare in modo che ogni tasktracker preferisca le divisioni di input da un processo di cassandra sullo stesso nodo.

È possibile provare a utilizzare Pig con il metodo STREAM come un hack fino a quando non sarà disponibile un supporto per lo streaming di hadoop più diretto.

1

Conosce la località; Cassandra InputFormat sovrascrive getLocations() per preservare la località dei dati

Problemi correlati