viernes, 31 de julio de 2015

Inserción de datos a Apache Cassandra


El último y nos vamos.

DevCenter es un entorno Eclipse adaptado para trabajar con Cassandra, como un manejador de base de datos. Permite guardar conexiones, ejecutar sentencias CQL y guardarlas como scripts.

Se puede bajar esta aplicación desde [aqui]. Lo instalas en una de tus máquinas virtuales.

Para crear una conexión en DevCenter se da clic en el icono ubicado en la parte superior izquierda como se visualiza en la siguiente imagen.
coneccion.png

Se edita el nombre de la conexión y el IP del host, en este caso es la IP de una de las máquinas virtuales que creaste y que tienen corriendo el proceso de Cassandra.

coneccion1.png

Inserción de datos

Herramienta CQL para agregar datos

La herramienta que incluye el paquete de instalación puede usarse por línea de comandos haciendo consultas en el lenguaje de consultas de Cassandra (CQL).



Keyspace y familias de columnas

Se necesita crear un keyspace para poder empezar a llenar datos. El comando para crear un keyspace es el siguiente:

CREATE KEYSPACE if not exists SaleStore WITH REPLICATION =
{ 'class' : 'SimpleStrategy', 'replication_factor' : 1 };

Un keyspace es un namespace que define la estrategia de replicación. Nombres válidos para keyspaces son aquellos compuestos exclusivamente de caracteres alfanuméricos y que su longitud sea menor o igual a 32. Los keyspaces no distinguen entre mayúsculas y minúsculas: utilice un nombre entrecomillado si desea que distinga entre estos tipos de letra.

Las propiedades soportadas para la sentencia CREATE KEYSPACE son:

Nombre
Tipo
Obligatorio
Valor por defecto
Descripción
replication
map
Si

La estrategia de replicación y las opciones para user el keyspace.
durable_writes
simple
No
true
Opción si desea usar los logs para registrar las actualizaciones en el keyspace (deshabilite a su propio riesgo).

La propiedad de replication es obligatoria. Debe al menos contener una opción de que define la estrategia de replicación a usar. El resto de las opciones depende del tipo de la estrategia a seguir. Por defecto, Cassandra soporta las siguientes clases:

  • ‘SimpleStrategy’: una estrategia simple que define un factor de replicación simple para todo el cluster. La única opción soportada es ‘replication_factor’ que define el factor de replicación y es obligatoria.
  • 'NetworkTopologyStrategy': Una estrategia de replicación que permite dar un factor de replicación independiente para cada datacenter. El resto de las opciones son parejas de llave-valor donde cada llave es el nombre de un datacenter y el calor es el factor de replicación para dicho datacenter.
  • 'OldNetworkTopologyStrategy': Una estrategia de replicación obsoleta. No debería usarse y en su lugar usar 'NetworkTopologyStrategy'.

Intentar recrear un keyspace que ya existe dará error,  a menos que se utilice la opción IF NOT EXISTS. Si se utiliza, la sentencia no se ejecutará si el keyspace ya existe.

Incrementar el factor de replicación incrementa el total de copias del keyspace guardadas en un cluster. Es muy importante incrementar el factor de replicación, porque si se utiliza el valor de defecto de 1 y el nodo con la única copia falla, no será posible conectarse al data center porque el keyspace no fue replicado.

Una vez que el keyspace es creado, se pueden crear tablas, insertar datos, consultar información, etc. Las familias de columnas son como lo serían las tablas en una base de datos relacional.

Creación de keyspace y familias de columnas usando DataStax Development Center

Para este proyecto se uso DevCenter para crear el Keyspace y la tabla como se aprecia en la siguiente imagen.

DevCenterCreateTable.png


También se puede verificar que los datos se hayan creado dentro de OpsCenter.

opscenterSaleStore.png


Insertar datos

Para importar datos a Cassandra de un archivo separado por comas (CSV) se usa el comando COPY. En DevCenter no es posible utilizar el comando COPY por lo que es necesario utilizar la herramienta por defecto CQL por línea de comandos.

La sintaxis de una consulta con el comando COPY es:
COPY table_name ( column, ...)
FROM ( 'file_name' | STDIN )
WITH option = 'value' AND ...
Por defecto, cuando se usa el comando COPY FROM, Cassandra espera  que cada renglón en el archivo CSV tenga el mismo número de columnas que la tabla donde los datos serán importados. Cassandra asigna los campos en el orden que están en la tabla. Para aplicar los datos a ciertas columnas o en cierto orden, se pueden especificar el nombre de las columnas entre paréntesis después del nombre de la columna.
También es necesario que digas en la query de donde obtendremos los datos. En este caso, nuestro archivo estaba en C:\sales2.csv.

