PDF de programación - Taller Apache Cassandra

Imágen de pdf Taller Apache Cassandra

Taller Apache Cassandragráfica de visualizaciones

Publicado el 9 de Octubre del 2018
1.291 visualizaciones desde el 9 de Octubre del 2018
1,1 MB
29 paginas
Creado hace 10a (17/07/2013)
Taller Apache Cassandra
Curso Big Data

David Martínez Casas
[email protected]
Centro Singular de Investigación en Tecnoloxías da Información
UNIVERSIDADE DE SANTIAGO DE COMPOSTELA

citius.usc.es

Índice

Introducción a Cassandra
Modelo de datos
Instalación y configuración
Cassandra command line interface
CQL 3 (Cassandra Query Language)
Clientes Cassandra: kundera
Ejemplos
Cluster multinodo

2

Que es Apache Cassandra

Introducción

 Apache Cassandra es un motor de bases de datos NoSQL, Open

Source e implementado en Java.

 Fue originalmente creada por Facebook y donada a Apache como

software libre en 2009.

 Es una de las base de datos NoSQL más relevantes a nivel mundial:
Netflix, eBay, Twitter, Urban Airship, Constant Contact, Reddit, Cisco,
OpenX, Digg, CloudKick, Ooyala, …

 Cassandra puede manejar varios terabytes de datos si lo necesita y

puede, fácilmente, manejar millones de ficheros, incluso en un clúster
pequeño (Big Data).

 La información en las bases de datos relacionales, se almacenan en

forma de filas, pero en Cassandra la información se almacena en
columnas con pares key-value.

3

Características de Cassandra I

Introducción

 Esquema dinámico. El esquema que define la estructura de los datos

puede cambiar en tiempo de ejecución.

 No hay un único punto de fallo. Los datos se replican automáticamente

a varios nodos. Perder un nodo no causa la baja del clúster.

 Alta disponibilidad. Los datos estás disponibles la mayor parte del

tiempo gracias a la redundancia que introduce la replicación de datos.
 Particionamiento de los datos. La topología de Cassandra es la de un
anillo a través del cual se distribuyen los datos para minimizar cuellos
de botella en el acceso a los mismos.

 Escalabilidad horizontal. Hasta un alto número de máquinas la
capacidad de cómputo aumenta linealmente con el número de
máquinas.

 Capacidad para manejar cientos de gigabytes de datos.

4

Características de Cassandra II

Introducción

 Soporte profesional: varias empresas dan soporte y construyen

productos sobre Cassandra: Datastax, Acunu, …

5

Terminología de Cassandra

Modelo

 Column. Es la unidad mas básica en el modelo de datos de

Cassandra. Una column es un triplete de un key (un nombre) un value
(un valor) y un timestamp. Los valores son todos suministrados por el
cliente. El tipo de dato del key y el value son matrices de bytes de Java,
el tipo de dato del timestamp es un long primitive.
 Las column son inmutables para evitar problemas de multithreading.
 Las column se organizan dentro de las columns families.
 Las column se ordenan por un tipo, que pueden ser uno de los

siguientes:
 AsciiType
 BytesType
 LongType
 TimeUUIDType
 UTF8Type

6

Terminología de Cassandra

Modelo

 SuperColumn. Es una column cuyos values son una o más columns,
que en este contexto se llamaran subcolumns. Las subcolumns están
ordenadas, y el numero de columnas que se puede definir es ilimitada.
Las Super columns, a diferencias de las columns, no tienen un
timestamp definido.

 Column Family. Es mas o menos análogo a una tabla en un modelo
relacional. Se trata de un contenedor para una colección ordenada de
columns. Cada column family se almacena en un archivo separado

 Keyspace. Es el contenedor para las column family. Es mas o menos

análogo a una base de datos en un modelo relacional, usado en
Cassandra para separar aplicaciones. Un keyspace es una colección
ordenada de columns family.

 Clúster. Conjunto de máquinas que dan soporte a Cassandra y son

