76613613 Apache Cassandra

download 76613613 Apache Cassandra

of 14

  • date post

    08-Aug-2015
  • Category

    Documents

  • view

    194
  • download

    5

Embed Size (px)

Transcript of 76613613 Apache Cassandra

APACHE CASSANDRA Es un sistema de almacenamiento distribuido escrito en Java de cdigo abierto, descentralizado, escalable, altamente disponible, tolerante a fallos, eventualmente consistente, y orientado a columnas basado en la estructura de Dynamo de Amazon y en el modelo de datos de Bigtable de Google. Naci en Facebook y ahora es usado en muchos de los sitios ms populares de Internet. CARACTERSTICAS: Distribuido y Descentralizado: Cassandra es un sistema distribuido, lo cual significa que est en la capacidad de ejecutarse sobre mltiples mquinas mientras se presenta a los usuarios como un todo. De hecho, No es provechoso Ejecutar Cassandra en una nica mquina, aunque si puedes hacerlo. Por supuesto, aprovechars todos sus beneficios si lo corres en mltiples servidores. En Almacenes de datos creados con bases de datos relacionales como MySQL, cuando es necesario escalar, algunas mquinas (tambin llamadas nodos) deben ser validadas como administradores para coordinar las dems mquinas (llamadas esclavos). Sin embargo, Cassandra es descentralizado, esto significa que todos los nodos que forman parte del sistema son idnticos, Ningn nodo desempea funciones distintas a las de los otros nodos, en vez de eso, Cassandra implementa un protocolo P2P y mantiene una lista de todas las mquinas disponibles e inactivas. El hecho de que Cassandra sea descentralizado quiere decir que no tiene un punto de fallo, todos los nodos en un clster (grupo de mquinas) funcionan del mismo modo. A lo cual se le denomina servidor simtrico, porque todas las mquinas hacen lo mismo, por definicin no existe un administrador que coordine tareas entre los nodos. En muchas soluciones de almacenamiento distribuido, se deben hacer mltiples copias de datos en un proceso llamado replicacin, de esta forma todas las mquinas pueden trabajar peticiones simultneas y mejorar el desempeo del sistema. Este proceso no es descentralizado como en Cassandra, pero para llevarlo a cabo se requiere de la definicin de una relacin Administrador/Esclavos, lo que quiere decir que todos los nodos no funcionan de la misma forma, el administrador es el que autoriza la distribucin de los datos, y opera bajo una relacin unidireccional con los nodos esclavos; si el administrador deja de funcionar, la base de datos completa est en peligro. El diseo descentralizado, por lo tanto, es una de las claves de la alta disponibilidad de Cassandra. Algunas bases de datos No SQL como MongoDB usan la relacin Administrador/Esclavos. La descentralizacin tiene dos ventajas clave: Es ms fcil de usar que un Administrador/Esclavo, puede ser ms fcil de operar y mantener un almacn de datos descentralizado que un Administrador/Esclavo ya que todos los nodos son iguales, y no se requieren conocimientos adicionales para escalar; configurar 50 mquinas no es diferente a configurar una sola. Un

administrador puede ser un simple punto de fallo. Como en Cassandra todos los nodos son idnticos, la inutilizacin de uno no interrumpe su funcionamiento. En pocas palabras, como Cassandra es distribuido y descentralizado, no hay un punto de fallo lo que genera una alta disponibilidad. Escalabilidad Flexible: La escalabilidad de un sistema es una caracterstica de un sistema que puede continuar soportando un creciente gran nmero de peticiones sin afectar mucho su desempeo, La escalabilidad vertical (adicionar ms capacidad hardware y memoria a las mquinas existentes) es la forma ms fcil de lograr esto. La escalabilidad horizontal consiste en agregar ms maquinas que ayuden con el almacenamiento de informacin y recibir peticiones, para esto el sistema debe tener la capacidad de sincronizar sus datos con los otros nodos en el clster. La escalabilidad flexible se refiere a una propiedad especial de la escalabilidad horizontal. Esto significa que el clster puede escalar y des escalar uniformemente. Para hacer esto el clster debe estar en la capacidad de aceptar nuevos nodos que empiecen recibiendo parte o toda la informacin de los dems nodos y aceptando peticiones de usuarios sin configuraciones sobre el clster. No es necesario parar el sistema ni realizar cambios en la aplicacin, solo se agrega el nodo, y en el caso de Cassandra, la encontrar y la configurar para que forme parte del sistema. Des escalar, desde luego, significa remover mquinas del clster, lo cual se necesita si las peticiones al sistema disminuyen y no se requiere hardware adicional para soportarlas. Alta Disponibilidad y Tolerancia a Fallos: En trminos generales, la disponibilidad de un sistema est ligada a su habilidad de cumplir peticiones. Pero los computadores pueden experimentar muchas formas de fallo, desde componentes hardware descompuestos hasta problemas de conexin y comunicacin. Existen computadores sofisticados (y costosos) que pueden tratar con este tipo de circunstancias. Para que un sistema sea altamente disponible, debe incluir mltiples computadores conectados, y el software que se ejecuta sobre ellos debe tener la capacidad de correr sobre un clster e identificar posibles nodos defectuosos. Cassandra es altamente disponible, t puedes reemplazar nodos defectuosos en un clster sin tener que detener el sistema, y puedes tambin replicar la informacin a otros almacenes de datos para mejorar el desempeo local. Consistencia Personalizable: Significa que t decides el nivel de consistencia que necesitas en balance al nivel de disponibilidad. Existen tres modelos de consistencia: estricta, en la cual un lector recibe el valor ms recientemente escrito, consistencia casual, la cual es una variacin de la estricta, y la eventual, en la cual los datos deben pasar por las mquinas de un sistema distribuido, esto lleva tiempo, por eso decimos que eventualmente los datos son consistentes.

