2017 05 Apache Cassandra

Universidad Simón Bolívar Departamento de Computación y Tecnología de la Información Ingeniería de Software II - (CI4712

Views 88 Downloads 0 File size 359KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Universidad Simón Bolívar Departamento de Computación y Tecnología de la Información Ingeniería de Software II - (CI4712)

Apache Cassandra Prof. Ascander Suárez

Alejandra Cordero / 12-10645 Pablo Maldonado / 12-10561

Noviembre, 2017

CONTENIDOS ● ● ● ● ● ● ● ●

Introducción - ¿Qué es Apache Cassandra? Casos en los que se usa Apache Cassandra. Caso de estudio - Spotify. Arquitectura. Funcionalidades principales de CQL. Instalación. Demostración. Conclusiones.

INTRODUCCIÓN ¿QUÉ ES APACHE CASSANDRA? ●

Sistema de Gestión de Bases de Datos NoSQL. ○ Distribuido ■ Puede correr en distintas máquinas mientras que es presentado a los usuarios como un sistema único. ○ Descentralizado ■ Todos los nodos del sistema son considerados como iguales. ○ Escalable elásticamente - Horizontal ■ Se pueden agregar o eliminar nodos sin comprometer el funcionamiento del sistema.

INTRODUCCIÓN ¿QUÉ ES APACHE CASSANDRA? ●

Sistema de Gestión de Bases de Datos NoSQL. ○ Altamente disponible y Tolerante a fallos ■ No existe lo que se conoce como un “Punto único de fallo”. ○ Código abierto ■ Fue creado en Facebook para mejorar la búsqueda de mensajes en la bandeja de entrada. ■ Publicado en 2008 como un proyecto de código abierto en Google Code. ■ En marzo de 2009 fue incluido en Apache Incubatorpara luego formar parte de la Apache Software Foundation.

INTRODUCCIÓN ¿QUÉ ES APACHE CASSANDRA? ●

Sistema de Gestión de Bases de Datos NoSQL. ○ Orientado a “columnas” ■ Hace referencia a la forma en la que se almacenan los datos en cuanto al número “flexible” de columnas para cada “fila” en la Base de Datos. ■ Se verá en detalle más adelante. ○ “Libre” de esquemas ■ Se define un keyspace para las familias de columnas. ○ Consistencia ajustable ■ Nivel de consistencia.

CASOS EN LOS QUE SE USA APACHE CASSANDRA ●

Aplicaciones para Grandes Volúmenes de Datos ■ Análisis de datos en tiempo real. ■ Sistemas que involucren escritura intensiva de datos. ■ Análisis y consumo de datos en dispositivos de alta velocidad. ■ Carga de trabajo de grandes volúmenes de datos en tiempo real.

CASOS EN LOS QUE SE USA APACHE CASSANDRA ●

Algunos ejemplos ○ Juegos en línea ■ Mensajería instantánea. ○ Redes sociales ■ Creación y análisis de datos no estructurados. ○ Gestión de aplicaciones de streaming ■ Música, películas. ○ Comercio en lína ■ Transacciones de los usuarios, carritos de compra.

CASO DE ESTUDIO - SPOTIFY ● ● ● ●

Servicio de música por streaming de origen Sueco. Se contabilizan más de 24 millones de canciones disponibles en el sitio. 40 millones de usuarios activos al mes. En sus inicios: ○ Manejo de información con una Base de Datos Relacional en PostgreSQL. ○ Problemas de rendimiento y de escalabilidad.

CASO DE ESTUDIO - SPOTIFY ●

Retos ○ Escalabilidad limitada entre data centers y zonas geográficas. ○ Un sistema relacional no garantiza el 100% de disponibilidad del servicio de streaming. ○ Dificultad para analizar grandes volúmenes de datos.

CASO DE ESTUDIO - SPOTIFY ●

Solución ○ Apache Cassandra para almacenar: ■ Catálogo de productos. ■ Listas de reproducción, estaciones de radio, notificaciones. ■ Listas personalizadas de artistas ■ Entre otros. ○ Replicación de datos en múltiples data centers sin un punto único de falla para disponibilidad al 100%. ○ Integración con Apache Spark para procesamiento de datos y de analíticas en tiempo real.

CASO DE ESTUDIO - SPOTIFY ●

Resultados ○ Más de 1.5 billones de listas de reproducción creadas y gestionadas en tiempo real. ○ Más de 40 mil solicitudes por segundo manejadas sin latencia considerable. ○ Más de 500 nodos Cassandra repartidos en 4 mil servidores en 4 data centers.

CASO DE ESTUDIO - OTRAS COMPAÑÍAS ● ● ●

Facebook ○ Objetivo: optimizar la búsqueda de mensajes (Fork propietario) Netflix ○ Ratings de las películas, favoritos, historial de visualizaciones. Twitter ○ Analíticas. ○ Datos de geolocalización y de lugares de interés. ○ Minería de Datos.

ARQUITECTURA ● ● ● ● ●

Creada bajo la concepción de que los errores de hardware y de sistema pueden ocurrir. Arquitectura de red “de pares”, del inglés “peer-to-peer” que forma un “anillo”. Comunicación entre los nodos a través de un protocolo de “gossip”. Capaz de manejar petabytes de información y miles de usuarios/operaciones por segundo (a través de múltiples nodos). No existe la noción de “Punto único de falla”.

ARQUITECTURA - PEER TO PEER

ARQUITECTURA - PROTOCOLO GOSSIP ● ● ● ●

Intercambio periódico del estado del propio nodo y de los otros nodos que conoce. Ocurre cada segundo y el intercambio ocurre hasta con 3 nodos más del cluster. Un mensaje gossip contiene una versión asociada. Esto permite conservar sólo el más reciente. Un nodo recuerda los nodos con los que ha hecho gossip.

REPLICACIÓN Y DISTRIBUCIÓN DE LOS DATOS ●



Distribución automática de los datos a través de todos los nodos que participan en el “anillo”. ○ Esto se puede hacer de forma aleatoria u ordenada. Facilidad de configuración de la replicación ○ El administrador sólo debe indicar cuántas réplicas de los datos desea en cada nodo.

LECTURA Y ESCRITURA DE LOS DATOS ● ●



Diseño de lectura/escritura de datos en “cualquier lugar”. Secuencia de escritura: ○ Commit log. ○ Memtable. ○ Sstable (sorted string table). Ofrece “AID” de las propiedades ACID. ○ Atomic. ○ Isolated. ○ Durable. ○ Consistent, es ajustable.

LECTURA Y ESCRITURA DE LOS DATOS

CONSISTENCIA DE LOS DATOS ●



El administrador puede decidir el nivel de consistencia que garantizará el sistema. ○ Fuerte - todos los nodos deben responder antes de que una transacción sea considerada como completa. ○ Eventual - un nodo responde y los demás se van actualizando de forma progresiva. ■ Ejemplo: actualización de un post en una red social. El nivel de consistencia se puede configurar por operación (SELECT, INSERT, UPDATE, DELETE)

MODELO DE DATOS DE APACHE CASSANDRA Keyspace ●

œ

Keyspace: Serían las bases de datos en los modelos relacionales. ○ Replication factor

Familia de columnas Filas Columnas

MODELO DE DATOS DE APACHE CASSANDRA ●

● ●

Familia de columnas: Sería el análogo de las tablas en los modelos relacionales. Filas: Son los identificadores de las columnas. Columnas. Permiten primary y secondary indexes. ○ Clave ○ Valor

MODELO DE DATOS DE APACHE CASSANDRA ●

● ●

Familia de columnas: Sería el análogo de las tablas en los modelos relacionales. Filas: Son los identificadores de de las columnas. Columnas. Estructura de datos mas básica de Cassandra. ○ Clave ○ Valor

Hotel{ key: NYN_04 { name: Waldorf Hotel, phone: 212-555-5555 } }

MODELO DE DATOS DE APACHE CASSANDRA ●

Super columnas: Tipo especial de columna que puede almacenar como valor más columnas.

Cines{ key: Caracas { key: Cines Unidos 1 { ubicación: CC.el Líder, número_salas: 9 } }

ESTRUCTURA DE APACHE CASSANDRA ●

● ●

Los objetos son creados y manipulados a través del Lenguaje de Consultas de Cassandra, CQL, del inglés “Cassandra Query Language”. ○ Similar a SQL. No posee SQL joins. Existen drivers para el uso de Apache Cassandra en distintos lenguajes. ○ Java, Python, Ruby, C# / .NET, NodeJs, PHP, C++, Scala, Clojure, Erlang, Go, Haskell, Rust, Perl.

CQL - FUNCIONALIDADES PRINCIPALES ●

Tipos de datos: ○ Nativos ○ Creados por los usuarios

CQL - FUNCIONALIDADES PRINCIPALES ●

Manipulación de keyspace ○ Creación de un keyspace. CREATE KEYSPACE Prueba WITH replication = {‘class’: ‘SimpleStrategy’, ‘replication_factor’ : 3};



Modificación de un keyspace.

ALTER KEYSPACE Prueba WITH replication = {‘class’: ‘SimpleStrategy’, ‘replication_factor’ : 4};

CQL - FUNCIONALIDADES PRINCIPALES ●

Manipulación de keyspace ○ Eliminación de un keyspace. DROP KEYSPACE Prueba;

CQL - FUNCIONALIDADES PRINCIPALES ●

Manipulación de tablas ○ Creación de tablas. CREATE TABLE timeline ( userid uuid, posted_month int, body text, posted_by text, PRIMARY KEY (userid, posted_month) ) WITH compaction = {‘class’: ‘LeveledCompactionStrategy’};

CQL - FUNCIONALIDADES PRINCIPALES ●

Manipulación de tablas ○ Modificación de tablas. ALTER TABLE timeline ADD comments text;



Eliminación de tablas.

DROP TABLE timeline;

CQL - FUNCIONALIDADES PRINCIPALES ●

Manipulación de datos ○ SELECT. SELECT time, value FROM events WHERE event_type = ‘myEvent’ AND time > ‘2011-02-03’ AND time >= ‘2011-01-01’



INSERT.

INSERT INTO Movies (movie, director, main_actor, year) VALUES (‘Serenity’, ‘Joss’, ‘Nathan’, 2005)

CQL - FUNCIONALIDADES PRINCIPALES ●

Manipulación de datos ○ UPDATE. UPDATE Movies USING TTL 400 SET year = 2005 WHERE movie = ‘Serenity’;



DELETE.

DELETE FROM Movies WHRE movie = ‘Serenity’;

CQL - FUNCIONALIDADES PRINCIPALES ●

Manipulación de datos ○ BATCH. BEGIN BATCH INSERT INTO users (userid, password, name) VALUES (‘user2’, ‘1234’, ‘otro user’) UPDATE users SET password = ‘5678’ WHERE userid = ‘user3’; DELETE name FROM users WHERE userid = ‘user1’; APPLY BATCH;

CQL - FUNCIONALIDADES PRINCIPALES ●

Triggers ○ Creación de triggers. CREATE TRIGGER myTrigger ON myTable USING ‘cassandra.triggers.InvertedIndex’;



Eliminción de triggers.

DROP TRIGGER myTrigger ON myTable;

CQL - FUNCIONALIDADES PRINCIPALES ●

Soporte de JSON ○ Inserción de datos ○ Selección de datos

INSTALACIÓN - REQUISITOS ●



La última versión de Java 8. Puede ser: ○ OpenJDK8. ○ Oracle Java Standard Edition 8. Para usar el shell de CQL (cqlsh) ○ Python 2.7

INSTALACIÓN ● ●



Linux ○ En Linux se instala mediante el manejador de paquetes. Windows ○ Descargar e instalar el ejecutable que se encuentra en la página de DataStax Community. MacOS ○ Descargar el paquete de instalación que se encuentra en la página de DataStax y ejecutar el script que se encuentra dentro del mismo.

DEMOSTRACIÓN

CONCLUSIONES ●



Apache Cassandra permite resolver problemas de sistemas que involucran grandes volúmenes de datos. ○ Eficiencia en cuanto a disponibilidad y tolerancia a fallas. ○ Facilidad para su escalabilidad horizontal. No es la solución perfecta para todos los problemas de gestión de datos. ○ Es necesario definir los requerimientos de la aplicación a desarrollar para determinar si vale la pena utilizar un enfoque no relacional.

¿PREGUNTAS?

REFERENCIAS CONSULTADAS ●

Hewitt, Eben. “Cassandra: The Definitive Guide”. 2011. Capítulos 1 al 3.



Apache Software Foundation. “Apache Cassandra Documentation v4.0”. Disponible en internet: http://cassandra.apache.org/doc/latest/. Consultado el: 18 de noviembre de 2017.



Datastax. “Internode communications (gossip)”. Disponible en internet: http://docs.datastax.com/en/archived/cassandra/2.0/cassandra/architecture/ architectureGossipAbout_c.html. Consultado el: 18 de noviembre de 2017.

REFERENCIAS CONSULTADAS ●

Datastax. “SPOTIFY SUPPORTS 40K REQUESTS/ SECOND TO DELIVER THE RIGHT MUSIC TO THEIR CUSTOMERS’ FINGERTIPS”. Disponible en internet: https://www.datastax.com/wp-content/themes/datastax-2014-08/images/cas e-studies/DataStax-CS-Spotify.pdf. Consultado el: 18 de noviembre de 2017.