vistas por los clientes como una única máquina.

7

Modelo de datos

Modelo

8

Modelo de datos

Modelo

9

Relaciones

Modelo

Entidad

 People: {

John Dow: {
twitter: jdow,
email: [email protected],
bio: bla bla bla,
...
},

}

One to one
 People: {

John Dow: {
twitter: jdow,
email: [email protected],
bio: bla bla bla,
marriedTo: Mary Kay,
...
},
Mary Kay: {
marriedTo: John Dow,
...
},
...

People

John
Dow

Twitter

Email

bio

Jdow

jdow@ Bla, bla





}

10

Relaciones

Modelo

One to many
 Children: {

John Dow: {
01/18/1976: John Dow Jr,
05/27/1982: Kate Dow
},
...

 People: {

John Dow Jr: {
father: John Dow,
...
},
...

}

}

Many to many
 Friendship: {
John Dow: {
10: Mark Seldon,
8: Julian Hendrix,
...
},
Mark Seldon: {
9: John Dow,
...
},
...

}

11

Descargar e instalar

Instalación

 Se obtiene la última versión de Apache Cassandra (actualmente 1.2.6)

de http://cassandra.apache.org/download/

 Se descarga al ordenador y se descomprime dentro de un directorio:

 tar xvf apache-cassandra-1.2.6-bin.tar.gz
 Se modifica el fichero de configuracion:
 <cassandra_path>/conf/cassandra.yaml

listen_address. Por defecto localhost
rpc_address. Por defecto localhost en el puerto 9160
data_file_directories. Permisos de escritura
commitlog_directory. Permisos de escritura
saved_caches_directory. Permisos de escritura

 Se necesita Java instalado (1.5+).
 Se ejecuta el script de inicio:

 <cassandra_path>/bin/cassandra.sh
 “Startup completed! Now serving reads.”

12

̶
̶
̶
̶
̶
Cassandra-cli

Introducción

 <cassandra-path>/bin/cassandra-cli –host localhost –port 9160

 Nos permite conectarnos a un nodo de un cluster. Por defecto se conecta a

localhost:9160.

 Principales comandos:

 help
 connect
 create/drop keyspace <keyspace_name>
 use <keyspace_name>
 create/drop column family <column_family>
 set
 get
 list
 update
 truncate
 show

13

Cassandra-cli

Introducción

 CREATE KEYSPACE demo;
 USE demo;
 CREATE COLUMN FAMILY users

WITH comparator = UTF8Type
AND key_validation_class=UTF8Type
AND column_metadata = [
{column_name: full_name, validation_class: UTF8Type}
{column_name: email, validation_class: UTF8Type}
{column_name: state, validation_class: UTF8Type}
{column_name: gender, validation_class: UTF8Type}
{column_name: birth_year, validation_class: LongType}
];

 CREATE COLUMN FAMILY blog_entry

WITH comparator = TimeUUIDType
AND key_validation_class=UTF8Type
AND default_validation_class = UTF8Type;

14

Cassandra-cli

Introducción

 SET users['A']['full_name']='Robert Jones';
 SET users['A']['email']='[email protected]';
 SET users['A']['state']='TX';
 SET users['A']['gender']='M';
 SET users['A']['birth_year']='1975';

 SET users['B']['full_name']='Cathy Smith';
 SET users['B']['state']='CA';
 SET users['B']['gender']='F';
 SET users['B']['birth_year']='1969';

 SET blog_entry['user'][timeuuid()] = 'I love my new shoes!';

 LIST users;
 LIST blog_entry;

15

Cassandra-cli

Introducción

 CREATE COLUMN FAMILY page_view_counts

WITH default_validation_class=CounterColumnType
AND key_validation_class=UTF8Type AND comparator=UTF8Type;

 INCR page_view_counts['www.datastax.com'][home] BY 1;
 LIST page_view_counts;

 GET users[utf8('A')][utf8('full_name')];
 UPDATE COLUMN FAMILY users WITH comparator = UTF8Type

