Ecosistema de Apache Hadoop

De MediaWiki
Ir a la navegación Ir a la búsqueda

MapReduce

Es un algoritmo que se emplea en Big Data (entre otros en Hadoop) para facilitar la distribución de la carga de trabajo dentro de este framework.

De forma resumida MapReduce es el elemento dentro del ecosistema Hadoop que se encarga de dividir una tarea en varias subtareas para que se procesen dentro del clúster de ordenadores.

Esto hace que:

  • el procesamiento de los datos sea más rápido, ya que reduce la información con la que trabaja cada ordenador
  • por tanto, aumenta su capacidad de procesamiento.

Esto lo logra en dos fases:

  1. Filtra, agrupa y ordena los datos. Al mismo tiempo, estos datos se dividen en múltiples partes que después se ejecutan en paralelo en distintos ordenadores.
  2. Reduce y filtra los resultados y los almacena en el HDFS.

HDFS

El sistema de archivos distribuido Hadoop ofrece un marco básico para la división de colecciones de datos entre varios nodos al utilizar la replicación para recuperarse de la falla del nodo. Los archivos grandes se dividen en bloques, y varios nodos pueden contener todos los bloques de un archivo. Los bloques se distribuyen a través de múltiples nodos.

Está diseñado para la tolerancia a fallas con un alto rendimiento. Se cargan los bloques para mantener la transmisión constante y generalmente no se almacenan en memoria caché para minimizar la latencia. El modelo por defecto imagina largos trabajos de procesamiento de gran cantidad de datos almacenados localmente. Esto encaja con el lema del proyecto: "la computación móvil es más barata que los datos en movimiento".

HDFS se distribuye bajo licencia Apache.

HBase

Cuando los datos caen en una gran tabla, HBase la almacenará, buscará, y automáticamente compartirá la tabla a través de múltiples nodos para que el trabajo de MapReduce se ejecute localmente. Las miles de millones de filas de datos entran, y luego las versiones locales de los puestos de trabajo pueden consultarlas.

El código no ofrece las garantías completas ACID de las bases de datos con todas las funciones; pero sí ofrece una garantía limitada para algunos cambios locales. Todas las mutaciones en una sola fila tendrán éxito o fallarán juntas.

HareDB es un cliente GUI para trabajar con HBase.

Pig

Framework que emplea su propio leguaje de programación y sirve para transformar programas en sentencias para MapReduce

Pig de Apache ara a través de los datos, ejecuta un código escrito en un lenguaje propio (Pig Latin) lleno de abstracciones para la manipulación de los datos. Esta estructura dirige a los usuarios hacia algoritmos que son fáciles de ejecutar en paralelo a través del clúster.

Pig viene con funciones estándar para tareas comunes como sacar un promedio de los datos, trabajar con fechas, o buscar diferencias entre las cadenas. También permite escribir nuestras propias funciones.

Hive

Otorga una interfaz SQL a Hadoop, lo que simplifica la consulta de los datos.

Hive está diseñado para regularizar el proceso de extracción de los bits de todos los archivos en HBase. Ofrece un lenguaje similar a SQL que bucea en los archivos y extrae los fragmentos que su código necesita. Los datos llegan en formatos estándar y Hive los convierte en un algo que se puede buscar.

Es un proyecto distribuido con licencia Apache.

Flume

Flume es un proyecto de Apache que despacha "agentes" para que recojan información que se almacena en el HDFS. Un agente podría estar recogiendo los archivos de registro, llamando a la API de Twitter, o haciendo scrapping de un sitio web. Estos agentes son provocados por los acontecimientos y se pueden encadenar. Luego los datos están listos para su análisis.

Sqoop

Sqoop mueve grandes mesas llenas de información de las bases de datos tradicionales y controla herramientas como Hive o HBase.

Sqoop es una herramienta de línea de comandos que controla la asignación entre las tablas y la capa de almacenamiento de datos, traduce las tablas en una combinación configurable para HDFS, HBase o Hive.

La última versión estable es 1.4.7 bajo la licencia Apache.

Oozie

Oozie (licencia Apache) Permite la ejecución y planificación a lo largo del tiempo de las tareas que se van a ejecutar dentro del ecosistema de Hadoop.

Comenzará en la secuencia correcta si rompes tu proyecto en varios trabajos de Hadoop. No tendrá que cuidar la pila, a la espera que un puesto de trabajo finalice antes de iniciar otro. Oozie gestiona un flujo de trabajo especificado como un DAG (gráfico a cíclico dirigido por sus siglas en inglés).

Importante. Los gráficos cíclicos son bucles sin fin, y son trampas para las computadoras.

Automatización de Jobs

Otras herramientas

Ambari

Ambari es un proyecto de incubadora a Apache soportado por Hortonworks. Ofrece una interfase gráfica de usuario basada en la web con scripts del asistente para la creación de grupos con la mayoría de los componentes estándar. Facilita disponer, administrar y supervisar un conjunto de puestos de trabajo Hadoop.

ZooKeeper

Sirve para la coordinación de las aplicaciones distribuidas.