[Esto nos causó tantos problemas por lo que relatamos arriba. Todos deben tener las mismas columnas y si no es así, lanza un error, alcanza a insertar todas las lineas hasta antes de la dio el error. El archivo lo encontramos en Internet y pudiera ser que no estaba bien formado]

A continuación un ejemplo del comando ejecutado desde la consola de CQLSH.

COPY.png

Realizar consulta a datos

Para aplicar consultas a los datos o realizar queries puede utilizarse tanto CQLSH como DevCenter.

En la siguiente imagen se puede apreciar una consulta de los datos importados en la tabla “sales” utilizando la herramienta DevCenter.

DevCenterConsulta.png

Y pum! Ya puedes conquistar el mundo!
Si me preguntan ahora si recuerdo todo esto, solo diré que una laguna borrosa se apodera de mi mente. Tal vez fue tan traumático que lo olvide. O es conocimiento que no volví a aplicar en mucho tiempo y lo olvide a cambio de cosas mas importantes, como alguna estadística tonta o la escena mas épica de Sharknado.

Espero que esto sea de ayuda :).

Referencias útiles

Datastax, Inc., CQL for Cassandra 2.x Documentation: http://www.datastax.com/documentation/cql/3.1/pdf/cql31.pdf

Apache-Cassandra, Cassandra Query Language (CQL) v3.1.7: https://cassandra.apache.org/doc/cql3/CQL.html#createKeyspaceStmt

domingo, 26 de julio de 2015

Creación de datacenter en un ambiente local de Apache Cassandra

Luego de horas y horas de invocación a los espíritus y trance… pudimos crear un data center con 2 nodos.

Si alguien pasó por lo mismo y tuvo una mejor experiencia o encontró cómo hacerlo más rápido y sin dolor, sería muy feliz si lo compartieran.

Continuando con los posts de Apache Cassandra, aca pueden ver como se instala en máquinas con sistema operativo Windows.

Antes de comenzar…
Para simular el data center, creamos dos máquinas virtuales para trabajar sobre ellas.

Variables de entorno

Antes de agregar nodos, es importante agregar/editar las siguientes variables de entorno.


  • CASSANDRA_HOME
CASSANDRA_HOME.png

  • JAVA_HOME
JAVA_HOME.png

  • Agregar Python en la variable de entorno Path.
PATH_PYTHON.png

Agregando Nodos al data center

Para este proyecto se creó un datacenter, “datacenter1” (que imaginación), un cluster “Test Cluster” y dos nodos. Para el primer nodo ó máquina A se tiene el ip 192.168.1.105. Para el segundo nodo ó máquina B se tiene el ip 192.168.1.101, pero puede utilizarse cualquier par de IP siempre y cuando estén en una red y puedan comunicarse entre ellas (cuando creaste tus máquinas virtuales, ahí les asignaste sus IP, asegurate que esten en la misma red).

Diferencia entre:
Data center: Es una colección relacionada de nodos. Puede ser virtual o físico.
Cluster: un cluster contiene uno o mas data centers. Puede estar distribuido físicamente en diferentes ubicaciones.
Nodo: aquí se guardan los datos. Es la estructura base dentro de la arquitectura de Cassandra.

Para configurar el data center con múltiples nodos solo es necesario realizar algunas modificaciones en el archivo Cassandra.yaml que se encuentra bajo el directorio de la instalación de Cassandra\conf\Cassandra.yaml, para este caso específico se encontró en:

C:\Program Files\apache-cassandra\conf\Cassandra.yaml.

Se necesita que una de las máquinas funcione como proveedor para servir como punto de contacto con  todos los nodos que se unan al data center. Para este ejemplo se designó a la máquina A, con IP 192.168.1.105, como proveedor o seed.

Configuración de la máquina A. En el archivo Cassandra.yaml hay que modificar la siguiente información.
maquinaA.png
La propiedad auto_bootstrap fue removida del archivo cassandra.yaml en esta versión de Cassandra, por lo que se tuvo que agregar manualmente.

Configuración de la máquina B. En el archivo Cassandra.yaml asegurarse de que el nombre del cluster sea el mismo que el de la máquina A, al igual que la IP de la máquina que funcionará como seed. Modificar la siguiente información.

maquinaB.png
Como siguiente paso, hay que apagar los servicios tanto en máquina A como en máquina B, para esto se va a panel de control->Herramientas administrativas->Servicios. En esta ventana hay que detener el servicio y en el Tipo de Inicio del Servicio es recomendable ponerlo de tipo manual.

servicios.png

De haber datos ya cargados, será necesario borrarlos. Para este ejemplo, los siguientes directorios ubicados en DataStax Community\data\data fueron borrados.

data.png

También hay que borrar los archivos ubicados dentro de los directorios commitlog y saved_caches. Nota: no borrar los directorios.

commitlog.png

Para iniciar el servicio hay que hacerlo directamente dando doble clic en el archivo cassandra.bat ubicado en el directorio DataStax Community\apache-cassandra\bin en cada máquina virtual.

bat.png

Posteriormente, con una ventana de command promt dirigirse al directorio /bin de Cassandra y escribir el siguiente comando para comprobar que se tienen los dos nodos en el data center:

nodetool status

dosnodos.png

También se puede comprobar con el comando: nodetool – host 192.168.105 –p  7199 ring

OpsCenter

OpsCenter es una herramienta visual que permite manejar el cluster, así como sus nodos y datos. Es gratis y viene en el paquete de instalación de DataStax Community Edition.

En OpsCenter se puede visualizar el resultado del cluster con dos nodos.
opscenter_ring.png

opscenter_overview.png

Y ya tenemos nuestro data center virtual con 2 noditos.
Piece of cake. Aja.

En el siguente post les comento como trabajar con estos nodos creando una base de datos e insertando datos.

martes, 7 de julio de 2015

Y es que cuando está nublado, el sol también te puede quemar


El otro día mi novio me dijo que iría a dar la vuelta en su bicicleta, eran las 8 de la mañana. Regresó hasta la 1  de la tarde y hecho un camarón. No se puso bloqueador solar, tampoco se acordó de que llevaba 4 horas montando en la bicicleta. Estaba nublado,  pero eso no le impidió a nuestra estrella-astro-rey mandarle radiación capaz de atravezar esas nubecillas y finalmente, provocarle quemaduras en cuello y brazos.


Camaroncin uh-ha-ha

Las quemaduras por el sol son peligrosas y exponerse por largos periodos a los rayos UV puede provocar, a la larga, cancer en la piel. Además que es super molesto quemarte: tu bronceado zanahoria tan deseado se transforma en un rojo camarón; la piel se siente caliente (toda esa radiación tiene que ir a algún lado); empieza a arder luego de un tiempo. Lo peligroso es que no te das cuenta al instante, pudieran pasar algunas horas para sentir los efectos.

Con eso de que el verano is upon us… hay que cuidarse para no pasársela con malestar y disfrutar los días soleados que nos ofrece Apolo.

Prevención


Antes de que pase, puedes evitarlo:

  • Usando bloqueador solar, dependiendo de donde te encuentres, reaplicarlo después de determinado tiempo, el sudor y el agua pueden lavarlo de tu piel.
  • No exponerse en las horas cuando el sol esta mas alto, entre medio día y las 3:00 - 4:00 de la tarde.
  • Usar sombrero, gorro, sombrilla, etc.
  • Usa lentes para sol! Los ojitos también se dañan por exponerse mucho tiempo al sol.
  • Arena, nieve y mar tambien reflejan en cierta medida los rayos del sol, así que pudieras quemarte tambien.

Pero si ya te quemaste…


  • Primerito que nada… Alejate del sol!!
  • Ya que estas en la sombra… refresca la zona afectada.
  • Tomate algo si el dolor es intenso, ibuprofeno, paracetamol, etc. lo que mas te guste y tu doctor te recomiente.
  • Usa ropa de fibras suaves, como algodón. Tendrás que guardar el cuero para después...
  • Sufre el ardor y picazón por los próximos días en lo que la piel se te cae y te hace jurar que no lo volverás hacer. Y lo volverás a hacer.

De los remedios caseros que he usado y me han funcionado, son los siguientes:
  • Aloe Vera. El remedio de las mamas y abuelitas casi casi por excelencia. Toma la pulpa y aplicala sobre la zona. Ayuda al proceso de curacion.
  • Un baño con agua fría o compresas con trapitos húmedos sobre la zona achicharrada.Eso me ha ayudado a sentir mi piel menos caliente.
  • Contrario a lo que muchos dicen, NO te pongas mantequilla ni nada grasoso. El aceite puede tapar los poros de la piel y provocar una infección.
  • Rodajas de tomate o pepino. Recuerdo que una vez mi abuelo me dijo que lo hiciera. A los minutos quedaban secos y mi piel se sentia un poco mejor.

Mas remedios caseros e información en los links a continuación


viernes, 3 de julio de 2015

Instalando DataStax Community Edition para Cassandra

Hace unos meses una amiga, Araceli C. y yo tuvimos que enfrentarnos a la tarea de instalar Apache Cassandra y simular unos nodos para una base de datos distribuida. Todo hubiera sido miel sobre hojuelas si hubiera sido algun sistema Linux o similares. Pero no, se nos ocurrió que fuera Windows. Nos hizo llorar. Así que pensé que sería bueno darle una ayudita a alguien que pueda necesitarlo, para que no pasen un tormento.

Y si me preguntan ahorita, seguramente ya no me acuerdo :)... por suerte teniamos todo documentado y me encontré con la guia hace unos días.

Ahora, esto podría funcionar para ustedes o no, así como a nosotras que fue a prueba y error.

Otra cosa, ya hay una versión mas nueva y probablemente todo lo que esta aquí no sirva. La versión que se uso de Apache Cassandra fue 2.1.0.

Que es Apache Cassandra?


Apache Cassandra es una base de datos distribuida a lo largo de varios servidores, que maneja grandes cantidades de datos estructurados. Aunque comparte muchas de las estrategias de implementación y diseño de las bases de datos,  Cassandra no soporta un modelo relacional; en su lugar, provee un modelado simple de datos que soporta control dinámico sobre el formato y disposición de los datos. Se compone de nodos en una arquitectura de estrella, donde todos los nodos tienen comunicación con los demás.


Características de Apache Cassandra


  • Escalabilidad
    • Rendimiento
    • Almacenamiento
  • Arquitectura a prueba de fallas
  • Fácil distribución de datos


Pasos de instalación.


Se nos hizo más facilito usar una distribución ya empaquetada que hacerlo manual.
La distribución que se utilizó fue la que proporciona Datastax. Esta distribución es un paquete que ya cuenta con la versión de Apache Cassandra, una herramienta para usar el lenguaje de consulta de Cassandra (CQL) y una edición gratis de DataStax OpsCenter, que se utiliza para manejar y monitorear los clusters de Cassandra.  
Existen instaladores para diferentes versiones de Linux y Windows, que pueden encontrarse en la página de Planet Cassandra.


Prerrequisitos de instalación


Los prerrequisitos que se necesitan para instal la máquina de Windows son:

  • Windows 7 ó Windows 2008 server,
  • Java,
  • Navegador Firefox o Chrome para DataStax OpsCenter (que no soporta Internet Explorer aún),
  • Existe una dependencia en el Visual C ++ 2008 en tiempo de ejecución (32 bits), pero Windows 7 y Windows 2008 Server R2 lo tiene ya instalado.


Instalación


Una vez que se descargue el archivo instalador, en esta ocasión para las version Windows 7 de 64 bits, se procede a instalarlo. Dando doble click en el archivo de extensión .msi, extraerá y correrá el ejecutable de instalación.

Hasta este punto, puro Next > Next > Next...

Luego de varias pruebas, llegamos a la conclusión de que para hacer funcionar los nodos, fue necesario que el servicio de Cassandra fuera puesto en modo manual. De manera que en este paso deberá deseleccionarse la opción que indica que el servicio de Cassandra inicie automáticamente. Magic!

c4.png
Fuente: Elaboración propia.

Y dale fuego! Que inicie la instalación.


Cuando esté completa, te preguntará si deseas iniciar OpsCenter. Dile que si… o no. Recuerda que IE no lo soporta.


c8.png
Fuente: Elaboración propia.

Esto es solo la instalación con un solo nodo, pero que caso tiene tener un sistema distribuido si no está distribuido. En otro post les hablaré sobre la creación de los nodos. 

Algunas referencias útiles. 

Download DataStax Community Edition — Apache Cassandra.   http://planetcassandra.org/cassandra/
Getting Started with Apache Cassandra on Windows the Easy Way http://www.datastax.com/2012/01/getting-started-with-apache-cassandra-on-windows-the-easy-way