hadoop - Control de Splits de Pig & Cassandra y DataStax
apache-pig datastax-enterprise (3)
Puede establecer cassandra.input.split.size en algo menos de 64k, que es el tamaño de división predeterminado, por lo que puede obtener más divisiones. ¿Cuántas filas por nodo para la tabla Cql? ¿Puedes publicar tu esquema de tabla?
agregar split_size a los parámetros de la url
Para CassandraStorage, use los siguientes parámetros cassandra: // [username: password @] / [? Slice_start = & slice_end = [& reversed = true] [& limit = 1] [& allow_deletes = true] [& widerows = true] [& use_secondary = true] [& comparator =] [& split_size =] [& partitioner =] [& init_address =] [& rpc_port =]]
Para CqlStorage, use los siguientes parámetros cql: // [username: password @] / [? [Page_size =] [& columns =] [& output_query =] [& where_clause =] [& split_size =] [& partitioner =] [& use_secondary = true | false] [& init_address =] [& rpc_port =]]
He estado usando Pig con mis datos de Cassandra para hacer todo tipo de increíbles hazañas de agrupaciones que serían casi imposibles de escribir imperativamente. Estoy utilizando la integración de DataStax de Hadoop y Cassandra, y debo decir que es bastante impresionante. ¡Sombrero para esos tipos!
Tengo un grupo de sandbox bastante pequeño (2 nodos) donde estoy poniendo este sistema a través de algunas pruebas. Tengo una tabla CQL que tiene ~ 53M filas (alrededor de 350 bytes por ej.), Y noto que el Mapper tarda más tiempo en repasar estas 53M filas. Empecé a hurgar en los registros y puedo ver que el mapa se está derramando repetidamente (vi 177 derrames del mapeador), y creo que esto es parte del problema.
La combinación de CassandraInputFormat y JobConfig solo crea un único asignador, por lo que este asignador debe leer el 100% de las filas de la tabla. Yo llamo a esto antiparalelo :)
Ahora, hay muchos engranajes en funcionamiento en esta imagen, que incluyen:
- 2 nodos físicos
- El nodo hadoop está en un DC de "Análisis" (configuración predeterminada), pero físicamente en el mismo rack.
- Puedo ver el trabajo usando LOCAL_QUORUM
¿Alguien puede apuntarme en la dirección de cómo hacer que Pig cree más Splits de entrada para poder ejecutar más mapeadores? Tengo 23 máquinas tragamonedas; parece una pena usar solo uno todo el tiempo.
O, ¿estoy completamente enojado y no entiendo el problema? Doy la bienvenida a ambos tipos de respuestas!
Debe establecer pig.noSplitCombination = true
. Puedes hacer esto en uno de tres lugares.
Al invocar el script:
dse pig -Dpig.noSplitCombination=true /path/to/script.pig
En el script de Pig en sí:
SET pig.noSplitCombination true
table = LOAD ''cfs://ks/cf'' USING CqlStorage();
O permanentemente en /etc/dse/pig/pig.properties
. Descomentar
pig.noSplitCombination=true
De lo contrario, Pig puede configurar sus rutas de entrada totales (combinadas) para procesar: 1.
establecer pig.noSplitCombination = true me lleva al otro extremo extremo - con esta bandera comencé a tener 769 tareas de mapa