¿Qué es Hadoop?

Hadoop es el nombre de un conjunto de tecnologías y componentes de código abierto (Open Source), utilizados en aplicaciones de análisis masivo de datos. Basado en dos documentos de Google, ha evolucionado en los últimos años hasta convertirse en una de las opciones prioritarias para cualquier empresa que quiera implantar su propio departamento de Big Data.

Hadoop es una solución al problema de cómo recopilar, indexar y encontrar información en volúmenes de datos gigantescos. El ejemplo más sencillo, y el que dio origen al proyecto, es hacer un buscador de páginas Web. Para encontrar una página cualquiera, en la que aparezcan dos o tres palabras clave, es necesario buscarlas, almacenarlas, analizar su contenido y ser capaz de encontrar todas las que cumplen esas condiciones. Esto es algo que hace el sistema operativo de cualquier portátil si le pedimos que busque ficheros con alguna condición, pero hay una gran diferencia entre buscar algo entre unos cientos o miles de ficheros guardados en el disco duro y buscar entre millones de ficheros dispersos por Internet.

Para afrontar el problema, Doug Cutting y Mike Cafarella idearon hacia 2002 un programa llamado Nutch, que esencialmente era un rastreador: leía una página Web, la guardaba, analizaba los enlaces, ponía todo lo que encontraba en una cola para descargarlo después y así sucesivamente.

Guardar millones de páginas era un problema serio, ya que no basta con añadir discos a medida que necesitas más espacio. Para resolverlo, los creadores de Hadoop se basaron en un documento publicado por Google (The Google File System), en el que se describía un sistema que permitía usar servidores de bajo coste agregados para crear un enorme directorio único de almacenamiento. Ese sistema responde a las siglas HDFS (Hadoop Distributed File System) y la idea era que uno de los servidores actuaba de coordinador (NameNode) y el resto aportaban una parte de su disco duro y sus recursos para almacenar los datos (DataNode). En otra entrada explicaré en más detalle cómo funciona y cómo ha evolucionado. Lo que aquí nos interesa es que el explorador de Nutch (el crawler) ya tenía un sitio donde guardar las páginas que encontraba, sin preocuparse del espacio que pudieran ocupar.

La segunda parte del problema era encontrar una página dada entre los millones de páginas almacenadas. De nuevo, la solución provino de un documento de trabajo publicado por Google (MapReduce: Simplified Data Processing on Large Clusters), en el que se explicaba una propuesta de implementación del algoritmo MapReduce.

Este algoritmo divide el problema en cientos o miles de pequeños problemas. En lugar de que UN solo sistema busque esas palabras en TODO el volumen de datos, el servidor que coordina las máquinas manda a todas ellas la misma instrucción (esencialmente, «busca una página con estas palabras») y cada una de ellas busca sólo en el cacho de datos que tiene en su disco duro. Al distribuir el trabajo de búsqueda en cientos o miles de nodos, conseguimos que el conjunto del sistema resuelva problemas de búsqueda y cómputo en tiempos mucho más reducidos y con un coste mucho menor que lo que representaría un sistema convencional de gestión de bases de datos.

Así, Hadoop es el resultado de unir varias tecnologías en un núcleo de código: el sistema de almacenamiento (HDFS), el motor de búsqueda (MapReduce) y un conjunto de librerías básicas para hacer que todo funcione (Hadoop Core).

La versión 2 de Hadoop, publicada en 2012, amplió el modelo de ejecución a un sistema más flexible (YARN) y la posibilidad de utilizar otros sistemas de almacenamiento. Por su parte, la versión 3, publicada en 2017, redujo bastante el espacio de disco que necesitaba el sistema para garantizar la disponibilidad de los datos y eliminó un punto débil importante, consistente en que hasta ese momento sólo podía haber un nodo maestro para coordinar las tareas de forma que, si fallaba, se caía todo el sistema.

A lo largo de todos estos años, la existencia de esas librerías básicas con una especificación abierta ha permitido que otros equipos de trabajo hayan ido introduciendo sus propias aportaciones al proyecto. Ninguna es imprescindible para que el sistema funcione, pero todas aportan alguna herramienta útil, como una capa de abstracción para facilitar las consultas (Pig), un módulo de seguridad (Knox) o un sistema para automatizar tareas (Oozie). Todos ellos forman el «ecosistema de Hadoop», de forma que el nombre ha terminado por designar el conjunto de todos los elementos que pueden funcionar en torno al núcleo de componentes original.

La contrapartida a este desarrollo y proliferación de componentes es que Hadoop es considerablemente complejo de usar, instalar y administrar, motivo por el que han aparecido distribuciones pre-configuradas a lo largo de los años, como las de Cloudera, Hortonworks o MapR.

Hadoop está programado en Java, lo que permite al mismo tiempo que tenga un código bastante rápido y eficaz, pero independiente de la máquina y la configuración en la que se esté ejecutando. Eso permite un crecimiento prácticamente ilimitado, tan sólo restringido por las características de cada versión del software, pero no por sus posibilidades.

Fotografía: Cluster original de Yahoo con tecnología Hadoop. En poco más de un año creció de 600 nodos a 910, con más de 10.000 núcleos de procesamiento.

Dejar una contestacion

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *