La tecnología está redefiniendo el mundo, o como dijo Marc Andreessen hace ya más de un lustro «El software está comiéndose el mundo«. La proliferación de dispositivos móviles, la explosión de las redes sociales y el rápido crecimiento de la computación en la nube han dado lugar a la tormenta perfecta que está inundando el mundo con datos. El reto para las empresas es enorme, según las estimaciones de Gartner, el 80 por ciento de este big data no está estructurado y crecen a más del doble ritmo que los datos estructurados.
Al mismo tiempo que este crecimiento exponencial de datos caóticos, nunca antes ha habido una necesidad tan acuciante de soluciones de datos que fueran más allá de lo que las bases de datos relacionales tradicionales podían ofrecer. Ahí es donde la gran plataforma de análisis de datos de código abierto Apache Hadoop, y la aplicación NoSQL Apache Cassandra entran en juego.
En este artículo haremos una breve comparación de las diferencias entre Hadoop y Cassandra, y la forma en que estas dos soluciones pueden complementarse entre sí para ofrecer ventajas competitivas a la hora de trabajar con big data.
¿Qué es Hadoop?
Hadoop es una plataforma de procesamiento de big data que utiliza software de código abierto, un sistema de archivos distribuidos (HDFS) y un marco de programación conocido como MapReduce para almacenar, administrar y analizar en gran medida grandes conjuntos de datos no estructurados en paralelo a través de clusters distribuidos con servidores de bajo coste a gran escala. Con Hadoop, tanto HDFS como el framework MapReduce se ejecutan en el mismo conjunto de nodos. Esto permite que el framework Hadoop programe eficazmente las tareas de cálculo en los nodos donde ya se están almacenando los datos. Como resultado, Hadoop es el más adecuado para ejecutar analíticas ya sean batch o en tiempo casi real en grandes lagos de datos con históricos «fríos», en múltiples formatos, de una manera fiable y tolerante a fallos.
Aunque MapReduce es una herramienta de procesamiento de datos potente y fiable, su principal inconveniente es la velocidad. Es de esperar, ya que la mayoría de los trabajos de mapas / reducciones son trabajos de lotes largos que pueden tardar minutos o incluso más de horas en completarse. Es evidente que las crecientes demandas y aspiraciones de proyectos big data exigen un tiempo de obtención de resultados más rápido, unos tiempos las cargas de trabajo por lotes de MapReduce no están diseñadas para alcanzar.
¿Qué es Cassandra?
Fundamentalmente, Cassandra es una base de datos NoSQL distribuida diseñada para administrar grandes cantidades de datos estructurados a través de una matriz de servidores commodities, al igual que Hadoop. Cassandra cuenta con una arquitectura única que ofrece alta distribución, rendimiento de escala lineal, y es capaz de manejar grandes cantidades de datos, proporcionando disponibilidad continua y tiempo de actividad a miles de usuarios simultáneos. A diferencia de Hadoop, que normalmente se despliega en un solo lugar, la alta distribución de Cassandra permite el despliegue entre países y zonas geográficas separadas. Además, Cassandra siempre está conectada y ofrece un rendimiento muy consistente en un entorno tolerante a fallos. Esto hace que Cassandra sea ideal para procesar cargas de trabajo online de naturaleza transaccional, donde Cassandra maneja un gran número de interacciones y tráfico concurrente con cada interacción minimizando los recursos necesarios.
A diferencia de Hadoop, que puede aceptar y almacenar datos en cualquier formato estructurado, no estructurado, semi-estructurado, imágenes,… Cassandra requiere una cierta estructura. Como resultado, se requiere un análisis detallado previo para estructurar un modelo de datos en Cassandra frente al modelo Hadoop antes de que pueda implementarse con éxito a gran escala.
¿Cómo se diferencian Cassandra Y HBase?
HBase es un modelo de base de datos distribuido NoSQL que se incluye en el Proyecto Apache Hadoop. Funciona en la parte superior del sistema de archivos distribuidos Hadoop (HDFS). HBase está diseñado para casos de uso donde tengamos data lakes y no suele utilizarse para aplicaciones web o móviles. Cassandra, por el contrario, ofrece la disponibilidad y el rendimiento necesarios para desarrollar aplicaciones siempre activas.
Combinación de Cassandra y Hadoop
Las empresas y organizaciones hoy tienen dos requerimientos en cuanto a datos. La necesidad de una base de datos dedicada a las operaciones online y el análisis de los datos «calientes» generados por aplicaciones Web, móviles e IOT. Y, por otra parte, la necesidad de un batch orientado a la plataforma de big data que soporta el procesamiento de grandes cantidades de datos históricos «en frío» y no estructurados. Al integrar a Cassandra y Hadoop para trabajar conjuntamente podemos dar respuesta a ambas necesidades.
Mientras que Cassandra funciona muy bien como un backend tolerante a fallos para sistemas online, Cassandra no es tan amigable para el análisis como Hadoop. La implementación de Hadoop sobre Cassandra crea la capacidad de analizar datos en Cassandra sin tener que mover primero esos datos a Hadoop. El traslado de datos de Cassandra a Hadoop y HDFS es un proceso complicado y que consume mucho tiempo.
Con la combinación de Hadoop y Cassandra las organizaciones son capaces de obtener analíticas operacionales específicas y reportes de grandes cantidades de datos que residen en Cassandra en tiempo real. Armadas con datos más rápidos y más profundos, las organizaciones que aprovechen tanto Hadoop como Cassandra pueden satisfacer mejor las necesidades de sus clientes y obtener una ventaja más fuerte sobre sus competidores.