viernes, junio 28, 2013

Notas rápidas de la instalación de Apache Cassandra en MacOS X

Cassandra es una base de datos NoSQL diseñada para trabajar de manera distribuida y manejar grandes cantidades de datos. Su diseño tolerante a fallos y la escalabilidad son dos de sus puntos fuertes.

Los requisitos necesarios para poder instalar este programa en MacOS X son los siguientes:

  • Una cuenta de usuario sobre la cual se va a ejecutar. En este caso,se va a suponer que existe una cuenta de usuario estándar, sin privilegios especiales llamada cassadmin
  • Tener instalada el Java Runtime Enviroment en MacOS X. Normalmente,se ha usado el que suministra Apple1 (al menos en Mac OS X Lion que es donde se han hecho las pruebas). Se puede comprobar que versión se tiene del JRE con la siguiente orden:
    swordcoast:~ terron$ java -version
    java version "1.6.0_51"
    Java(TM) SE Runtime Environment (build 1.6.0_51-b11-456-11M4508)
    Java HotSpot(TM) 64-Bit Server VM (build 20.51-b01-456, mixed mode)
    
  • Tener la posibilidad de bloquear en RAM la suficiente cantidad de memoria sin que su contenido sea paginado por el sistema. Los sistemas operativos actuales utilizan un espacio de direcciones virtuales, paginando a disco páginas cuando necesitan liberar RAM para otros procesos. Se le puede indicar al sistema que ciertas regiones de memoria no puedan paginarse y estén siempre en RAM. Sin embargo, para evitar abusos, esta cantidad suele estar limitada. Puede comprobarse su valor en la shell bash con la orden ulimit:
    swordcoast:~ terron$ ulimit -l
    unlimited
    
    En MacOS X esta cantidad no está limitada, sin embargo, en otros sistemas si. Por ejemplo, en Debian está limitado a 64 Kbytes. En este caso sería necesario añadir un fichero que modificara el comportamiento del usuario que utiliza Cassandra para ejecutarse para que pueda bloquear toda la memoria que quiera.
  • Tener instalado Java Native Access, una serie de clases Java, que permiten el acceso sencillo a librerías dinámicas del sistema sin necesidad de usar JNI. Estas clases Java pueden bajarse empaquetadas en un fichero jar desde jna, el repositorio
  • . En este caso se ha usado la versión 3.5.2, compuesta por los ficheros jna-3.5.2jar (sha1 f1bf9fe267e17c1a8f7d1aa2c985e7fe81a06da6 ) y platform-3.5.2.jar (sha1 beac07d13858ef3697ceeab43897d70aeb5113c9 )
  • La versión binaria de Cassandra, bajada de la página del proyecto. En este caso se ha usado el fichero apache-cassandra-1.2.6-bin.tar.gz (sha1 25b9c63eb33c3ce483390e6edab4a5d1bb95eb4c ). En este caso existe una firma GPG que se puede verificar (keyid 2B5C1B00)

Una vez que se ha descargado todo el software, se va al directorio raíz del usuario que va a ejecutar Cassandra (se va a suponer que es /Users/cassadmin) s para crear la estructura de directorios que utiliza se va a usar y descomprimir el software:

cd /Users/cassadmin
mkdir -p logs/cassandra
mkdir -p lib/cassandra/{data,commitlog,saved_caches}
tar zxvf apache-cassandra-1.2.6-bin.tar.gz
ln -s apache-cassandra-1.2.6 cassandra
cp jna-3.5.2.jar platform-3.5.2.jar cassandra/lib/

  • El directorio donde se va a guardar los ficheros de logs que genere la base de datos será /Users/cassadmin/logs/cassandra
  • El directorio donde se va a almacenar los datos y que utilizará para trabajar la base de datos será /Users/cassadmin/lib/cassandra. La sintaxis empleada funciona con la shell bash.
  • El enlace simbólico se crea para hacer más sencillo el uso de varias versiones del producto.
  • Se copian los ficheros de clases del JNA al directorio lib de cassandra para que el sistema pueda encontrarlos.

Configurar la base de datos para que utilice la estructura de directorios que se ha creado. Se edita el fichero /Users/cassadmin/cassandra/conf/cassandra.yaml y se cambian los siguientes parámetros para usar la estructura de directorios creada

data_file_directories:
- /Users/cassadmin/lib/cassandra/data
commitlog_directory: /var/lib/cassandra/commitlog
data_file_directories:
- /Users/cassadmin/lib/cassandra/data
# commit log
commitlog_directory: /Users/cassadmin/lib/cassandra/commitlog
saved_caches_directory: /Users/cassadmin/lib/cassandra/saved_caches

Configurar el log4j para que almacene los registros en el directorios que interesa. Para ello se editar el fichero /Users/cassadmin/tmp/cassandra/conf/log4j-server.properties para modificar la propiedad que apunta al fichero de registro del sistema:

log4j.appender.R.File=/Users/cassadmin/log/cassandra/system.log

Por último se arranca el programa con la orden:

cassandra/bin/cassandra -f
Este último comando supone que estamos en el directorio $HOME del usuario cassadmin. El parámetro -f hace que el programa permanezca en primer plano para poder ver los errores que genere al escribir los mismos a la consola.

Notas

  1. Se puede bajar la versión que interese utilizar del Java Runtime Enviroment (JRE) desde Java.com. Ajustando las variables PATH y JAVA_HOME se puede seleccionar la versión del JRE a usar de las instaladas.

Technorati Tags: ,,

No hay comentarios: