Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Apache Flume
GRUPO 7
Integrantes:
● Nestor Calcina Huaranga
● Weimar Ccapatinta Huamaní
● Angel Flores Leon
Flume es lo suficientemente flexible como para escribir en otros sistemas, como HBase o
Solr.
2. Principales características
● Perfectamente integrado en el ecosistema Hadoop, ejemplo de ello es la
● Los canales basados en ficheros no replican datos, por lo que están sujetos a
3. Arquitectura
A continuación resumimos las conceptos de Flume.
4. Flujo de trabajo
Para usar Flume, necesitamos ejecutar un agente Flume, que es un demonio Java que
ejecuta fuentes y receptores (sink) conectados por canales. Una fuente en Flume genera
eventos y los entrega al canal, que almacena los eventos hasta que se envían al receptor.
Se puede pensar en la combinación fuente-canal-receptor como un componente básico de
Flume.
Una instalación Flume está formada por una colección de agentes conectados que se
ejecutan en una topología distribuida. Los agentes en los límites del sistema (ubicados en
servidores web, por ejemplo) recopilan datos y los envían a los agentes que son
responsables de agregar y luego almacenar los datos en su destino final. Los agentes están
configurados para ejecutar una colección de fuentes y receptores particulares, por lo que
utilizar Flume es principalmente un ejercicio de configuración para encajar las piezas.
Además de poder transmitir datos desde múltiples fuentes a múltiples destinos, Flume
puede integrarse con una amplia gama de herramientas y productos. Puede extraer datos
de casi cualquier tipo de fuente, incluidos archivos de registro del servidor web, archivos
CSV generados a partir de una base de datos RDBMS y eventos. Del mismo modo, Flume
puede enviar datos a destinos como HDFS, HBase y Hive.
Flume incluso puede integrarse con otras herramientas de transmisión de datos como Kafka
y Spark.
6. Ventajas y Desventajas
Ventajas:
Desventajas:
Caso de Estudio
Flume está diseñado para la ingestión de grandes volúmenes de datos basados en eventos
en Hadoop. El ejemplo clásico es usar Flume para recopilar logs de un banco de servidores
web, y luego mover los eventos del log de esos archivos a nuevos archivos agregados a
una Data Lake en HDFS para su procesamiento. El destino habitual (o sink en el lenguaje
de Flume) es HDFS. Sin embargo, Flume es lo suficientemente flexible como para escribir
en otros sistemas, como HBase o Solr.
Para usar Flume, necesitamos ejecutar un agente Flume, que es un demonio Java que
ejecuta fuentes y receptores (sink) conectados por canales. Una fuente en Flume genera
eventos y los entrega al canal, que almacena los eventos hasta que se envían al receptor.
Se puede pensar en la combinación fuente-canal-receptor como un componente básico de
Flume.
Una instalación Flume está formada por una colección de agentes conectados que se
ejecutan en una topología distribuida. Los agentes en los límites del sistema (ubicados en
servidores web, por ejemplo) recopilan datos y los envían a los agentes que son
responsables de agregar y luego almacenar los datos en su destino final. Los agentes están
configurados para ejecutar una colección de fuentes y receptores particulares, por lo que
utilizar Flume es principalmente un ejercicio de configuración para encajar las piezas.
Caso de uso sencillo a modo de ejemplo
Para mostrar cómo funciona Flume, comencemos con una configuración que:
Añadiremos los archivos a mano, pero es fácil imaginar un proceso como el de un servidor
web que crea nuevos archivos que queremos ingestar continuamente con Flume. Además,
en un sistema real, en lugar de registrar el contenido del archivo en el log, escribiríamos el
contenido en HDFS para su posterior procesamiento.
En este ejemplo, el agente Flume ejecuta una única fuente-canal-receptor, configurado con
un archivo de propiedades de Java. La configuración controla los tipos de fuentes,
receptores y canales que se utilizan, así como también la forma en que se conectan entre
sí.
Los nombres de propiedades forman una jerarquía con el nombre del agente en el nivel
superior. En este ejemplo, tenemos un único agente, llamado agent1. Los nombres de los
diferentes componentes de un agente se definen en el siguiente nivel, por lo que
agent1.sources lista los nombres de las fuentes que se deben ejecutar en agent1 (aquí es
una fuente única, source1). Del mismo modo, agent1 tiene un receptor (sink1) y un canal
(channel1).
El receptor es de tipo logger para registrar eventos en la consola. También debe estar
conectado al canal (con la propiedad agent1.sinks.sink1.channel). El canal es un canal de
tipo file, lo que significa que los eventos del canal se persisten a disco para una mayor
durabilidad. El sistema se muestra en la figura
Antes de ejecutar el ejemplo, necesitamos crear el directorio de spooling en el sistema de
archivos local:
% mkdir /tmp/spooldir
% flume-ng agent \
--conf-file spool-to-logger.properties \
--name agent1 \
--conf $FLUME_HOME/conf \
-Dflume.root.logger=INFO,console
El nombre del agente también se debe pasar con --name (ya que un archivo de propiedades
de Flume puede definir varios agentes, tenemos que decir cuál ejecutar). El indicador --conf
le dice a Flume dónde encontrar su configuración general, como la configuración del
entorno.
En una nueva terminal, crea un archivo en el directorio de spooling. La fuente del directorio
de spooling espera que los archivos sean inmutables. Para evitar que los archivos
parcialmente escritos sean leídos por la fuente, escribimos el contenido completo en un
archivo oculto. Luego, hacemos un cambio de nombre atómico para que la fuente pueda
leerlo:
% mv /tmp/spooldir/.file1.txt /tmp/spooldir/file1.txt
De vuelta al terminal del agente, vemos que Flume ha detectado y procesado el archivo:
Clickstreams
Clickstream es la grabación de partes de la pantalla en las que el usuario hace clic mientras
navega por la web. La acción del usuario se captura en el navegador del lado del cliente.
Por lo tanto, los datos del flujo de clics son La URL generada por cada usuario que hace clic
en los elementos del sitio.
Por ejemplo, en el portal de compras en línea, un flujo de clics de datos puede verse así:
Cada vez que el usuario abre una nueva sesión, un nuevo contexto de usuario es
capturado. La ID de contexto se agregaría al clic de cada usuario datos.
Uso potencial de Los datos de clickstream en portales de comercio electrónico pueden ser:
• ¿Cuál es el camino más eficiente para que la navegación de un visitante al sitio termine en
la compra?
¿Cuáles son los productos que un visitante del sitio tiende a comprar juntos?
y que se prevé que compre en el futuro?
• ¿Dónde deberían dedicar su tiempo los desarrolladores del sitio web?
para mejorar la experiencia del usuario
La solución más simple al problema es recopilar los archivos de registro del navegador web
y luego empujarlos en HDFS.
Desventaja: no hay procesamiento en tiempo real.
Como los eventos de flujo de clics están sin procesar no están estructurados, la inserción
directa también requerirá un análisis más detallado, y limpieza y reinserción en la base de
datos.
Otro enfoque sería, un evento es generado en el lado del cliente y entregado al servicio de
back-end para manejar el procesamiento de eventos e inicio de sesión mientras está en
tránsito sin necesidad de almacenarlo.
• Ventajas: Procesamiento en tiempo real. Permite personalizar eventos procesados desde
JavaScript para ser procesados durante el vuelo antes de llevados a HDFS. Esto hace que
el procesamiento respuesta en tiempo real o casi en tiempo real.
Mover datos en tiempo real a través de Internet puede hacer que la red se cargue en todo
momento. Si el rango de respuesta por milisegundo no se requiere, podemos elegir ir por el
modo de procesamiento por lote como Apache Flume. También, moviendo una pequeña
cantidad de datos en tiempo real puede ser particularmente un problema para
almacenamiento HDFS ya que Hadoop está diseñado para archivos grandes.
Por lo tanto, para fuentes con muchos archivos pequeños, el agentes Flume podría
recopilarlos y juntar los datos en modo por lotes como un gran archivo único.
BIBLIOGRAFIA
http://spaceanalytics.blogspot.com/2018/01/ingesta-flume.html
https://www.researchgate.net/publication/332112448_Big_Data_Real-
Time_Clickstream_Data_Ingestion_Paradigm_for_E-Commerce_Analytics