Hadoop, Hive, Cassandra, HBase, Spark, MongoDB.

Implementación, configuración y mantenimiento.

Big-data-3.png

HADOOP

Hadoop es un Sistema de archivos que se ha desarrollado utilizando diseño de sistema de archivos distribuidos. Se ejecuta en hardware de productos básicos. A diferencia de otros sistemas distribuidos, HDFS es muy tolerante y diseñado utilizando hardware de bajo coste.

HDFS tiene gran cantidad de datos y proporciona un acceso más fácil. Para almacenar estos datos de gran tamaño, los archivos se almacenan en varias máquinas. Estos archivos se almacenan en forma redundante para rescatar el sistema de posibles pérdidas de datos en caso de fallo. HDFS también permite que las aplicaciones de procesamiento en paralelo.

Características de los HDFS

  • Es adecuado para el almacenamiento y procesamiento distribuido.

  • Hadoop proporciona una interfaz de comandos para interactuar con HDFS.

  • Los servidores de namenode datanode y ayudar a los usuarios a comprobar fácilmente el estado del clúster.

  • Streaming el acceso a los datos del sistema de ficheros.

  • HDFS proporciona permisos de archivo y la autenticación.

Hadoop Cassandra

Cassandra

El desarrollo inicial de Cassandra tiene su origen en Facebook, que lo diseñó para potenciar la funcionalidad de búsqueda en el inbox. En 2008 fue liberado como proyecto open source y en febrero de 2010 se convirtió en un proyecto top-level de la  fundación Apache. Está inspirado e influenciado por los papers de Amazon Dynamode 2007 y de Google BigTable de 2006. Hoy en día está mantenido y desarrollado por la compañía Datastax.

Su nombre está inspirado por la sacerdotisa Cassandra de la mitología griega, que tenía el don de la profecía, y predijo el engaño del Caballo de Troya.

Cassandra nos proporciona tolerancia a particiones y disponibilidad, pero a cambio de ser eventualmente consistente, tal y como define el teorema CAP. El nivel de consistencia puede ser configurado, según nos interese, incluso a nivel de query.

Es distribuida, lo quiere decir que la información está repartida a lo largo de los nodos del cluster. Además ofrece alta disponibilidad, de manera que si alguno de los nodos se cae el servicio no se degradará.

Escala linealmente, lo que quiere decir que el rendimiento de forma lineal respecto al número de nodos que añadamos. Por ejemplo, si con 2 nodos soportamos 100.000 operaciones por segundo, con 4 nodos soportaremos 200.000. Esto da mucha predictibilidad a nuestros sistemas.

Escala de forma horizontal, lo que quiere decir que podemos escalar nuestro sistema añadiendo nuevos nodos basados en hardware commodity de bajo coste.

Implementa una arquitectura Peer-to-Peer, lo que elimina los puntos de fallo único y no sigue patrones maestro-esclavo como otros sistemas de almacenamiento. De esta manera cualquiera de los nodos puede tomar el rol de coordinador de una query. Será el driver el que decida qué nodo quiere que sea el coordinador.
Los datos son repartidos a lo largo del cluster en base a un token único calculado para cada fila por una función hash. Los nodos se reparten equitativamente el  rango de tokens que va de -263 a 263, esto define el nodo primario. Internamente Cassandra replicará los datos entre los nodos con la política que le definamos, por ejemplo definiendo el factor de replicación. Además soporta el concepto de data center para agrupar los nodos lógicamente y tener los datos más cerca del usuario.

masasdasd.png

Ecosistema Big Data

En los últimos años han surgido multitud de nuevas tecnologías dentro del ecosistema Big Data. El principal objetivo es disponer de herramientas lo bastante potentes para procesar y almacenar grandes volúmenes de información.

El desarrollo y la evolución de la tecnología es vertiginoso, continuamente están apareciendo nuevas tecnologías que mejoran a las anteriores y las dejan obsoletas.

Algunas de ellas son:

MongoDB

MongoDB es una base de datos orientada a documento. Define un API propia para hacer queries y framework para agregaciones complejas. Tiene soporte para replicación, sharding e indexado. Es la más popular de las bases de datos orientadas a documentos.

Hive

Hive nació inicialmente como un subproyecto del proyecto Hadoop, nos ofrece un conjunto de herramientas para leer, escribir y manejar datos sobre Hadoop con una sintaxis similar a SQL. Incluye un driver JDBC.

Spark

Spark es un framework para procesamiento distribuido posterior a Hadoop, fue diseñado desde cero pensando en sustituir el componente MapReduce. Soporta un conjunto mayor de transformaciones que pueden ser ejecutadas en paralelo. Trabaja intensivamente en memoria lo que lo hace hasta 100 veces más rápido que Hadoop MapReduce. Soporta procesamiento en streaming.