Hadoop

Definición de Hadoop:

Apache Hadoop: sistema distribuido que permite realizar procesamiento de grandes volúmenes de datos a través de clúster, fácil de escalar y usa un modelo muy simple de programación basado en una arquitectura Master-Slave.

 

Componentes principales:

HDFS (Hadoop Distributed File System):

Almacenamiento de archivos.

Características: trabaja bien con grandes volúmenes de datos, reduce la E/S, gran escalabilidad y disponibilidad debido a la replicación de datos y tolerancia a fallos.

Los elementos más importantes del HDFS son:

  • NameNode: Sólo existe uno en el clúster. Se encarga de:
    • Regular el acceso a los ficheros por parte de los clientes.
    • Mantener en memoria la metadata del sistema de ficheros.
    • Controlar los bloques de fichero que tiene cada DataNode.
  • DataNode: Se encargan de leer y escribir las peticiones de los clientes y de replicar los bloques en los diferentes nodos.

MapReduce:

La infraestructura de programación. Algoritmos para realizar los cálculos.

  1. Map: Función que transforma un conjunto de datos a un número de pares clave/valor o key/value.
  2. Reduce: Función combina los valores (con la misma clave) en un mismo resultado.
Ejemplo Map-Reduce Hadoop

Ejemplo Map-Reduce Hadoop

 

Utilidades de la infraestructura:

  • Hadoop Streaming: Permitir a MapReduce codificar en lenguajes como: C, C++, Perl, Python, Bash, etc.
  • Hive and Hue:  Hive convierte las sentencias SQL en un trabajo de MapReduce.  Hue le proporciona una interfaz gráfica de navegador para realizar su trabajo Hive.
  • Pig: Entorno de programación de nivel alto para realizar codificación MapReduce.
  • Sqoop: Transferencia bidireccional de datos entre Hadoop y una base de datos relacional.
  • Oozie: Gestiona flujo de trabajo Hadoop. Esto no reemplaza a su planificador o herramienta BPM, pero proporciona ramificación de “if-then-else” y control dentro de sus trabajos Hadoop.
  • HBase: Un almacenamiento similar a un hash-map persistente (en python similar a sus diccionarios).
  • FlumeNG: Un cargador en tiempo real para transmitir sus datos hacia Hadoop. Almacena datos en HDFS y HBase. Mejora el canal original.
  • Whirr: Suministro de nube para Hadoop, puede arrancar un clúster en unos cuantos minutos con un archivo de configuración muy corto.
  • Mahout: para análisis predictivos y otros análisis avanzados. Aprendizaje de máquina para Hadoop.
  • Fuse: Pone una capa al sistema de archivo HDFS para poder usar comandos como: ls, rm, cd, …
  • Zookeeper: gestiona la sincronización para el clúster.

Autor: Diego Calvo