2012-07-27 25 views
6

Tengo una instalación de Cassandra 1.1.2 en mi sistema como un clúster de nodo único y tengo tres espacios de claves: hotel, student y employee. Quiero volcar el esquema de espacio de claves de hotel junto con sus datos familiares de columna, si es posible, y restaurar el volcado en otro clúster de Cassandra. ¿Alguien puede sugerirme en detalle que cómo debería hacer esto?Keyspace schema import and export in Cassandra

Respuesta

6

Puede utilizar sstable2json y json2sstable herramientas cassandra

Echa un vistazo a DataStax documentation en el mismo y this demasiado

Usage: sstable2json [-f outfile] <sstable> [-k key [-k key [...]]] 
Usage: json2sstable -K keyspace -c column_family <json> <sstable> 

Siempre se puede ejecutar comandos cassandra-cli en el archivo

cassandra-cli -h HOST -p PORT -f fileName 

Puede cargar todas sus instrucciones de creación en un archivo y ejecutar este comando

Para obtener las secuencias de comandos de la CLI para crear keyspaces y familias columna, use siguientes comandos en cassandra-cli interfaz

show schema 

Pero en caso que usted quiere crear un clúster de dos nodos. No necesita hacer todo lo anterior. Simplemente iniciar el otro nodo con diferente rango de token y el mismo nombre de clúster haría. Cassandra internamente se las arreglará para transmitir los datos y las informaciones de esquema

+0

Gracias Tamil Muchas gracias He estado enfrentando este problema desde 3 días Es una buena solución Tengo una cosa que preguntar después de obtener el espacio de claves y restaurarlo en otro clúster Puedo copiar y pegar los datos del espacio de claves que es presente en el directorio de datos –

+0

no, no puedes hacer eso. Haga un 'nodetool drain' [en caso de que desee todos los datos, incluso en la memoria] en el clúster de un nodo existente y proceda con el cargador json. Ningún otro ir. El drenaje nodetool purgará todos los CF pero su clúster actual será inaccesible hasta que finalice esta operación. – Tamil

+0

Gracias, pero hice lo que he mencionado anteriormente y está funcionando bien, creará algún problema si no usaré el drenaje del nodo, etc. –

2

No recomiendo usar stable2json y json2sstable para cargar una gran cantidad de datos. Utiliza la API de jackson para crear el conjunto de datos y transformarlo al formato json. Implica cargar todos los datos en la memoria para crear una representación json única.

Está bien para una pequeña cantidad de datos, ahora imagine cargar un gran conjunto de datos de más de 40 millones de filas, unos 25 GB de datos, estas herramientas simplemente no funcionan bien. Ya les pregunté a los chicos de Datastax sobre esto sin ninguna aclaración.

En el caso de conjuntos de datos grandes, simplemente copie los archivos de datos de cassandra de un clúster a otro para resolver el problema. En mi caso, estaba tratando de migrar del clúster 1.0.6 de Cassandra a 1.2.1, los archivos de datos no eran compatibles entre estas versiones.

¿Cuál es la solución? Estoy escribiendo mi propia herramienta de exportación/importación para resolver esto. Espero publicar un enlace para esta herramienta pronto.