Una vez que Hadoop se ejecuta en más de un par de máquinas, tiene sentido ordenar el clúster, especialmente cuando algunas de las máquinas comienzan a revisarlo.

ZooKeeper impone una jerarquía similar a los sistemas de archivos del clúster y almacena todos los metadatos de las máquinas para que pueda sincronizar el trabajo de las diferentes entidades. La documentación muestra cómo implementar muchas de las técnicas estándar de procesamiento de datos, tales como colas producidas por los consumidores que hacen que los datos se corten, limpien, tamicen y clasifiquen en el orden correcto. Los nodos utilizan ZooKeeper para avisarse el uno al otro cuando están listos para que los demás puedan poner en marcha los datos.

Spark

Es un motor para el procesamiento de datos compatible con HDFS. Aumenta la velocidad de MapReduce y es especialmente útil en el análisis de datos para Machine Learning.

Para algunos algoritmos, Hadoop puede ser lento, ya que generalmente se basa en los datos almacenados en el disco. Eso es aceptable cuando se están procesando archivos de registro que solo se leen una vez, pero toda esa carga puede ser un trabajo duro cuando se está accediendo a los datos una y otra vez, como es común en algunos programas de inteligencia artificial. Spark es la próxima generación. Funciona como Hadoop, pero con los datos que se almacenan en el caché en la memoria.

Mahout

Hay un gran número de algoritmos para el análisis, clasificación y filtrado de datos, y Mahout -distribuido bajo licencia Apache- es un proyecto diseñado para que las implementaciones de estos clusters de Hadoop. Muchos de los algoritmos estándar (K-Means, Dirichelet, patrón paralelo y la clasificación Bayessian entre otros) están listos para funcionar en sus datos con mapeo y reducción al estilo de Hadoop.

Lucene

Lucene (herramienta para la indexación de grandes bloques de texto no estructurado) se integra fácilmente con Hadoop, creando una gran herramienta para la gestión de textos distribuidos. Lucene se encarga de la indexación; Hadoop distribuye las consultas a través del clúster.

Las nuevas características Lucene-Hadoop están evolucionando rápidamente a medida que aparecen nuevos proyectos:

  • Katta, por ejemplo, es una versión de Lucene que se fragmenta automáticamente en un clúster:
  • Solr ofrece soluciones más integradas para clustering dinámico con la capacidad de analizar los formatos de archivo estándar como XML.
  • Luke es una interfase gráfica para navegar sobre las imágenes de Lucene (y que ahora cuenta con un plug-in para navegar por los índices en un cluster Hadoop)

Lucene y muchos de sus descendientes son parte del proyecto Apache.

Avro

Avro es un sistema de serialización que agrupa los datos junto con un esquema para entenderlo. Cada paquete viene con una estructura de datos JSON que explica cómo se pueden analizar los datos. Este encabezado especifica la estructura de los datos hasta la parte superior, evitando la necesidad de escribir las etiquetas adicionales en los datos para marcar los campos. El resultado puede ser considerablemente más compacto que los formatos tradicionales, como XML o JSON, cuando los datos son regulares.

Avro es otro proyecto Apache con las API y el código en Java, C + +, Python y otros idiomas.

Integreación con otros almacenes de datos NoSQL

Algunos grupos se integran con los almacenes de datos NoSQL (como Cassandra, Riak, o MongoDB) que vienen con sus propios mecanismos para el almacenamiento de datos a través de un conjunto de nodos. Esto les permite almacenar y recuperar datos con todas las características de la base de datos NoSQL y luego utilizar Hadoop para programar trabajos de análisis de datos en el mismo clúster.

Los usuarios exploran activamente la mejor forma de integrar las dos tecnologías. Por ejemplo Hadoop se puede utilizar para el análisis fuera de línea, mientras que MongoDB puede reunir estadísticas de la web en tiempo real.


Herramientas para consulta SQL

Impala
Es una base de datos SQL que funciona sobre Hadoop. Es especialmente usado en Business Intelligence por su baja latencia y la posibilidad de realizar consultas concurrentes.
HAWQ
Apache HAWQ is Apache Hadoop Native SQL. Advanced Analytics MPP Database for Enterprises.
Drill
Motor de Consultas SQL para almacenamiento sin esquema en Hadoop, No SQL y Cloud. Soporta gran variedad de bases de datos NoSQL y sistemas de archivos (incluyendo HBase, MongoDB, MapR-DB, HDFS, MapR-FS, Amazon S3, Azure Blob Storage, almacenamiento en Google, Swift, NAS y archivos locales). Con una consulta pueden unirse datos de diversos almacenes (por ejemplo query Mongo con query sobre HDFS). Drill integra un optimizador que reestructura el plan de consultas para aprovechar las capacidades de procesamiento interno del almacén de datos.

Herramientas GIS

Las herramientas GIS (Sistemas de Información Geográfica) para el proyecto Hadoop han adaptado algunas de las mejores herramientas basadas en Java para la comprensión de la información geográfica con el fin de que se ejecute en Hadoop. Sus bases de datos pueden manejar consultas geográficas mediante coordenadas en lugar de cadenas. El código puede desplegar las herramientas GIS para calcular en tres dimensiones.

Referencias