2010-04-29 6 views
14

¿Alguien puede explicar cómo funciona MapReduce con Cassandra .6? He leído el ejemplo del conteo de palabras, pero no entiendo muy bien lo que está pasando en el extremo de Cassandra versus el final del "cliente".Cómo usar el mapa de Cassandra ¿Reducir con o sin Cerdo?

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

Por ejemplo, digamos que estoy usando Python y Pycassa, ¿cómo voy a cargar en un nuevo mapa reducir la función, y luego llamarlo? ¿Mi mapa reduce la función tiene que ser java que está instalado en el servidor de cassandra? Si es así, ¿cómo lo llamo desde Pycassa?

También hay mención de Pig haciendo todo esto más fácil, pero soy un novato Hadoop completo, por lo que realmente no ayudó.

Su respuesta puede utilizar Thrift o lo que sea, acabo de mencionar Pycassa para denotar el lado del cliente. Solo trato de entender la diferencia entre lo que se ejecuta en el clúster de Cassandra y el servidor real que realiza las solicitudes.

Respuesta

10

Por lo que he escuchado (y de here), la forma en que un desarrollador escribe un programa MapReduce que usa Cassandra como origen de datos es la siguiente. Usted escribe un programa MapReduce regular (el ejemplo al que se vincula es para la versión pura de Java) y los archivos ahora disponibles proporcionan un CustomInputFormat que permite que la fuente de entrada sea Cassandra (en lugar del valor predeterminado, que es Hadoop).

Si está usando Pycassa, diría que no tiene suerte hasta que (1) el responsable de mantenimiento de ese proyecto agregue soporte para MapReduce o (2) junte algunas funciones de Python que escriban Java MapReduce programar y ejecutarlo. Este último definitivamente es un truco, pero te ayudaría a empezar.

+1

Entonces, ¿los nodos de Cassandra no están haciendo el mapa de reducción, donde sea que se esté ejecutando su Java? – UltimateBrent

+0

Sí, los jobtrackers de Hadoop ejecutan los trabajos m/r. – jbellis

+1

entonces, ¿no es el objetivo del mapa reducir que se distribuya? Si no se ejecuta en los nodos de Cassandra, ¿cuál es el punto? – UltimateBrent

1

La ventaja de usar un InputFormat directo de cassandra es que transmite los datos de manera eficiente, lo que es una gran ganancia. Cada división de entrada cubre un rango de tokens y rueda del disco en todo su ancho de banda: sin búsquedas, sin consultas complejas. No creo que sepa acerca de la localidad: que cada rastreador de tareas prefiera las divisiones de entrada de un proceso de cassandra en el mismo nodo.

Puede intentar usar Pig con el método STREAM como un hack hasta que haya más soporte directo de transmisión de hadoop.

1

Sabe sobre la localidad; Cassandra InputFormat anula getLocations() para conservar la localidad de datos

Cuestiones relacionadas