¿Qué es Apache Flume?

Apache Flume es un producto que forma parte del ecosistema Hadoop, y conforma una solución Java distribuida y de alta disponibilidad para recolectar, agregar y mover grandes cantidades de datos desde diferentes fuentes a un data store centralizado.

Surge para subir datos de aplicaciones al HDFS de Hadoop.

Es un proyecto de Apache aún en incubación (una vez salió la versión 0.9.4 se decidió que debía rediseñarse).

Su Arquitectura se basa en flujos de streaming de datos, ofrece mecanismos para asegurar la entrega y mecanismos de failover y recuperación.

Ofrece una gestión centralizada.

Los conceptos que maneja Flume son:

· Evento: Un payload de bytes con encabezados opcionales que representan la unidad de datos que Flume puede transportar desde su punto de origen hasta su destino final.

· Flujo Movimiento de eventos desde el punto de origen hasta su destino final.

· Cliente: Implementación que opera en el punto de origen de los eventos y los entrega a un agente Flume. Por ejemplo, Log4J appender de Flume es un cliente.

· Agente: Un proceso independiente que aloja los componentes Fume como las Fuentes (Source), canales y sumideros (Sink), tiene la capacidad de recibir, almacenar y reenviar eventos a su próximo destino.

· Fuente (Source): Implementación que puede consumir eventos entregados a él a través de un mecanismo (por ejemplo, una fuente de Avro se puede utilizar para recibir los eventos Avro de clientes u otros agentes en el flujo). Cuando una fuente recibe un evento, se lo entrega a uno o más canales.

· Canal (Channel): es un almacenamiento temporal para eventos, donde los eventos se entregan al canal a través de fuentes que operan con del agente.

Un evento puesto en un canal permanece en ese canal hasta que un Sumidero (Sink) lo elimina.

Un ejemplo de canal es el canal de JDBC que utiliza una base de datos embebida para persistir los eventos que se eliminan por un sumidero. Los canales desempeñan un papel importante en garantizar la durabilidad de los flujos.

· Sumidero (Sink): Implementación que puede eliminar eventos de un canal y transmitirlos al siguiente agente en el flujo, o hasta el destino final del evento.

Los sumideros que transmiten el evento hacia su destino final son también conocidos como sumideros de terminales.

·

Los elementos se relacionan así:

Si estáis interesados en lo que permite os recomiendo su Getting Started.

Deja un comentario