AND column_metadata =
[{column_name: birth_year,
validation_class: LongType,
index_type: KEYS
}
];

 GET users WHERE birth_year = 1969;

16

Cassandra-cli

Introducción

 DEL users [‘B’][‘gender’];
 GET users [‘B’];
 DEL users [‘B’];
 DROP COLUMN FAMILY users;
 DROP COLUMN FAMILY blog_entry;
 CREATE COLUMN FAMILY SuperExample with column_type = Super

AND comparator= UTF8Type AND subcomparator = UTF8Type;

 SET SuperExample[utf8('Key1')]['A']['B']=utf8('Valor1');
 SET SuperExample[utf8('Key1')]['A']['C']=utf8('Valor2');
 DROP KEYSPACE demo;

17

CQL3

Introducción

 Cassandra Query Language
 <cassandra_path>/bin/cqlsh =>consola de línea de comandos realizada en

Python para interactuar de forma similar a los sistemas SQL.

 CREATE KEYSPACE demo WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1} ;
 USE demo ;
 CREATE TABLE users(user_name varchar PRIMARY KEY ,

password varchar ,gender varchar ,
state varchar , birth_year bigint );

 CREATE TABLE emp ( empID int, deptID int,

first_name varchar, last_name varchar,
PRIMARY KEY (empID, deptID));

 INSERT INTO emp (empID, deptID, first_name, last_name) VALUES (104, 15, 'jane', 'smith');
 INSERT INTO emp (empID, deptID, first_name, last_name) VALUES (105, 16, 'john', 'smith');

 SELECT * FROM emp;

18

TTL & WriteTime

 CREATE TABLE clicks ( userid int, url text,

date timestamp, name text, PRIMARY KEY (userid, url));

 INSERT INTO clicks ( userid, url, date, name)

VALUES ( 1, 'http://apache.org', '2013-10-09', 'Mary')
USING TTL 50;

 SELECT TTL (name) from clicks

WHERE url = 'http://apache.org' ALLOW FILTERING;

 INSERT INTO clicks (

userid, url, date, name)
VALUES (2,'http://google.com‘, '2013-10-11', 'Bob’);

 SELECT WRITETIME (date) FROM clicks WHERE url = 'http://google.com' ALLOW

FILTERING;

19

Set & List

 CREATE TABLE users ( user_id text PRIMARY KEY, first_name text,
 last_name text, emails set<text>);
 INSERT INTO users (user_id, first_name, last_name, emails) VALUES('frodo', 'Frodo', 'Baggins',

{'[email protected]', '[email protected]'});

 UPDATE users SET emails = emails + {'[email protected]'} WHERE user_id = 'frodo';
 DELETE emails FROM users WHERE user_id = 'frodo';

 ALTER TABLE users ADD top_places list<text>;
 UPDATE users

SET top_places = [ 'rivendell', 'rohan' ] WHERE user_id = 'frodo';

 UPDATE users

SET top_places = [ 'the shire' ] + top_places WHERE user_id = 'frodo';

 UPDATE users

SET top_places = top_places + [ 'mordor' ] WHERE user_id = 'frodo';
 UPDATE users SET top_places[2] = 'riddermark' WHERE user_id = 'frodo';
 SELECT user_id, top_places FROM users WHERE user_id = 'frodo';
 DELETE top_places[3] FROM users WHERE user_id = 'frodo';

20

Map

 ALTER TABLE users ADD todo map<timestamp, text>;
 INSERT INTO users (user_id, todo)

VALUES ( 'frodo',{ '2013-9-22 12:01' : 'birthday wishes to Bilbo',
'2013-10-1 18:00' : 'Check into Inn of Prancing Pony' });

 SELECT user_id, todo FROM users WHERE user_id = 'frodo';
 UPDATE users

SET to
  • Links de descarga
http://lwp-l.com/pdf13804

Comentarios de: Taller Apache Cassandra (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad