Foro Formación Hadoop

Flume - Cuestiones

 
Imagen de Alexandre Pereiras
Flume - Cuestiones
de Alexandre Pereiras - miércoles, 21 de febrero de 2018, 18:06
 

Hola de nuevo,

Tengo un par de preguntas sobre Flume y la configuración de los agentes:

1) ¿Cómo se especifican múltiples canales, es mediante el nombre de estos separados por comas en el fichero de configuratión? Por ejemplo. xxxx.channels = ch1, ch2, ch3?

2) ¿Donde reside/está instalado el agente? No me queda claro dónde está instalado, ya que en ningún momento se especifica máquina/cluster y solamente directorios (al menos en el ejemplo). En base a esto, y al ejemplo proporcionado en los materiales, entiendo que los agentes Flume están en los servidores del cluster (que no en HDFS), por lo que, en el caso de querer procesar logs, estos tienen que copiarse al cluster y luego el agente los procesa? Me da que esto no es así, porque el "tiempo real" se pierde (requiere de la copia de logs en primer lugar). 

Si pudiéseis clarificar las preguntas anteriores, sobre todo la segunda, me ayudaría muchísimo en entender la arquitectura de agentes. 

Muchas gracias

Alex

Imagen de Alexandre Pereiras
Re: Flume - Cuestiones
de Alexandre Pereiras - miércoles, 21 de febrero de 2018, 18:18
 

Hola,

Respecto a 2): veo que en el tercer vídeo (Flume+Spark) el fichero de configuración del agente tiene un hostname como propiedad del sink (HDFS). Por tanto, entonces entiendo que el agente Flume tiene que ser instalado en aquellos servidores donde se generan los datos (logs, etc.). ¿Estoy en lo correcto? Y la propiedad hostname debería de ser el nombre del cluster Hadoop, correcto?

Gracias

Alex

Imagen de Fernando Agudo
Re: Flume - Cuestiones
de Fernando Agudo - jueves, 22 de febrero de 2018, 10:51
 

Buenos días Alexander,

Respecto a la pregunta 1, si así es, los "channels" se separarían mediante comas.

Respecto a la pregunta 2:

Un agente flume es un proceso java que se puede instalar en cualquier máquina (corre sobre local, nada de HDFS ni si quiera con nada de Big Data). 

Normalmente en cualquier arquitectura vas a tener que instalar/ejecutar más de un agente Flume, es decir, imagínate que quieres ingestar en "tiempo real" los logs generados por un tomcat que está en una máquina externa al cluster, deberías montar la siguiente arquitectura:

Un Agente Flume en la máquina del tomcat que esté monitorizando el fichero de logs y que envíe a un puerto (Sink AVRO). 

Otro Agente Flume en el cluster Hadoop que esté escuchando ese puerto y recoja los logs y los vaya almacenando donde necesites (HDFS, NoSQL, procesar con Spark... lo que quieras/necesites). 

En el caso que en el origen no se pueda instalar un agente (suponte por ejemplo una aplicación móvil/android) es la aplicación la que deberá enviar la información al puerto que está escuchando nuestro agente de flume instalado en el cluster.

 

Por concluir, la arquitectura podrá ser todo lo compleja que quieras, es decir, puedes tener tantos agentes flume configurados en tu cadena como necesites, por ejemplo en el primer caso un agente instalado en una máquina únicamente destinada para el que codifique la info antes de enviarlo al agente del cluster.

 

Lo importante es que en cualquiera de los casos, siempre que tengas que enviar la info de un agente a otro por la RED, utilices el sink AVRO, ya que serializa la información por lo que es mucho mas eficiente.

Espero que te haya quedado un poco más claro.

Un saludo,

Imagen de Alexandre Pereiras
Re: Flume - Cuestiones
de Alexandre Pereiras - jueves, 22 de febrero de 2018, 22:04
 

Muchísimas gracias, Fernando. Me queda claro ahora.