El Ecosistema Hadoop (III) : Una gran diversidad “biológica"

Wednesday, 4 October 2017

El Ecosistema Hadoop (III) : Una gran diversidad “biológica"

Ya estamos llegando al final del camino. En esta miniserie nos planteamos desentrañar la compleja madeja de Hadoop. Explicar de forma clara y legible en qué consiste, para qué sirve, y por qué, si hablamos de Big Data, tendremos que acabar hablando también de Hadoop. En el post de hoy trataremos el Ecosistema Hadoop. Es un entorno "vivo" en el que van surgiendo nuevos proyectos, o mejorándose los anteriores, para ir cubriendo las nuevas necesidades que se nos plantean cada día al trabajar con Big Data.
 
Hadoop no es un proyecto Opensource independiente. Es más bien un complejo ecosistema de proyectos muy diversos que trabajan a la par. Su objetivo es crear un conjunto común de servicios capaces de transformar lo que llamamos “commodity hardware” (hardware de bajo coste, sin capacidad de redundancia), en un servicio coherente que permita almacenar de forma redundante petabytes de datos, y procesarlos eficientemente.
 
Aunque comenzó como proyecto individual, poco a poco se fueron sumando distintos proyectos abarcando áreas de:
  • plataforma de almacenaje y procesamiento de datos
  • lenguajes de scripting
  • bases de datos
  • herramientas analíticas
  • lenguaje query
  • gestión de workflow
  • y mucho más...
Muchos de estos componentes de la pila Hadoop son proyectos Open Source de la Fundación Apache que permiten trabajar tanto con procesos en batch, como con procesos en stream, gráficos o procesamiento en tiempo real. Otros han sido creados de forma propietaria por empresas que han comercializado diferentes versiones “empaquetadas” de Hadoop (como Cloudera, MapR, Hortonworks etc). En el último post de esta serie, analizaremos más en detalle dichas distribuciones.
 
Veamos algunos de los proyectos más conocidos del ecosistema Hadoop.


 Proyectos del Ecosistema Hadoop.
Figura 1: Proyectos del Ecosistema Hadoop.


Pig: es un lenguaje de alto nivel que traduce a “MapReduce”. Convierte una descripción de alto nivel de cómo deben ser procesados los datos en Jobs de MapReduce, sin necesidad de tener que escribir largas cadenas de jobs cada vez, mejorando notablemente la productividad de los desarrolladores.
 
Hive: Convierte una transformación en lenguaje SQL en Pig o directamente MapReduce. En Facebook se usa hasta en un 90% de las operaciones.
 
HBase: HDFS es ideal para trabajar en procesos batch. Sin embargo no funciona bien para las analíticas en tiempo real, uno de los requerimientos más demandados en la industria IT hoy en día. HBase se creó para cubrir esa necesidad. HBase tiene un motor de procesamiento en memoria que le agiliza enormemente las operaciones de lectura-escritura sobre Hadoop, permitiendo así trabajar con datos en streaming. También permite trabajar con bases de datos noSQL. Se puede acceder a HBase desde Hive, Pig y MapReduce y usa HDFS para almacenar la información, por tanto es completamente tolerante a fallos. Se usa por ejemplo en los mensajes de Facebook. El mensaje que le envías a un amigo es un objeto en una tabla Hbase. Almecena parte de sus metadatos en Zookeeper.
 
Zookeeper: es otro proyecto de Apache que almacena y facilita servicios de coordinación para distintos servidores.
 
HCatalog: es un proyecto que sacó los metadados de Hive para que también se pudiera acceder a ellos Pig y MapReduce. Es un servidor de metadatos con algunas mejoras. HCatalog puede acceder a los datos en el estándar HDFS o bien en HBase.


Hay otros proyectos como:
 
Mahout, es una librería de Machine Learning que permite escribir aplicaciones MapReduce
 
Ambari, Ganglia, Nagios ofrecen una interfaz de acceso al cluster
 
Sqoop, que permite ejecutar aplicaciones MapReduce que introducen o extraen información de bases de datos SQL (por tanto, estructuradas)
 
Flume sirve para introducir datos en streaming en Hadoop. Si tenemos servidores que generan datos de forma continua, se puede usar Flume para almacenarlos en HDFS (pueden ser datos semiestructurados o no estructurados).
 
Oozie es un gestor de workflow. Te permite definir cuándo quieres que tus jobs MapReduce se ejecuten, de forma programada o cuando haya disponibles nuevos datos.
 
Fuse-DFS permite acceder a HDFS usando herramientas Linux
 
Como Hadoop es un sistema distribuido en el que distintos componentes tienen que hablar unos con otros, también se da soporte a librerías de serialización como  (Protobuf (creado por Google) y Avro y Thrift (de Apache)
 

En el cuarto (¡y último!) post de esta miniserie, hablaremos de las distribuciones comerciales líderes en el mercado y cómo elegir las más adecuada a nuestras necesidades.
 
¡Síguenos! 
 
Si te has perdido los primeros post de la serie, puedes verlos aquí:


No comments:

Post a Comment