Orientacin a Columnas: Cassandra no es relacional, representa las estructuras de datos como tablas de hash multidimensionales, en donde cada registro puede tener una o ms columnas, aunque no todos los registros de un mismo tipo deben el mismo nmero de columnas, como si sucede en el modelo relacional. Cada registro contiene una llave nica la cual permite el acceso a los datos. Cassandra almacena los datos en tablas de hash multidimensionales, lo que significa que no es necesario tener por adelantado la representacin de los datos que se va a usar y cuantos campos se necesitarn para los registros, esto es til cuando la estructura de datos est sujeta a cambios frecuentes. Cassandra permite agregar campos para los registros aun cuando est en servicio. Libre Esquema: Cassandra requiere que definas un contenedor, llamado espacio clave que contiene familias de columnas. El espacio clave es esencialmente un nombre para mantener columnas familiares y propiedades de configuracin. Las familias de columnas o columnas comunes son nombres para informacin asociada. Las tablas de datos son dinmicas, as que puedes agregar informacin usando las columnas que quieras, no necesitas definir las columnas que requieres por adelantado. Alto Desempeo: Cassandra fue diseado especficamente para aprovechar al mximo las mquinas con procesadores multincleo, y para ejecutarse sobre muchas docenas de estas mquinas alojadas en mltiples almacenes de datos. Cassandra ha demostrado desempearse bien en la carga pesada de datos. Posee un alto rendimiento en escrituras por segundo. Cuantos ms servidores sean agregados, se sacar mayor provecho de las propiedades de Cassandra sin sacrificar desempeo. DE DNDE VIENE CASSANDRA? Cassandra es un sistema de cdigo abierto mantenido por la fundacin Apache. Cassandra se origin en Facebook en el 2007 para solventar los problemas de bsqueda interna de datos que tena la compaa, la cual tiene que tratar con grandes volmenes de datos. El cdigo fuente fue publicado en Julio del 2008, en ese entonces el cdigo era actualizado por ingenieros de Facebook. En marzo del 2009 fue acogido por la fundacin Apache y en febrero de 2010 es escogido como uno de los mejores proyectos de la fundacin. DE DONDE OBTIENE CASSANDRA SU NOMBRE? En la mitologa griega, Cassandra era la hija del rey Priam y la reina Hecuba de Troya. Cassandra era tan bonita que el dios Apolo le dio la habilidad de ver el futuro. Pero cuando este quiso tener algo con ella, lo rechazo, y aun podra pronosticar todo que ocurrira con exactitud, pero nadie le creera. La base de datos de Cassandra es nombrada por ella.

USOS PARA CASSANDRA: A pesar de su sofisticado diseo y deseables caractersticas, no supone la herramienta correcta para cada trabajo. Grandes Instalaciones: Ninguna de las cualidades de Cassandra son bien aprovechadas si esta se ejecuta en un solo nodo. Existen, sin embargo, una gran cantidad de situaciones en donde una base de datos relacional sea todo lo que necesitemos. Por lo tanto, hay que analizar el trfico del sistema y las necesidades de rendimiento para determinar cul paradigma adoptar. Grandes Escrituras de Datos, Estadsticas y Anlisis: Cassandra est optimizado para un excelente rendimiento en escritura de datos. Muchas de las instalaciones de produccin que contienen Cassandra involucran el almacenamiento de actualizaciones de actividades de los usuarios, uso de redes sociales, comentarios / recomendaciones, y aplicaciones estadsticas, Estos son usos fuertes de Cassandra debido a que requieren una gran capacidad de escritura con menos operaciones de lectura y porque las actualizaciones pueden ocurrir repentinamente en cualquier momento. La habilidad de llevar grandes cargos de trabajo que requieren alto desempeo en grandes volmenes de escritura con mucha concurrencia de clientes es una de las caractersticas principales de Cassandra. Distribucin Geogrfica: Cassandra tiene soporte para la distribucin geogrfica de datos. Puedes configurar Cassandra para la replicacin de datos a mltiples almacenes de datos repartidos globalmente. Aplicaciones Evolutivas: Si tu aplicacin evoluciona rpidamente, Cassandra es una buena opcin debido a su modelo de esquema libre. INSTALACIN EN WINDOWS: C