12db

43
uc UNIVERSIDAD DE CANTABRIA Bases de Datos Avanzadas Bases de datos NoSQL Parte III: Práctica sobre Apache Cassandra

Upload: sulender1

Post on 13-Apr-2015

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 12DB

ucUNIVERSIDAD DE CANTABRIA

Bases de Datos Avanzadas

Bases de datos NoSQL

Parte III: Práctica sobre Apache Cassandra

Page 2: 12DB

Roberto Amor Marcos

Page 3: 12DB

Contenidos

• Requisitos y material

• Instalación

• El framework Easy-Cassandra

• Bibliografía

Page 4: 12DB

Requisitos y material

• Elementos necesarios para realizar la práctica:

• Java 1.6 o 1.7 (Java JDK 6 o 7)• http://www.oracle.com/technetwork/java/javase/downloads/index.html

• Apache Cassandra 1.0.6-bin (no usar 1.0.8!!! bug en

Windows)• http://archive.apache.org/dist/cassandra/1.0.6/apache-cassandra-1.0.6-bin.tar.gz

• XAMMP for Windows (u otro gestor que incluya

Apache WebServer) - Opcional (necesario para Cassandra Cluster Admin)• http://www.apachefriends.org/en/xampp-windows.html

• Cassandra Cluster Admin - Opcional pero

recomendado• https://github.com/sebgiroux/Cassandra-Cluster-Admin/zipball/master

Page 5: 12DB

• Eclipse• http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/indigosr2

• Easy-Cassandra with Dependences

• https://github.com/downloads/otaviojava/Easy-Cassandra/EasyCassandra-1.0.8-With_Depencence.rar

Page 6: 12DB

Instalación

• Una vez instalada la última versión de Java JDK hay que añadir una variable de entorno con el JAVA_HOME.

Propiedades del sistema

Restaurar sistema Actualizacionesautomáticas Remoto

General Nombrede equipo Hardware f.·.·.·.·...·.g·.é.~.?. ~.~.~·.·.~.~.~.~.~~ª·~·~.·.·.·.·.·JDebe iniciarla sesión como un Administradopr ara hacer la mayoríade los cambios.Rendimiento--==============-===="""""===11

Efectos visuales, programacióndel procesador, uso de memoriaymemoriavirtual

~onfiguración

Perfilesde usuario---------------------..,

Configuarción del escritoriorelacionada con su iniciode sesión

C.Qnfigaucrión

Inicioy recuperación---------------------,'

Iniciode sistema, errorde sistema e informaciónde depuración

Configuarción

'Y.. ariablesde entorno informede errores

Aceptar Cancelar

WinXP : Propiedades de MiPC

Page 7: 12DB

---

Instalación• Panel de control • • Sistema

• Una vez instalada la última versión de Java JDK hay que añadir

entana principal del Panel de ropiedades de i e

una vconatrorl

iable de entorno con el JAVA_HOME.

dministrador de dispositi os

Configuración de cceso

1I Nombre de equipoOpciones avanzadas l Protección del

sistema

Hard 'are

J Acceso remoto

remoto

Protección del sistema

Configuración avanzada del sistema

Para realizar la mayoría de estos cambios. inicie sesión como administrador.

Rendimiento

8edos visuales. programación del procesador. uso de memoriaymemoriavirtual

[ Configuración... ]

Perfilesde usuario

Configuración del escritorio correspondiente al inicio de sesión

Configuración...

Inicio y recuperación

Inicio del sistema. errores del sistema e información de depuración

,80 GHz

Win7 : Propiedades de Equipo >

Configuración

avanzada

Page 8: 12DB

del sistemaConfiguración...

Variables de entomo

...

eptar )! Cancelar )! rcar

le para esta pantalla

Page 9: 12DB

Instalación

• Una vez instalada la última versión de Java JDK hay que añadir una variable de entorno con el JAVA_HOME.

Variables de entorno

Variables de usueno para Jorge Ruiz

Variable TEMP TMP

--~ ValorC: \Documents end Settings\Jorge RUiz\ . C: \Documents end Settings\Jorge Ruiz\ .

Mueva Modificar Eliminar

Variables del ~istema

Variable Valor

Nur'''1BER OF F'", 2OSPathPATHEXT PROCESSOR_A ...

Windows_NTC :\WINDOWS\system32;C: \ WINDOWS j .••

.COM; .EXEj •BAT; .CMDj •VBSj •VBEj •JS; ....x86

Nuey_a MOQificar ~liminar

Aceptar Cancelar

Page 10: 12DB

Instalación

• Una vez instalada la última versión de Java JDK hay que añadir una variable de entorno con el JAVA_HOME.

Nueva variable del sistema ?

Mombre de variable:

~alor de variable:

JAVA_HOME

C:\Archivos de programa \Jav a\jdk1. 6.

0_1E Aceptar Cancelar

Normalmente instalado en C:\Archivos de programa\Java\jdk1.

{version}.0_{revision}

Page 11: 12DB

Instalación

• Una vez instalada la última versión de Java JDK hay que añadir una variable de entorno con el JAVA_HOME.

Probar la definición de la variable desde el cmd echo %JAVA_HOME%

Page 12: 12DB

Instalación

• Descomprimir Cassandra en C:\Cassandra

• Abrir C:\Cassandra/conf/cassandra.yaml

• Reconfigurar la ruta de data_file_directories,commitlog_directory y saved_caches_directory

• Abrir C:\Cassandra/conf/cassandra-env.sh

• Reducir el tamaño del HEAP de Java por (y descomentar la línea!!):

• MAX_HEAP_SIZE=”1GB”

• HEAP_NEWSIZE=”800MB”

Page 13: 12DB

eornmi

saved cac es_direc-ory: C:\Cassa dra/saved

Instalación

• Descomprimir Cassandra en C:\Cassandra

• Abrir C:\Cassandra/conf/cassandra.yaml

t See ://wi·i.a,ac e org/cassandra/Opera ions tor more o

• Reconfigaur

iraiornelras arud

tao edn

eseldecaitona._file_directories,par i ioner~ org a ac.e.cassandra.d ~.RandomPar i~ioner

commitdlireoc

gor_ieds

ire

ree

cCatssaond

rraysyo

sIdasvoree

dda_acoacdihs.es_directoryda a file diree ories·

- C. Cassa dra/da a

• Abrir C:\Cassandra/conf/cassandra-env.shcornmiIog_diree ory. C:\Cassandra/cornmi 10g

• Reducirsaeveldtcaame.esaño del HEAP de Java por (y descomentar la línea!!):

• MAX_HEAP_SIZE=”1GB”

Page 14: 12DB

• HEAP_NEWSIZE=”800MB”

Page 15: 12DB

Instalación

• Desde el cmd ir a la ruta C:\Cassandra/bin y ejecutar:

• cassandra -f

Page 16: 12DB

Instalación

• Desde el cmd ir a la ruta C:\Cassandra/bin y ejecutar:

• cassandra -fAdm' istrador. C:

Page 17: 12DB

Instalación

• Una vez conectados crear un keyspace de prueba

con:

• create keyspace practicaCassandra;

• Y asignar la conexión actual al nuevo keyspace:

• use practicaCassandra;drni istradon C: .e e - cessendra-c i -h localhost -p 9160

Page 18: 12DB

Instalación

• XAMPP normalmente se instala en C:\XAMPP

• Crear una carpeta dentro de C:\XAMPP\htdocs (esta es la carpeta de los ficheros web) llamada cca

•Descomprimir el contenido de sebgiroux-Cassandra- Cluster-Admin en cca

•Activar el servidor Apache desde el Panel de

Control deXAMPP

Page 19: 12DB

• Probar la instalación accediendo desde el

navegador:

•http ://lo calhost /c ca

Page 20: 12DB

Modules

Instalación

• XAMPP normalmente se instala en C:\XAMPPXA PPCo trol Panel Applicatio l

Crear una carpeta dentro de C:\XAMPP\htdocs (esta es

XAMPP Control Panel Service... I I SCM...

la carpeta de los ficheros web) llamada ccaStatus

[JSvc Apache Running Stop I ! Refresh

• Descomprim[]iS

rvc

el cfVo1yS

nql

tenidoStart

dIeIsebgiExp

rloreo...

ux-Cassandra-

[JSvc FileZilla Start I I Help

Cluster-AdLJsmvc inMercuery n cca Start I I dmin ..• 1 Exit

DSvc Tomcat Start ) I dmin ..• )

• Activar el serXAvMPPidConotrorl

Apearscio

hn 2e_5 d(1

6e_s~adrch,e20e11)l Panel de

Control deXAMPP

lindows 6_1 Build 600 Plat=orm 2Current irectory: c: xampp Install(er) Jirectory: c: xa~~p Status Check KBusy _

Apache started [Part 80]

Page 21: 12DB

• Probar la instalación accediendo desde el

navegador:

• http ://lo calhost /c ca

Page 22: 12DB

• XAMPP normalmente se instala en C:\

Instalación

~ ~ Disco local (C:) ~ xampp ~ htdocs ~ cca ~

en biblioteca ,., Compartir con ,., Grabar Nueva carpetaA

Nombre Fecha de modifica ... Tipo Tamaño

• Crear unacsscarpeta dentro d29/0e3/201C216::37\XACarpeMta de ParchPivos \htdocs (esta es

helper 29/03/2012 16:37 Carpeta de archivosla carpetaImdg

s

e los ficheros w29 0e3/2b012)16:3l7 lamCarpaeta dde aarchivcos ca

inelude 29,03/201216:37 Carpeta de archivos

JS 29/03/2012 16:37 Carpeta de archivos

• Descomprvieiw

ms

ir el contenid29o/03/2d012e16:

3s7

ebCar

pgeta

ide arrchiovos ux-Cassandra-

AUTHORS 29/03 '2012 16:37 Archivo 1 KB

Cluster-elusAter_idnfo.pmhp in en cca29/03/201216:37 Archivo PHP 1 8

col u m nfam ily_acti o n. ph p 29,03/201216:37 rchivo PHP 30 KB

counters.php 29 '03/201216:37 rchivo PHP 2 KB

• Activar eldesscreibe_rcovlumnifadmilyo.phpr Apach2e9/03d/201e216s:37de Aerchli 'oPPHaP

nel de3

KCaontrol de

Page 23: 12DB

XAMPP

d esc rib e_keysp a c e. ph p 29/03/201216:37 rchi 'o PHP 3 a

index.php 29/03/2012 16:37 rchivo PHP 2 Ka

jmx.php 29/03/201216:37 Archivo PHP 7

KB keyspace_action.php 29/03 ''201216:37 rchivo PHP 12

Ka

UCENSE 29/03/201216:37 Archivo 2 a

Page 24: 12DB

• Probar la ilongin.pshptalación acced29,i03e/20n1216d:37o drechisvo

dPHPe el nav1 Ke8

logout.php 29/03/201216:37

Page 25: 12DB

rchi o PHP 1 KB

README.mkd 29 03/201216:37 rchivo MKD 5 Ka

• http://localhost/ccagador:

Page 26: 12DB

• Crear una carpeta dentro de C:\XAMPP\htdocs

Instalación~ Cassandra Cluster Admin x (i) start_sample_easycassandra . otavioja... (i)

Cassandra Cluster Admin

• XAMPP normalmente se instala en C:\XAMPP

Cluster Name= Test Cluster

Cluster Partitioner: org.apache.cassandra.dht.RandomPartitionerCluster Snitch: org.apache.cassandra.locator.SimpleSnitchThrift API Version: 19.1 9.0

la carpeta de SlchoemasVersfiion:c2fhee79e70-7rdao1-11s

[o

ew1-0000e-24b2d5)0cf1llfadd mada cca

• DescomprimKieyrspaecels

acndoConlumtneFnamiilieds

• ¡avabahia

o de sebgiroux-Cassandra-

Cluster-Admio

pnerson

en ccao Nodeldlnfoo Versionso Indexlnfo

• Activar el servido Sochemra Apache desde el Panel de Control deXAMP P

Page 27: 12DB

• See

o Migrationso locationlnfoo HintsColumnFamily

• praaicaCassandra

• DEMOo Userso person

• prueba

• Probar la instalao Ucseir ón accediendo desde el navegador:o User2

JMX

• http://localhost/cca

Page 28: 12DB

Instalación

• Descomprimir donde se quiera todos los .jar contenidos en el .rar de “Easy-Cassandra with Dependences”

•En Eclipse crear un nuevo proyecto Java y añadir todas las librerías descomprimidas desde:

• Build Path>Configure BuildPath...>Libraries>Add External JARs...

Page 29: 12DB

Easy-Cassandra

• Easy-Cassandra es un framework para

trabajar conCassandra desde el lenguaje de alto nivel Java.

•Aprovecha las propiedades orientadas a objetos de Java para relacionar clase con ColumnFamily.

•Cada clase se corresponde con una familia de columnas.

•Cada atributo se corresponde con una

columna.

Page 30: 12DB

•Un atributo especial se declara como KEY

paraCassadra.

Page 31: 12DB

Easy-Cassandra

•Para una correcta sincronización entre los tipos de dato string (UTF-8 o Hexadecimal) hay que indicar a Cassandra cómo queremos que estén codificadasnuestras familias de columnas.

create column family GroupInvitation with comparator = UTF8Type andcolumn_metadata = [{column_name: iduser, validation_class: UTF8Type},{column_name: idgroup, validation_class: UTF8Type},{column_name: text, validation_class: UTF8Type},{column_name: created, validation_class: UTF8Type}];

Page 32: 12DB

Easy-Cassandra

•Se utilizan metadatos o anotaciones en las clases Java a las que se van a dar persistencia.

@ColumnFamilyValue(name = "Persona")public class Persona implements Serializable {...}

@ColumnValue(name = "edad") •private Integer edad;

@IndexValue@ColumnValue(name = "nombre")private String nombre;

@KeyValue(auto=false) I

private Long id;

Page 33: 12DB

Easy-Cassandra

• Para obtener una conexión hacia la base de datos hay que crear un enlace mediante la clase Persistence

Persistence persistence;persistence = EasyCassandraManager.getPersistence("keyspace", "localhost", 9160);

Page 34: 12DB

boolean success persistence.insert(object);

boolean success persistence.delete(object);

boolean success persistence.deleteByKeyValue(rowKey,

Easy-Cassandra

•Una vez realizada la conexión, el objeto persistance ofrece los siguientes métodos para la manipulación de los datos.

=

=

=Persona.class);

b~o-ol-e-an--su-cc-e-ss--= -p-er-s-is-te-n-ce-.-up-d-at-e(-o-bj-e-ct-)-; ------~l

Comandos de actualización

Page 35: 12DB

Easy-Cassandra

•Una vez realizada la conexión, el objeto persistance ofrece los siguientes métodos para la manipulación de los datos.

List<Persona> list =persistence.findAll(Persona.class); List<Persona> list =persistence.findAll(Persona.class, 15000);

Persona result=(Persona)persistence.findByKey(idValue, Persona.class);

List<Persona> list=persistence.findByKeyIn(Persona.class,1,4,8);

Long numberOfRow=persistence.count(Persona.class);-- -- -- -----

Comandos de consulta

Page 36: 12DB

Easy-Cassandra

• Easy-Cassandra ofrece un segundo modo de manipulación de los datos en Cassandra: ejecutando directamente sentencias CQL.

• Pueden realizarse de manera independiente a la estructura de objetos de la aplicación.

• Pueden aparecer algunos problemas entre los

tipos string.

boolean persistence.executeUpdateCql(String query);

Page 37: 12DB

, \List<Map<String, String>> result=persistence.executeCql(String SelectQuery);

--- ----- -

- -

Page 38: 12DB

Referencias

http://cloud.github.com/downloads/otaviojava/Easy-Cassandra/UserGuide-EasyCassandra_002.pdf - Easy-Cassandra UserGuide.